{"version":3,"file":"static/js/23450c65c837a5514283.bundle.js","mappings":"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","sources":["webpack://morland-ecommerce/./lib/store-selector/module-registration.js?8817","webpack://morland-ecommerce/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://morland-ecommerce/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://morland-ecommerce/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://morland-ecommerce/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://morland-ecommerce/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://morland-ecommerce/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://morland-ecommerce/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://morland-ecommerce/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://morland-ecommerce/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://morland-ecommerce/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://morland-ecommerce/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://morland-ecommerce/./src/modules/store-selector/store-selector.tsx?e416","webpack://morland-ecommerce/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://morland-ecommerce/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://morland-ecommerce/external var \"React\"?0d3b","webpack://morland-ecommerce/external var \"ReactDOM\"?853b"],"sourcesContent":["const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['store-selector'] = {\n c: () => require('@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector'),\n $type: 'containerModule',\n da: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'store-selector',\n p: 'store-selector',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['@msdyn365-commerce-modules|store-selector|modules|store-selector|store-selector'] = {\n c: () => require('@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.view.js'),\n cn: '@msdyn365-commerce-modules-store-selector-store-selector'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|store-selector'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/store-selector.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-store-selector'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n if (window) {\n const currentWindowAPI = window.mapAPIReady;\n window.mapAPIReady = () => {\n if (currentWindowAPI) {\n currentWindowAPI();\n }\n this.isMapApiLoaded = true;\n };\n }\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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 { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \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.\n * All rights reserved. See LICENSE 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 {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\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) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\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 =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n 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 (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\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 pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\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.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} 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: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\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 )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\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 * 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 = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\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 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 = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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 { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \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 !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\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.\n * All rights reserved. See LICENSE 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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} 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 = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): 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 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: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \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 * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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 = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\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:\n // 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:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): 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\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.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} 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 pickupDeliveryOptionErrorMessage?: 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 = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): 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 {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\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}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return 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 = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): 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 * 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 * @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 = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): 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 = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): 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 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 const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n {isError ? (\n \n \n ) : ('')}\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } 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,\n IStoreSelectorResources,\n mode as modeEnum,\n 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(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\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 if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\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: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\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\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : 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 =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && 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 =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\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\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\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(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\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 ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\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();\n 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 = (\n 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 );\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,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\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(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\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,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\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: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\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(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\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: { cookies }\n }\n },\n config: { mode },\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(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\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: { actionContext },\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: { style },\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: { style },\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).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 * 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: { mode, lookupRadius, style, searchRadiusUnit },\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 (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\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 (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\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(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): 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 hideStockStatus: !hasEnabledOutOfStockCheck,\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,\n 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, selectedLocation?: OrgUnitLocation): boolean =>\n (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 = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): 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 (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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, IStoreSelectorViewProps } from './index';\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 { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = 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\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\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\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !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 * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\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 = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
\n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\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 stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

\n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n
\n {!storeLocatorView && !hideStockStatus && (\n
\n

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

}\n
\n )}\n {isPreferredStoreEnabled &&\n (isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n ))}\n
\n
\n );\n};\n\n/**\n * Render Store Location.\n * @param location - The location props.\n * @param index - The location index.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocation = (\n location: IStoreSelectorLocationLineItemProps,\n index: number,\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n): JSX.Element | undefined => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n storeLocatorView,\n isCurrentLocation,\n isInStock,\n productPickUpOptionList,\n resources,\n storePickUpOptionList,\n telemetryContent\n } = location;\n\n const orgUnitLocation = location.location;\n const selectedStoreLocationId = location.selectedStoreLocationId;\n const defaultAriaSetsize = 0;\n const canSelectLocation = hideStockStatus || isInStock;\n const storeName = location.location.OrgUnitName;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const selectStoreText = props.resources.selectStoreText;\n const pickUpMethodLabel = props.resources.pickUpMethodLabel;\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n location.handlers.onSelected(location.location);\n };\n\n /**\n * Render Store Locations.\n * @param unitLocation - The org unit location.\n * @returns Handler for onClick.\n */\n const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\n location.onClick(unitLocation?.OrgUnitNumber);\n };\n\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n \n );\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\n\n return (\n \n \n {renderStoreLocationLineItem(location, props)}\n \n {!storeLocatorView &&\n (isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : (\n pickUpMethodSelection\n ))}\n \n );\n};\n\n/**\n * Render Store Locations.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocations = (\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n) => {\n return (\n \n {props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })}\n \n );\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 */\nconst 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 * Render the selected store.\n * @param selectedLocationProps -- Selected store view props.\n * @param storeSelectorViewProps -- Store selector view props.\n * @returns -- HTML.\n */\nexport const renderSelectedStore = (\n selectedLocationProps: ISelectedStoreViewProps,\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps\n): JSX.Element => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton,\n selectedStore\n } = selectedLocationProps;\n\n const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\n const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\n ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\n : [];\n const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\n const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\n const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\n '{StoreName}',\n storeNameValue ?? ''\n );\n const telemetryContent = getTelemetryObject(\n storeSelectorViewProps.context.request.telemetryPageName!,\n storeSelectorViewProps.friendlyName,\n storeSelectorViewProps.telemetry\n );\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\n const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\n const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\n const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\n const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\n const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\n const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\n };\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n selectedLocation && (\n \n )\n );\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n
\n

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

