{"version":3,"sources":["webpack:///src/modules/store-selector/store-selector.view.tsx?b873","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?0029","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?d307","webpack:///src/modules/account-invoice-tile/account-invoice-tile.tsx?9a78","webpack:///src/modules/store-selector/components/pickup-option-list.tsx?9a9c","webpack:///src/modules/store-selector/components/store-pickup-option-list.tsx?27e0","webpack:///src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?89f3","webpack:///src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?5a50","webpack:///src/modules/store-selector/components/store-selector-location-lines.tsx?0668","webpack:///src/modules/store-selector/components/store-selector-search-form.tsx?1a99","webpack:///src/modules/store-selector/components/store-selector-small-components.tsx?c26d","webpack:///src/modules/store-selector/components/selected-store/selected-store.tsx?8d1a","webpack:///src/modules/store-selector/store-selector.tsx?ce13","webpack:///src/modules/aad-generic/aad-generic.view.tsx?ecad","webpack:///src/modules/aad-generic/aad-generic.tsx?d537","webpack:///src/modules/organization-users-tile/organization-users-tile.view.tsx?d92a","webpack:///src/modules/map/map.tsx?e2df","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?8d2f","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?2a03","webpack:///src/modules/organization-users-tile/organization-users-tile.tsx?9c60","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2"],"names":["renderSelectedStore","props","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","isCurrentLocation","currentLocation","isPreferredStore","preferredStoreButton","removePreferredStoreButton","React","Node","Object","canSelectLocation","deliveryOptions","pickUpDeliveryOptionButton","pickupModes","ArrayExtensions","hasElements","renderDeliveryOptions","StoreSelectorView","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","terms","Module","BodyContainerProps","locationsMessage","search","state","spinner","locationsList","noLocationsMessage","maps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","isMobileView","storeDetailsModal","selectedLocation","isSearchInProgress","renderBody","AccountInvoiceTileDescription","description","className","_mapEditableLinks","linkdata","telemetryContent","length","editableLinks","payLoad","getPayloadObject","forEach","link","index","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","push","AccountInvoiceTileLinks","links","requestContext","onTextChange","Msdyn365","editProps","AccountInvoiceTile","constructor","super","handleHeadingChange","event","this","config","heading","text","target","value","handleLinkTextChange","linkIndex","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","render","data","resources","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","result","OpenInvoiceBalance","toFixed","format","viewProps","moduleProps","classnames","tag","onEdit","LinksComponent","renderView","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","current","contains","_pickupListOptionMenu","setState","expandSiteOptions","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","onChange","_renderDeliveryOptions","bind","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","onClick","ref","map","delivery","key","Code","tabIndex","Description","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","undefined","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","minutes","getShortTimeString","day","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","openFrom","openTo","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","location","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isInStock","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","productPickUpOptionList","shouldShowIndex","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","TelemetryConstant","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","contactInfoHeader","storeHoursHeader","RegularStoreHours","displayTime","JSON","stringify","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","renderStoreHours","availabilityInfoHeader","filteredPickupMode","renderPickupModes","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","OrgUnitPickUpDeliveryModes","selected","StoreHours","ItemAvailabilities","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","id","isMapDisabled","showAllStores","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","onKeyUp","color","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","selectedStore","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","shouldHideStockStatus","parentClassName","Button","StoreSelector","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_searchTermChanged","formattedSuggestion","_performSearch","storeId","cookies","mode","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","error","PERMISSION_DENIED","timeout","_closeDialog","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","hasEnableOutOfStockCheck","autoSuggestionEnabled","isAutoSuggestionEnabled","setTimeout","loadMapApi","BingMapsEnabled","lang","locale","market","when","isSameContext","shouldComponentUpdate","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","Modal","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","ModalHeader","ModalFooter","ModalBody","outOfStockThreshold","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","selectedStoreLocation","lineResources","locationOpen","aadGeneric","aadConainer","aadAPIConainer","AadGeneric","moduleClassName","$i2e","$element","insertServiceContent","getElementContent","initialize","nextProps","OrganizationUsersTileView","OrganizationUsersTile","Map","mapRef","_initMap","pushpinAccessible","Events","addHandler","_updateMap","pushpinOptions","mapLocation","entities","clear","pushpins","unitStoreInfo","entries","storeLocation","isSelectedLocation","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","showIndex","size","selectionColor","icon","_getSvgIcon","setMapModuleLoaded","shouldDisplayMap","displayMap","Header","headerProps","MapProps","MapHeader","MapView","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess"],"mappings":"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","file":"static/js/14.dae18fe32868a0f6b8ee.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const {\n canSelectLocation,\n deliveryOptions,\n pickUpDeliveryOptionButton,\n pickupModes\n } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false }\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>\n {locationsList ? locationsList : noLocationsMessage}\n }\n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>\n {locationsList ? locationsList : noLocationsMessage}\n }\n \n \n {maps}\n \n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms } = props;\n\n return (\n \n \n {HeaderProps}\n \n {renderBody(props)}\n \n {terms}\n \n \n );\n};\n\nexport default StoreSelectorView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

\n {description}\n

\n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length > 0 ? : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && ,\n description: description && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountInvoiceTile;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const {\n pickupListOptionMenuText,\n pickupmodeList\n } = this.props;\n\n return (\n
\n \n {this.state.expandSiteOptions ?
    \n { pickupmodeList?.map((delivery: DeliveryOption) => {\n return (
  • \n \n \n {delivery.Description}\n \n \n
  • );\n })}\n
: null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (!(\n (this._pickupListOptionButton.current !== null && (event.target === this._pickupListOptionButton.current ||\n // eslint-disable-next-line xss/no-mixed-html -- Need to check if any option inside the div is clicked or not.\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n // eslint-disable-next-line xss/no-mixed-html -- Need to check if any option inside the div is clicked or not.\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement))))) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const {\n productPickupListOptionMenuText,\n productPickupModeList,\n defaultOptionText\n } = this.props;\n const selectedPickupModeDesc = defaultOptionText ? defaultOptionText : productPickupModeList?.find(\n (delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n\n return (\n
\n \n {this.state.isFilterExpanded ?
    \n { productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n \n \n {delivery.Description}\n \n \n );\n })}\n
: null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes =\n Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default: // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default: // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (startDay: DayType, endDay: DayType, hoursInfo: string, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n DeliveryOption,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (storeHours: StoreHours | undefined, location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n \n {displayTime.startDayShort}\n \n –\n \n {displayTime.endDayShort}\n \n
\n ) : (\n
\n \n {displayTime.startDayShort}\n \n
\n )}\n
\n {displayTime.timeRange}\n
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}\n -\n {storeOpenTo}\n
\n );\n\n};\n\n/**\n * Function to retrun distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (distance: number | undefined, preferredDistanceUnit: string, isLocationDisabled?: boolean): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[], pickupInStoreButtonText: string, pickupInStoreAriaLabel: string): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = (storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code));\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = (hideStockStatus) ? undefined : (stockLabel ? stockLabel : resourceLabel);\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && \n {index}\n }\n \n {storeName}\n \n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

\n {resources.contactInfoHeader}\n

\n {storeAddress && (\n
\n \n \n {storeAddress}\n \n
\n )}\n {phoneNumber && (\n
\n \n \n {phoneNumber}\n \n
\n )}\n
\n
\n

\n {resources.storeHoursHeader}\n

\n {renderStoreHours(storeHours, location, resources)}\n
\n {\n !storeLocatorView &&\n
\n

\n {resources.availabilityInfoHeader}\n

\n {stockText &&

\n {stockText}\n

}\n {isCurrentLocation ? (\n

\n {resources.currentLocation}\n

\n ) : (canSelectLocation ? deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel) : (\n false\n ))}\n
\n }\n {\n isPreferredStoreEnabled ? (isPreferredStore ? \n {resources.preferredStoreText}\n : \n {resources.setAsPreferredStoreText}\n ) : null\n }\n
\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (props: IStoreSelectorLocationLineItemProps) => JSX.Element;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: ((locationId: string | undefined) => void);\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: ((locationId: string | undefined) => void);\n onRemovePreferredStore: (() => void);\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {\n this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })\n }\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n \n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) => this.props.isPreferredStoreEnabled && this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [\n ...stores.filter(isPreferredStore),\n ...stores.filter(store => !isPreferredStore(store))\n ];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean => (this.props.alreadySelectedLocation &&\n location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId === availabilityWithHours.ProductInventoryInformation[i].InventLocationId) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resoureces.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, KeyCodes, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: { searchButtonAriaLabel, searchPlaceholderText, seeAllStoresText, viewListText,\n viewMapText, pickupFilterByHeading, pickupFilterMenuHeading },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
}\n {this.renderPickupModesList(this.props, toggleButtonText, productPickUpDeliveryOptions, pickupFilterMenuHeading,\n locatorView, pickupFilterByHeading, hasEnabledPickupFilterToShowStore, displayList)}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (props: IStoreSelectorSearchFormProps, toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined, locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined, hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean): JSX.Element | null => {\n\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && \n {toggleButtonText}\n }\n \n
\n {pickupFilterByHeading}\n
\n
);\n }\n if (locatorView) {\n return (\n {toggleButtonText}\n );\n }\n return null;\n\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

\n {resources.emptyLocationsText}\n

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () => (\n
\n);\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({ locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit }) => {\n if (locations) {\n const storeCountMessage = preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n { isSeeAllStore ? resources.storeAllCountMessage\n .replace('{count}', locations.length.toString()) : storeCountMessage\n .replace('{count}', locations.length.toString())\n .replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, INodeProps, IPayLoad,\n ITelemetryContent, NodeTag, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[], pickupInStoreButtonText: string, pickupInStoreAriaLabel: string): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = (shouldHideStockStatus) ? undefined : (stockLabel ? stockLabel : resourceLabel);\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: \n {storeName}\n ,\n storeDetailsCloseButton: ,\n storeDistance: distanceAsString ? \n {/* eslint-disable-next-line react-native/no-raw-text -- Need whitespace */}\n {' '}\n {distanceAsString}\n : '',\n storeDetailsAvailabilityContainer: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__container`\n },\n productAvailability: !shouldHideStockStatus &&

\n {resources.availabilityInfoHeader}\n

,\n stockStatus: stockText &&

\n {stockText}\n

,\n currentLocation:

\n {resources.currentLocation}\n

,\n pickUpDeliveryOptionButton: \n {pickupInStoreButtonText}\n ,\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? \n {resources.preferredStoreText}\n : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? \n {resources.setAsPreferredStoreText}\n : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n DeliveryOption,\n ItemAvailability,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps, IStoreSelectorResources, mode as modeEnum, searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: ((locationId: string | undefined) => void);\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled: isAutoSuggestionEnabled\n }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || (context.id === this.props.id)) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: {\n config: appConfig\n },\n actionContext: {\n requestContext: {\n channel,\n cookies\n }\n }\n },\n slots: {\n maps: mapSlot\n },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !((channel?.BingMapsApiKey && channel.BingMapsEnabled));\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager ? storeSelectorStateManager.isDialogOpen && (context?.id === this.props.id) : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView = (context && (context.showMapViewLink === undefined || context.showMapViewLink)) &&\n storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!(channel?.BingMapsApiKey)) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : (isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText);\n const preferredDistanceUnit = searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n const locationListProps = this._getStoreLocationListProps(isEnableOutofStock, isLocatorView, preferredLocationId, this.isPreferredStoreEnabled,\n selectedStoreLocationId, storeLocationList ?? null, preferredDistanceUnit, alreadySelectedLocation, productPickUpOptionList);\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? 'div' as NodeTag : Modal,\n moduleProps: this.props,\n className: classname(`ms-store-${isInlineView ? 'locate' : 'select'}`, className, dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? 'div' as NodeTag : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? 'div' as NodeTag : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? 'div' as NodeTag : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'}`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(shouldHideInventory, preferredDistanceUnit, preferredStore, this.isPreferredStoreEnabled,\n isEnableOutofStock, productPickUpOptionList, shouldDisplayList),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : undefined,\n noLocationsMessage: ,\n terms: ,\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: \n {heading ? heading : (isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText)}\n ,\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation(); return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId);\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected, onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter((location) => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some((deliveryOption) => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) => isPreferredStoreEnabled && preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [\n ...stores.filter(isPreferredStore),\n ...stores.filter(store => !isPreferredStore(store))\n ];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean, preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(store, index,\n hasEnabledOutOfStockCheck, isStoreLocatorView, preferredStoreLocationId, isPreferredStoreEnabled,\n selectedStoreLocationId, preferredDistanceUnit, alreadySelectedLocation, productPickUpOptionList);\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: {\n autoSuggestOptions\n },\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(`#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`, this._onSuggestionSelected);\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && (context.id === this.props.id)) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: {\n cookies\n }\n }\n },\n config: {\n mode\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(storeId, preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude, preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude);\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: {\n cookies\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: {\n actionContext\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: {\n style\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: {\n style\n },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input)\n .catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n\n });\n\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: {\n mode,\n lookupRadius,\n style,\n searchRadiusUnit\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = (radius || radius === 0) ? radius : (lookupRadius || 50);\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !(preferredStore?.Latitude) ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !(preferredStore?.Longitude) ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (calRadius: number, distanceUnitValue: number,\n latitude?: number, longitude?: number): Promise => {\n\n const {\n context: {\n actionContext\n }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (calRadius: number, distanceUnitValue: number,\n latitude?: number, longitude?: number): Promise => {\n\n const {\n telemetry,\n context: {\n actionContext\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch((error) => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(store: IFullOrgUnitAvailability,\n index: number, hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean, preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation, productPickUpOptionList?: DeliveryOption[]): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: (this.storeCounter).toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected, onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined,\n selectedLocation?: OrgUnitLocation): boolean => (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (hasEnableOutOfStockCheck: boolean, itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId === isInStock.ProductInventoryInformation[index].InventLocationId) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n}\n\nexport default StoreSelector;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const {\n aadGeneric,\n aadConainer,\n aadAPIConainer,\n heading\n } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\n \n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps {\n aadGeneric: IModuleProps;\n aadConainer: INodeProps;\n aadAPIConainer: React.ReactNode;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component>}\n */\nclass AadGeneric extends React.Component> {\n private readonly moduleClassName: string = 'ms-aad-generic';\n\n public componentDidMount(): void {\n // @ts-expect-error\n const { $i2e, $element } = window || {};\n\n if ($i2e && $element) {\n $i2e.insertServiceContent($element.getElementContent());\n $element.initialize();\n }\n }\n\n public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n\n if (nextProps.config.heading !== this.props.config.heading) {\n return true;\n }\n return false;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n\n const viewProps = {\n ...this.props,\n aadGeneric: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n aadConainer: {\n className: `${this.moduleClassName}__container`\n },\n aadAPIConainer:
,\n heading: heading && \n };\n\n return this.props.renderView(viewProps);\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.heading) {\n this.props.config.heading.text = event.target.value;\n }\n };\n}\n\nexport default AadGeneric;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n }\n\n public render(): JSX.Element | null {\n\n const {\n config: {\n heading,\n className\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => (\n \n {heading}\n \n);\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({\n ModuleProps,\n Header,\n MapProps\n}) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

\n {description}\n

\n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { editableLinks && editableLinks.length > 0 ? : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription = numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && ,\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\n
\n );\n};\n"],"sourceRoot":""}