\n {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\n
\n {productAvailability && (\n
\n

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","viewDictionary","cn","BaseStoreSelectorStateManager","constructor","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","this","isMapModuleLoaded","value","_readFromToCookie","storeInfo","JSON","parse","undefined","preferredStore","_unused","isDialogOpen","_context","context","async","input","storeId","selectedStoreLocationId","storeName","writeToCookie","arguments","length","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","key","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","action","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","actionContext","requestContext","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","app","config","requestUrl","Promise","resolve","script","document","createElement","setAttribute","data","remove","resourceSets","resources","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","url","lang","market","reject","_document2","_document3","type","defer","src","addEventListener","error","createStoreSelectorStateInput","result","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","StorePickUpOptionList","React","props","super","_rendeDeliveryOptions","isExpandOptionsState","state","isFilterExpanded","setState","_onSelect","event","preventDefault","deliveryCode","currentTarget","getAttribute","selectedPickupMode","onChange","_onKeyDown","_storePickupListOptionMenu","render","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","delivery","Code","Description","className","onClick","role","ref","map","tabIndex","onKeyDown","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","location","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","ArrayExtensions","hasElements","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","pickupDeliveryOptionErrorMessage","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","componentDidMount","locations","_stores","_sortStores","reaction","classnames","show","store","index","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","hideStockStatus","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","toString","preferredStoreLocationId","isPreferredStoreEnabled","telemetryContent","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","filter","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","target","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","Object","assign","onToggleListMapViewState","toggleMapViewAttributes","bind","payLoad","getPayloadObject","TelemetryConstant","SearchStore","storeSearchAttributes","getTelemetryAttributes","contentAction","etext","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","color","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","onChangeHandler","_props$selectedStore3","removePreferredStoreHandler","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","deliveryOptionList","pickupInStoreButtonText","pickupInStoreAriaLabel","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","OrgUnitName","distanceAsString","buildDistanceString","Distance","resourceLabel","stockLabel","stockText","canSelectLocation","PickupInStore","attributes","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","storeDetailsMain","tag","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","storeSelectorLocationLineItemComponentActions","deliveryMode","distance","productdeliveryOptions","deliveryOption","pickup","_delivery","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","isError","setError","renderStoreHours","RegularStoreHours","displayTime","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","pickUpButtonClickHandler","StoreSelector","renderSelectedStore","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","telemetry","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","cookies","mode","setPreferredStoreLocation","isConsentGiven","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","isSearchInProgress","isSeeAllStoreValue","geoLocate","_updateLocations","shouldShowAllStores","_navigator","style","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","getTelemetryObject","request","telemetryPageName","friendlyName","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","locale","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isInlineView","isLocatorView","canShowLocationView","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","viewProps","ModuleProps","Modal","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","text","onEdit","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","Node","renderDeliveryOptions","Module","renderBody","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","description","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","Number","parseInt","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","Browser","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","viewport","_data$storeSelectorSt","module","exports","ReactDOM"],"sourceRoot":""}