{"version":3,"file":"static/js/26223047947d48e86833.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/payment-state-share.action.ts?5a06","webpack://Msdyn365.Commerce.Online/./src/themes/sysco-b2b/views/store-selector.view.tsx?b669","webpack://Msdyn365.Commerce.Online/./lib/store-selector/module-registration.js?8817","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Msdyn365.Commerce.Online/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/array-buffer-basic-detection.js?3121","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/array-buffer-view-core.js?0edd","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/array-fill.js?4914","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/to-big-int.js?d70c","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/to-offset.js?d26a","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/to-positive-integer.js?95fa","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.fill.js?ddd8","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.set.js?46cc","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.sort.js?0248","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.typed-array.to-locale-string.js?96ae"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * PaymentStateShare Input Action\r\n */\r\nexport class PaymentStateShareInput implements Msdyn365.IActionInput {\r\n // TODO: Construct the input needed to run the action\r\n constructor() {}\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `payment-state-share`;\r\n public getCacheObjectType = () => 'payment-state-share';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IPaymentStateShareData {\r\n isCODSelected: boolean;\r\n isCreditCardSelected: boolean;\r\n shouldApplyOnAccountPayment: boolean;\r\n isStoreSelected: boolean;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new PaymentStateShareInput();\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function action(input: PaymentStateShareInput, ctx: Msdyn365.IActionContext): Promise<IPaymentStateShareData> {\r\n // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // TODO: Uncomment the below line to get the value from a service\r\n // const response = await Msdyn365.sendRequest<IPaymentStateShareData[]>('/get/example/id/1', 'get');\r\n return { isCODSelected: true, isCreditCardSelected: false, shouldApplyOnAccountPayment: true, isStoreSelected: false };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: <Msdyn365.IAction<IPaymentStateShareData>>action,\r\n // TODO: Give your data action a unique id\r\n id: 'PaymentStateShare',\r\n input: createInput\r\n // TODO: Uncomment the below line if this is a meant to be a batched data action\r\n // isBatched: true\r\n});\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\r\nimport {\r\n ContactInformationType,\r\n DeliveryOption,\r\n IDictionary,\r\n OrgUnitContact,\r\n OrgUnitLocation,\r\n StoreHours\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n buildStoreHours,\r\n IHoursDisplayInfo,\r\n ILocationHours,\r\n IStoreSelectorFoundLocationsMessage,\r\n IStoreSelectorLocationLineItemProps,\r\n IStoreSelectorLocationLineItemResources,\r\n IStoreSelectorViewProps,\r\n secondsToTime\r\n} from '@msdyn365-commerce-modules/store-selector';\r\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n isMobile,\r\n Module,\r\n Node,\r\n TelemetryConstant,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\r\nimport { PaymentStateShareInput } from '../../../actions/payment-state-share.action';\r\nimport { IStoreSelectorData } from '../../../dataTypes/store-selector.data';\r\nimport { addPreferredStoreAsync } from '../../../custom-actions/DataActionExtension.g';\r\n\r\n/**\r\n * PickUpMethodComponent View Props Interface.\r\n */\r\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\r\n pickUpStatesProps: IStoreSelectorViewProps;\r\n}\r\n\r\nexport interface IPickUpButtonComponent {\r\n attributes: IDictionary<string> | undefined;\r\n onPickupInStoreClickHandler?(): void;\r\n}\r\n\r\n/**\r\n * Found Locations Message component in Store Selector.\r\n * @param props - The component props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorFoundLocationsMessageComponent: React.FC<IStoreSelectorFoundLocationsMessage> = props => {\r\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\r\n if (locations) {\r\n const storeCountMessage =\r\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n\r\n return (\r\n <RichTextComponent\r\n className='ms-store-select__found-locations__text'\r\n text={\r\n isSeeAllStore\r\n ? resources.storeAllCountMessage.replace(\r\n '{count}',\r\n `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\r\n )\r\n : storeCountMessage\r\n .replace(\r\n '{count}',\r\n `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\r\n )\r\n .replace(\r\n '{radius}',\r\n `<span class='ms-store-select__found-locations__radius'>${searchRadius.toString()}</span>`\r\n )\r\n }\r\n />\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Build distance string.\r\n * @param distance - The distance.\r\n * @param preferredDistanceUnit - The preferred distance unit.\r\n * @param resources - The module resources.\r\n * @param isLocationDisabled - True if location is disabled.\r\n * @returns The distance string.\r\n */\r\nconst buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n resources: IStoreSelectorResources & IStoreSelectorResources,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n const closeDistance: number = 1;\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < closeDistance) {\r\n const closeDistanceString: string = resources.closeDistanceString;\r\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\r\n }\r\n const distanceAsString: string = resources.distanceString;\r\n return distanceAsString\r\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\r\n .replace('{distance}', Math.floor(distance).toString());\r\n};\r\n\r\n/**\r\n * Extract phone number.\r\n * @param contacts - Contacts array.\r\n * @returns Phone number.\r\n */\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\r\n\r\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Render Store Hours Day.\r\n * @param displayTime - Store Hours Information.\r\n * @param storeHoursDayPeriodString - The string for store hours day period.\r\n * @param storeHoursDayString - The string for store hours day period.\r\n * @returns JSX element with store hours day.\r\n */\r\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\r\n return (\r\n <RichTextComponent\r\n className='ms-store-select__store-hours-day'\r\n text={\r\n displayTime.endDayShort\r\n ? storeHoursDayPeriodString\r\n .replace('{startDay}', `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`)\r\n .replace(\r\n '{endDay}',\r\n `<abbr title=${displayTime.endDayFull ? displayTime.endDayFull : ''}>${displayTime.endDayShort}</abbr>`\r\n )\r\n : storeHoursDayString.replace(\r\n '{startDay}',\r\n `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`\r\n )\r\n }\r\n />\r\n );\r\n};\r\n\r\n/**\r\n * Render Store Hours.\r\n * @param storeHours - Store hours.\r\n * @param storeHoursList - Store hours list.\r\n * @param locationOpen - Location open.\r\n * @param resources - The module resources.\r\n * @returns JSX element with store hours.\r\n */\r\nconst renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n storeHoursList: IHoursDisplayInfo[] | undefined,\r\n locationOpen: ILocationHours | undefined,\r\n resources: IStoreSelectorResources & IStoreSelectorResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day hours\r\n if (storeHours?.RegularStoreHours) {\r\n return (\r\n <div className='ms-store-select__store-hours-details-group'>\r\n {storeHoursList?.map(displayTime => (\r\n <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\r\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\r\n <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\r\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\r\n return (\r\n <div className='ms-store-select__store-hours-details'>\r\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Match delivery options.\r\n * @param productDeliveryOptions - The list of product delivery options.\r\n * @param storePickUpOptionList - The list of store pick up options.\r\n * @returns Matched delivery option.\r\n */\r\nconst matchDeliveryOptions = (\r\n productDeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n if (!productDeliveryOptions) {\r\n return [] as DeliveryOption[];\r\n }\r\n return productDeliveryOptions\r\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\r\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\r\n};\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpButtonResources {\r\n pickupInStoreAriaLabel: string;\r\n pickupInStoreButtonText: string;\r\n pickupDeliveryOptionErrorMessage: string;\r\n}\r\n\r\n/**\r\n * PickUpMethod Resources Interface.\r\n */\r\nexport interface IPickUpMethodResources {\r\n selectStoreText: string;\r\n pickUpMethodLabel: string;\r\n pickUpOptionPlaceholder: string;\r\n pickupOptionDropdownError: string;\r\n pickupButtonAriaLabel: string;\r\n}\r\n\r\n/**\r\n * PickUp method dropdown component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\r\n const {\r\n handlers,\r\n location,\r\n selectStoreText,\r\n pickUpMethodLabel,\r\n pickupButtonAriaLabel,\r\n productPickUpOptionList,\r\n storePickUpOptionList\r\n } = props;\r\n\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n // Assume there is only one delivery option in the list\r\n const defaultDeliveryOption = deliveryOptionList[0];\r\n const [selectedStorePickUpOption] = React.useState(defaultDeliveryOption?.Code || '');\r\n const [currentStorePickUpOption] = React.useState(defaultDeliveryOption?.Description || '');\r\n const [isError, setError] = React.useState(false);\r\n\r\n /**\r\n * Method to handle the store pickup option submit.\r\n */\r\n const onClickHandler = React.useCallback(() => {\r\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\r\n handlers.onSelected(location, selectedStorePickUpOption);\r\n } else {\r\n setError(true);\r\n }\r\n }, [location, selectedStorePickUpOption, handlers]);\r\n\r\n return (\r\n <div className='ms-store-select__location-line-pickup' data-selected={!!selectedStorePickUpOption} data-error={isError}>\r\n <div className='ms-store-select__location-line-pickup-label'>{pickUpMethodLabel}</div>\r\n {defaultDeliveryOption ? (\r\n <div className='ms-store-select__location-line-pickup-list-container'>\r\n <div className='ms-store-select__location-line-pickup-selected'>{currentStorePickUpOption}</div>\r\n </div>\r\n ) : (\r\n <div className='ms-store-select__location-line-pickup-list-error'>No pickup options available.</div>\r\n )}\r\n <button className='ms-store-select__location-line-pickup-menu' aria-label={pickupButtonAriaLabel} onClick={onClickHandler}>\r\n {selectStoreText}\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * PickUp button component.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\r\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\r\n const [isError, setError] = React.useState(false);\r\n const onPickupButtonClickHandler = () => () => {\r\n setError(true);\r\n };\r\n\r\n return (\r\n <>\r\n <button\r\n className='ms-store-select__location-line-select-store'\r\n aria-label={pickupInStoreAriaLabel}\r\n onClick={onPickupButtonClickHandler()}\r\n {...attributes}\r\n >\r\n {pickupInStoreButtonText}\r\n </button>\r\n <div className='ms-store-select__location-line-pickup-button-error' data-pickup-error={isError}>\r\n {pickupDeliveryOptionErrorMessage}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n/**\r\n * Method to render store location line item.\r\n * @param locationLineItem - The Location Line item view props.\r\n * @param props - The view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderStoreLocationLineItem = (\r\n locationLineItem: IStoreSelectorLocationLineItemProps,\r\n props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\r\n) => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n hideStockStatus,\r\n index,\r\n isInStock,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n location,\r\n resources,\r\n storeHours,\r\n storeHoursList,\r\n stockStatusLabel,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n storeLocatorView,\r\n telemetryContent\r\n } = locationLineItem;\r\n const storeName = location.OrgUnitName;\r\n const distanceAsString: string | undefined = buildDistanceString(\r\n location.Distance,\r\n locationLineItem.preferredDistanceUnit,\r\n props.resources,\r\n locationLineItem.isLocationDisabled\r\n );\r\n const storeAddress: string | undefined = location.Address;\r\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\r\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\r\n\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n\r\n /**\r\n * Method to handle the change for preferred store.\r\n * @returns Void.\r\n */\r\n const onSetPreferredStoreClickHandler = async () => {\r\n await addPreferredStoreAsync(\r\n { callerContext: props.context.actionContext },\r\n {\r\n CustomerAccountNumber: props.context.request.user.customerAccountNumber ?? '',\r\n StoreId: locationLineItem.location.OrgUnitNumber,\r\n StoreName: locationLineItem.location.OrgUnitName,\r\n Latitude: locationLineItem.location.Latitude ?? 0,\r\n Longitude: locationLineItem.location.Longitude ?? 0,\r\n ExtensionProperties: locationLineItem.location?.ExtensionProperties\r\n }\r\n );\r\n window.location.reload();\r\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\r\n };\r\n\r\n /**\r\n * Method to handle the removal of the preferred store.\r\n * @returns Void.\r\n */\r\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\r\n event.stopPropagation();\r\n locationLineItem.handlers.onRemovePreferredStore();\r\n window.location.reload();\r\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\r\n };\r\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <div className='ms-store-select__location-line-item'>\r\n <div className='ms-store-select__location-line-item-header'>\r\n {storeLocatorView && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\r\n <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\r\n {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>{distanceAsString}</span> : false}\r\n </div>\r\n <div className='ms-store-select__location-line-item-content'>\r\n <div className='ms-store-select__location-line-item-contact-info'>\r\n <p className='ms-store-select__location-line-header'>{locationLineItem.resources.contactInfoHeader}</p>\r\n {storeAddress && (\r\n <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\r\n <span\r\n className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\r\n aria-hidden='true'\r\n />\r\n <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\r\n {storeAddress}\r\n </span>\r\n </div>\r\n )}\r\n {phoneNumber && (\r\n <div className='ms-store-select__location-line-shop-phone-section'>\r\n <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\r\n <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\r\n </div>\r\n )}\r\n </div>\r\n <div className='ms-store-select__location-line-item-store-hours'>\r\n <p className='ms-store-select__location-line-header'>{locationLineItem.resources.storeHoursHeader}</p>\r\n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\r\n </div>\r\n {!storeLocatorView && !hideStockStatus && (\r\n <div className='ms-store-select__location-line-item-store-availability'>\r\n <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>\r\n {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\r\n </div>\r\n )}\r\n {isPreferredStoreEnabled &&\r\n (isPreferredStore ? (\r\n <button\r\n role='checkbox'\r\n className='ms-store-select__location-line-item-preferred-store'\r\n aria-live='polite'\r\n aria-checked='true'\r\n aria-label={resources.preferredStoreAriaLabel}\r\n onClick={onRemovePreferredStoreClickHandler}\r\n {...removePreferredStoreAttribute}\r\n >\r\n {resources.preferredStoreText}\r\n </button>\r\n ) : (\r\n <button\r\n role='checkbox'\r\n className='ms-store-select__location-line-item-set-as-preferred-store'\r\n aria-live='polite'\r\n aria-checked='false'\r\n aria-label={resources.setAsPreferredStoreTextAriaLabel}\r\n {...preferredStoreAttribute}\r\n onClick={onSetPreferredStoreClickHandler}\r\n >\r\n {resources.setAsPreferredStoreText}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Render Store Location.\r\n * @param location - The location props.\r\n * @param index - The location index.\r\n * @param props - The view props.\r\n * @param selectedLocationReference - The ref.\r\n * @returns The JSX Element.\r\n */\r\nconst renderStoreLocation = (\r\n location: IStoreSelectorLocationLineItemProps,\r\n index: number,\r\n props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\r\n selectedLocationReference: React.RefObject<HTMLDivElement>\r\n): JSX.Element | undefined => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\r\n hideStockStatus,\r\n storeLocatorView,\r\n isCurrentLocation,\r\n isInStock,\r\n productPickUpOptionList,\r\n resources,\r\n storePickUpOptionList,\r\n telemetryContent\r\n } = location;\r\n\r\n const orgUnitLocation = location.location;\r\n const selectedStoreLocationId = location.selectedStoreLocationId;\r\n const defaultAriaSetsize = 0;\r\n const canSelectLocation = hideStockStatus || isInStock;\r\n const storeName = location.location.OrgUnitName;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\r\n\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n const selectStoreText = props.resources.selectStoreText;\r\n const pickUpMethodLabel = props.resources.pickUpMethodLabel;\r\n\r\n /**\r\n * Method to handle the pick up in store.\r\n * @returns Void.\r\n */\r\n const onPickupInStoreClickHandler = () => () => {\r\n location.handlers.onSelected(location.location);\r\n };\r\n\r\n /**\r\n * Render Store Locations.\r\n * @param unitLocation - The org unit location.\r\n * @returns Handler for onClick.\r\n */\r\n const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\r\n location.onClick(unitLocation?.OrgUnitNumber);\r\n };\r\n\r\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\r\n <PickUpButtonComponent\r\n attributes={attributes}\r\n pickupInStoreAriaLabel={pickupInStoreAriaLabel}\r\n pickupInStoreButtonText={pickupInStoreButtonText}\r\n pickupDeliveryOptionErrorMessage={props.resources.pickupDeliveryOptionErrorMessage}\r\n onPickupInStoreClickHandler={onPickupInStoreClickHandler}\r\n />\r\n ) : (\r\n <PickUpMethodDropdownComponent\r\n {...location}\r\n pickUpStatesProps={props}\r\n selectStoreText={selectStoreText}\r\n pickUpMethodLabel={pickUpMethodLabel}\r\n pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\r\n pickupOptionDropdownError={props.resources.pickupOptionDropdownErrorText}\r\n pickupButtonAriaLabel={pickupInStoreAriaLabel}\r\n />\r\n );\r\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\r\n\r\n return (\r\n <div\r\n className={classnames('ms-store-select__location-wrapper', {\r\n selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber && !props.isMobileView\r\n })}\r\n >\r\n <div\r\n className={classnames('ms-store-select__location', { selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber })}\r\n key={index}\r\n role='listitem'\r\n aria-setsize={ArrayExtensions.hasElements(props.locationListProps) ? props.locationListProps.length : defaultAriaSetsize}\r\n aria-posinset={Number.parseInt(location.index, 10)}\r\n onClick={onClickHandler(orgUnitLocation)}\r\n onKeyDown={onClickHandler(orgUnitLocation)}\r\n ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? selectedLocationReference : undefined}\r\n >\r\n {renderStoreLocationLineItem(location, props)}\r\n </div>\r\n {!storeLocatorView &&\r\n (isCurrentLocation ? (\r\n <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\r\n ) : (\r\n pickUpMethodSelection\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Render Store Locations.\r\n * @param props - The view props.\r\n * @param selectedLocationReference - The ref.\r\n * @returns The JSX Element.\r\n */\r\nconst renderStoreLocations = (\r\n props: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>,\r\n selectedLocationReference: React.RefObject<HTMLDivElement>\r\n) => {\r\n return (\r\n <div\r\n className={classnames('ms-store-select__locations', {\r\n show: props.data.storeSelectorStateManager.result?.listMapViewState.displayList\r\n })}\r\n role='list'\r\n >\r\n {props.locationListProps?.map((store, index) => {\r\n return renderStoreLocation(store, index, props, selectedLocationReference);\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\n/**\r\n * Method to map resources with Location Item.\r\n * @param resources - List of strings for module.\r\n * @returns Resources for StoreSelector location line.\r\n */\r\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.selectStoreText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Render the selected store.\r\n * @param selectedLocationProps -- Selected store view props.\r\n * @param storeSelectorViewProps -- Store selector view props.\r\n * @returns -- HTML.\r\n */\r\nexport const renderSelectedStore = (\r\n selectedLocationProps: ISelectedStoreViewProps,\r\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>\r\n): JSX.Element => {\r\n const {\r\n storeDetailsMain,\r\n storeHeader,\r\n storeName,\r\n storeDetailsCloseButton,\r\n storeDistance,\r\n storeDetailsAvailabilityContainer,\r\n productAvailability,\r\n stockStatus,\r\n isPreferredStore,\r\n preferredStoreButton,\r\n removePreferredStoreButton,\r\n selectedStore\r\n } = selectedLocationProps;\r\n\r\n const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\r\n const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\r\n const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\r\n ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\r\n : [];\r\n const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\r\n const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\r\n const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\r\n const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\r\n '{StoreName}',\r\n storeNameValue ?? ''\r\n );\r\n const telemetryContent = getTelemetryObject(\r\n storeSelectorViewProps.context.request.telemetryPageName!,\r\n storeSelectorViewProps.friendlyName,\r\n storeSelectorViewProps.telemetry\r\n );\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\r\n const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\r\n const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\r\n const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\r\n const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\r\n const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\r\n const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\r\n\r\n /**\r\n * Method to handle the pick up in store.\r\n * @returns Void.\r\n */\r\n const onPickupInStoreClickHandler = () => () => {\r\n selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\r\n };\r\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\r\n <PickUpButtonComponent\r\n attributes={attributes}\r\n pickupInStoreAriaLabel={pickupInStoreAriaLabel}\r\n pickupInStoreButtonText={pickupInStoreButtonText}\r\n pickupDeliveryOptionErrorMessage={storeSelectorViewProps.resources.pickupDeliveryOptionErrorMessage}\r\n onPickupInStoreClickHandler={onPickupInStoreClickHandler}\r\n />\r\n ) : (\r\n selectedLocation && (\r\n <PickUpMethodDropdownComponent\r\n {...selectedLocation}\r\n pickUpStatesProps={storeSelectorViewProps}\r\n selectStoreText={selectStoreText}\r\n pickUpMethodLabel={pickUpMethodLabel}\r\n pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\r\n pickupOptionDropdownError={storeSelectorViewProps.resources.pickupOptionDropdownErrorText}\r\n pickupButtonAriaLabel={pickupInStoreAriaLabel}\r\n />\r\n )\r\n );\r\n\r\n return (\r\n <Node {...storeDetailsMain}>\r\n <Node {...storeHeader}>\r\n {storeDetailsCloseButton}\r\n {storeName}\r\n {storeDistance}\r\n </Node>\r\n <Node {...storeDetailsAvailabilityContainer}>\r\n <div className='ms-store-select__location-line-item-contact-info'>\r\n <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.contactText}</p>\r\n {storeAddress && (\r\n <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\r\n <span\r\n className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\r\n aria-hidden='true'\r\n />\r\n <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\r\n {storeAddress}\r\n </span>\r\n </div>\r\n )}\r\n {phoneNumber && (\r\n <div className='ms-store-select__location-line-shop-phone-section'>\r\n <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\r\n <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\r\n </div>\r\n )}\r\n </div>\r\n <div className='ms-store-select__location-line-item-store-hours'>\r\n <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.timeText}</p>\r\n {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\r\n </div>\r\n {productAvailability && (\r\n <div className='ms-store-select__location-line-item-store-availability'>\r\n <p className='ms-store-select__location-line-header'>{productAvailability}</p>\r\n {stockStatus && <p className='ms-store-select__location-line-stock-status'>{stockStatus}</p>}\r\n </div>\r\n )}\r\n </Node>\r\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n {canSelectPickUpMethod}\r\n </Node>\r\n );\r\n};\r\n\r\n/**\r\n * Store Selector View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst StoreSelectorViewComponent: React.FC<IStoreSelectorViewProps &\r\n IStoreSelectorProps<IStoreSelectorResources & IStoreSelectorData>> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\r\n const {\r\n BodyContainerProps,\r\n storeResultContainerProps,\r\n FooterContainerProps,\r\n HeaderContainerProps,\r\n HeaderProps,\r\n ModuleProps,\r\n locationsMessage,\r\n search,\r\n state,\r\n spinner,\r\n maps,\r\n locationsList,\r\n noLocationsMessage,\r\n terms,\r\n storeDetailsModal,\r\n selectedLocation,\r\n bodyWrapperProps,\r\n data,\r\n context\r\n } = props;\r\n const selectedLocationReference = React.useRef(null);\r\n const [isDesktopPort, setIsDesktopPort] = React.useState<boolean>(false);\r\n\r\n const isDesktopViewport = React.useCallback(() => {\r\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\r\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\r\n setIsDesktopPort(isDesktopPorts);\r\n }, [context]);\r\n\r\n React.useEffect(() => {\r\n if (props.locationsList) {\r\n /**\r\n * Method to handle scrolling.\r\n */\r\n const scrollIntoView = () => {\r\n const selectedLocationDiv = (selectedLocationReference as React.RefObject<HTMLDivElement>).current;\r\n if (selectedLocationDiv !== null) {\r\n const offset = selectedLocationDiv.getBoundingClientRect();\r\n const parent = selectedLocationDiv.parentElement?.parentElement;\r\n if (parent && offset) {\r\n const totalHeight = parent.scrollTop + offset.top;\r\n parent.scrollTop = totalHeight - parent.clientHeight;\r\n }\r\n }\r\n };\r\n scrollIntoView();\r\n }\r\n }, [props.locationsList]);\r\n\r\n React.useEffect(() => {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('resize', isDesktopViewport);\r\n }\r\n isDesktopViewport();\r\n }, [isDesktopViewport]);\r\n\r\n React.useEffect(() => {\r\n if (props.data.storeSelectorStateManager?.result?.preferredStore !== undefined) {\r\n props.context.actionContext.update(new PaymentStateShareInput(), {\r\n isStoreSelected: true,\r\n isCODSelected: true,\r\n isCreditCardSelected: false,\r\n shouldApplyOnAccountPayment: true\r\n });\r\n } else {\r\n props.context.actionContext.update(new PaymentStateShareInput(), {\r\n isStoreSelected: false,\r\n isCODSelected: true,\r\n isCreditCardSelected: false,\r\n shouldApplyOnAccountPayment: true\r\n });\r\n }\r\n }, [props.data.storeSelectorStateManager?.result?.preferredStore]);\r\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\r\n\r\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\r\n\r\n const closeDialogue = async (): Promise<void> => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = props;\r\n if (props.context.request.user.isSignedIn) {\r\n const userWithStore = JSON.parse(localStorage.getItem('logged_in_user_with_store') || '{}');\r\n if (storeSelectorStateManager && userWithStore?.store?.StoreId && props.context.request.user.customerAccountNumber) {\r\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\r\n return storeSelectorStateManager.closeDialog();\r\n }\r\n } else {\r\n if (storeSelectorStateManager) {\r\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\r\n return storeSelectorStateManager.closeDialog();\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n const updatedModuleProps = {\r\n ...ModuleProps,\r\n toggle: closeDialogue,\r\n onClosed: closeDialogue\r\n };\r\n\r\n const updatedHeaderContainerProps = {\r\n ...HeaderContainerProps,\r\n toggle: closeDialogue\r\n };\r\n if (!isDesktopView || !isDesktopPort) {\r\n return (\r\n <Module {...updatedModuleProps}>\r\n <Node {...updatedHeaderContainerProps}>{HeaderProps}</Node>\r\n <Node {...BodyContainerProps}>\r\n <Node {...storeResultContainerProps!}>\r\n {locationsMessage && (\r\n <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\r\n )}\r\n {search}\r\n <Node {...bodyWrapperProps!}>\r\n <Node {...storeResultContainerProps!}>\r\n {state.isSearchInProgress ? (\r\n spinner\r\n ) : (\r\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\r\n )}\r\n <Node\r\n className={`ms-store-select__map_view ${\r\n data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\r\n }`}\r\n >\r\n {maps}\r\n </Node>\r\n <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation, props)}</Node>\r\n </Node>\r\n </Node>\r\n </Node>\r\n </Node>\r\n <Node {...FooterContainerProps}>{terms}</Node>\r\n </Module>\r\n );\r\n }\r\n return (\r\n <Module {...updatedModuleProps}>\r\n <Node {...updatedHeaderContainerProps}>{HeaderProps}</Node>\r\n <Node {...BodyContainerProps}>\r\n <Node\r\n className={`ms-store-select__store_container ${\r\n data.storeSelectorStateManager.result?.listMapViewState.displayList ? 'show' : ''\r\n }`}\r\n >\r\n {locationsMessage && (\r\n <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\r\n )}\r\n {search}\r\n {state.isSearchInProgress ? (\r\n spinner\r\n ) : (\r\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\r\n )}\r\n </Node>\r\n <Node\r\n className={`ms-store-select__map_container ${\r\n data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\r\n }`}\r\n >\r\n {maps}\r\n </Node>\r\n </Node>\r\n <Node {...FooterContainerProps}>{terms}</Node>\r\n </Module>\r\n );\r\n};\r\n\r\nexport default StoreSelectorViewComponent;\r\n","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['__local__|__local__|themes|sysco-b2b|views|store-selector'] = {\n c: () => require('partner/themes/sysco-b2b/views/store-selector.view.tsx'),\n cn: '__local__-__local__-store-selector'\n };\nviewDictionary['@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<boolean> {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly<IStoreSelectionStateContext | undefined> {\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<IStoreSelectorLocation | undefined>;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise<void>;\n\n @action\n public async toggleListMapViewState(): Promise<void> {\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<void> {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise<void> {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise<void> {\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<void> {\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<void> {\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<void> {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise<void> {\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<void> {\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<IStoreSelectorLocation | undefined> {\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<IStoreSelectorLocation | undefined>(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<void> {\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<IStoreSelectorStateManager> {\n return new GenericInput<IStoreSelectorStateManager>('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext<IGeneric<IAny>>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: <IAction<IStoreSelectorStateManager>>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<void>;\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<IStorePickUpOptionListProps, IStorePickOptionListState> {\n private readonly _storePickupListOptionMenu: React.RefObject<HTMLUListElement>;\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 <div className='ms-store-select__search-header-pickup'>\n <button className='ms-store-select__search-header-pickup-menu' onClick={this._rendeDeliveryOptions}>\n {selectedPickupModeDesc !== undefined ? selectedPickupModeDesc : productPickupListOptionMenuText}\n <span className='ms-store-select__search-header-pickup-span' />\n </button>\n {this.state.isFilterExpanded ? (\n <ul className='ms-store-select__search-header-pickup-list' role={role} ref={this._storePickupListOptionMenu}>\n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n <li className='ms-store-select__search-header-pickup-list-item' key={delivery.Code} role='presentation'>\n <a\n key={delivery.Code}\n data-value={delivery.Code}\n role='menuitem'\n className='ms-store-select__search-header-pickup-list-link'\n tabIndex={0}\n aria-label={delivery.Description}\n onClick={this._onSelect}\n onKeyDown={this._onKeyDown}\n >\n <span className='ms-store-select__search-header-pickup-list-item__text'>\n {delivery.Description}\n </span>\n </a>\n </li>\n );\n })}\n </ul>\n ) : null}\n </div>\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<HTMLAnchorElement, MouseEvent>): Promise<void> => {\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<HTMLAnchorElement>): Promise<void> => {\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<IStoreSelectorLocationLinesProps> {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject<HTMLDivElement>;\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 <div className={classnames('ms-store-select__locations', { show: this.props.displayList })} role='list'>\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n </div>\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 <div\n className={classnames('ms-store-select__location', {\n selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber\n })}\n key={index}\n role='listitem'\n aria-setsize={ArrayExtensions.hasElements(this._stores) ? this._stores.length : defaultAriaSetsize}\n aria-posinset={this.storeCounter}\n onClick={this.onClickHandler(orgUnitLocation)}\n ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? this.selectedLocationRef : undefined}\n >\n <StoreSelectorLocationLineItemComponent\n location={orgUnitLocation}\n storeHours={store.StoreHours}\n resources={this._mapResources(this.props.resources)}\n preferredDistanceUnit={this.props.preferredDistanceUnit!}\n isCurrentLocation={this._isCurrentLocation(orgUnitLocation)}\n isInStock={this._isProductInStock(store?.OrgUnitAvailability?.ItemAvailabilities)}\n hideStockStatus={!this.props.enableOutOfStockCheck}\n handlers={{\n onSelected: this.props.onLocationSelected,\n onSetAsPreferredStore: this.props.onSetAsPreferredStore,\n onRemovePreferredStore: this.props.onRemovePreferredStore\n }}\n stockStatusLabel={this._stockInventoryLabel(store)}\n storeLocatorView={this.props.storeLocatorView}\n index={this.storeCounter.toString()}\n preferredStoreLocationId={this.props.preferredStoreLocationId}\n isPreferredStoreEnabled={this.props.isPreferredStoreEnabled}\n telemetryContent={this.props.telemetryContent}\n isLocationDisabled={this.props.isLocationDisabled}\n storePickUpOptionList={deliveryOptions?.DeliveryOptions}\n productPickUpOptionList={this.props.productPickUpDeliveryOptions}\n filteredPickupMode={this.props.filteredPickupMode}\n shouldShowIndex={this.props.shouldShowIndex}\n />\n </div>\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<void>;\n searchTermChanged(searchTerm: string): Promise<void>;\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<IStoreSelectorSearchFormProps> {\n private readonly searchBoxRef: React.RefObject<HTMLInputElement> = React.createRef<HTMLInputElement>();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary<string> | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary<string> | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary<string> | 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 <div className='ms-store-select__search'>\n <form\n className='ms-store-select__search-form'\n aria-label={searchButtonAriaLabel}\n name='storeSelectorSearchForm'\n autoComplete='off'\n onSubmit={this._onSubmit}\n id={`ms-store-select__search-box-container_${id}`}\n >\n <input\n type='text'\n aria-label={this.props.resources.searchInputAriaLabel}\n className='msc-form-control ms-store-select__search-input'\n placeholder={searchPlaceholderText}\n value={value}\n onChange={this._searchTextChanged}\n id={`ms-store-select__search-box_${id}`}\n ref={this.searchBoxRef}\n role='combobox'\n aria-expanded='false'\n aria-controls='as_containerSearch'\n onKeyUp={this._handleInputKeyPress}\n />\n <button\n className={`ms-store-select__search-button${isMapDisabled ? ' search-btn-disabled' : ''}`}\n aria-label={searchButtonAriaLabel}\n color='primary'\n {...this.storeSearchAttributes}\n />\n </form>\n {showAllStores && (\n <div\n className='ms-store-select__search-see-all-stores'\n tabIndex={0}\n role='button'\n onKeyUp={this._handleKeyPressPrev}\n onClick={onShowAllStores}\n {...this.showAllStoreAttributes}\n >\n {seeAllStoresText}\n </div>\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n </div>\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<HTMLInputElement>): Promise<void> => {\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<void> => {\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<void> => {\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 <div className='ms-store-select__search-header'>\n {locatorView && (\n <button\n className={`ms-store-select__toggle-view ${toggleButtonClass}`}\n onClick={props.onToggleListMapViewState}\n {...this.toggleMapViewAttributes}\n >\n {toggleButtonText}\n </button>\n )}\n <StorePickUpOptionList\n productPickupListOptionMenuText={pickupFilterMenuHeading}\n defaultOptionText={props.filteredPickupMode ? undefined : pickupFilterMenuHeading}\n productPickupModeList={productPickUpDeliveryOptions}\n onChange={this._onChangeHandler()}\n />\n <div className='ms-store-select__search-header-heading'>{pickupFilterByHeading}</div>\n </div>\n );\n }\n if (locatorView) {\n return (\n <button\n className={`ms-store-select__toggle-view ${toggleButtonClass}`}\n onClick={props.onToggleListMapViewState}\n {...this.toggleMapViewAttributes}\n >\n {toggleButtonText}\n </button>\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<IStoreSelectorEmptyMessageProps> = ({ resources }) => (\n <div className='ms-store-select__no-locations'>\n <p>{resources.emptyLocationsText}</p>\n </div>\n);\n\nexport const StoreSelectorWaiting: React.FC = () => <div className={classnames('msc-waiting', 'ms-store-select__search-in-progress')} />;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC<IStoreSelectorTermsOfServiceProps> = ({ 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 <div className='ms-store-select__footer'>\n <Msdyn365.Link link={editableLink} editProps={{ onTextChange, requestContext }} />\n </div>\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<IStoreSelectorFoundLocationsMessage> = ({\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 <div className='ms-store-select__found-locations'>\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n </div>\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<void>;\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<IPickUpOptionListProps, IPickOptionListState> {\n private readonly _pickupListOptionMenu: React.RefObject<HTMLUListElement>;\n\n private readonly _pickupListOptionButton: React.RefObject<HTMLButtonElement>;\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 <div className='ms-store-select__location-line-pickup'>\n <button\n className='ms-store-select__location-line-pickup-menu'\n onClick={this._renderDeliveryOptions}\n ref={this._pickupListOptionButton}\n >\n {pickupListOptionMenuText}\n <span className='ms-store-select__location-line-pickup-span' />\n </button>\n {this.state.expandSiteOptions ? (\n <ul className='ms-store-select__location-line-pickup-list' role='menu' ref={this._pickupListOptionMenu}>\n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n <li role='menu' className='ms-store-select__location-line-pickup-list-item' key={delivery.Code}>\n <a\n key={delivery.Code}\n data-value={delivery.Code}\n className='ms-store-select__location-line-pickup-list-link'\n tabIndex={0}\n aria-label={delivery.Description}\n onClick={this._onSelect}\n role='menuitem'\n >\n <span className='ms-store-select__location-line-pickup-list-item__text'>\n {delivery.Description}\n </span>\n </a>\n </li>\n );\n })}\n </ul>\n ) : null}\n </div>\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<HTMLButtonElement, 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<HTMLAnchorElement, MouseEvent>): Promise<void> => {\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<void>;\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<void>;\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<void> => {\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<void> => {\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 <PickUpOptionList\n pickupListOptionMenuText={pickupInStoreButtonText}\n pickupmodeList={deliveryOptionList}\n onChange={onChangeHandler(props)}\n />\n );\n }\n return (\n <button\n className='ms-store-select__location-line-select-store'\n aria-label={pickupInStoreAriaLabel}\n onClick={onPickupModeSelectHandler(props, props.filteredPickupMode)}\n >\n {pickupInStoreButtonText}\n </button>\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: <span className={`${parentClassName}__header_store_name`}>{storeName}</span>,\n storeDetailsCloseButton: <Button className={`${parentClassName}__header_close_button`} onClick={storeDetailsModalHandler(props)} />,\n // eslint-disable-next-line prettier/prettier\n storeDistance: distanceAsString ? <span className={`${parentClassName}__header_store-distance`}>\n {' '}\n {distanceAsString}</span> : '',\n storeDetailsAvailabilityContainer: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__container`\n },\n productAvailability: !shouldHideStockStatus && (\n <p className={`${parentClassName}__container_product-availability`}>{resources.availabilityInfoHeader}</p>\n ),\n stockStatus: stockText && <p className={`${parentClassName}__container_stock-status`}>{stockText}</p>,\n currentLocation: <p className={`${parentClassName}__container_current-location`}>{resources.currentLocation}</p>,\n pickUpDeliveryOptionButton: (\n <button\n className='ms-store-select__location-line-select-store'\n aria-label={pickupInStoreAriaLabel}\n onClick={onPickupInStoreClickHandler(props)}\n {...attributes}\n >\n {pickupInStoreButtonText}\n </button>\n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n <button\n role='checkbox'\n className='ms-store-select__location-line-item-preferred-store'\n aria-live='polite'\n aria-checked='true'\n aria-label={resources.preferredStoreAriaLabel}\n onClick={removePreferredStoreHandler(props)}\n {...removePreferredStoreAttributes}\n >\n {resources.preferredStoreText}\n </button>\n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n <button\n role='checkbox'\n className='ms-store-select__location-line-item-set-as-preferred-store'\n aria-live='polite'\n aria-checked='false'\n aria-label={resources.setAsPreferredStoreTextAriaLabel}\n {...preferredStoreAttributes}\n onClick={onSetPreferredStoreClickHandler(props)}\n >\n {resources.setAsPreferredStoreText}\n </button>\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 <div className='ms-store-select__store-hours-details-group'>\n {storeHoursList.map(displayTime => (\n <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\n {displayTime.endDayShort ? (\n <div className='ms-store-select__store-hours-day'>\n <abbr title={displayTime.startDayFull}>{displayTime.startDayShort}</abbr>–\n <abbr title={displayTime.endDayFull}>{displayTime.endDayShort}</abbr>\n </div>\n ) : (\n <div className='ms-store-select__store-hours-day'>\n <abbr title={displayTime.startDayFull}>{displayTime.startDayShort}</abbr>\n </div>\n )}\n <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\n </div>\n ))}\n </div>\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 <div className='ms-store-select__store-hours-details'>\n {storeOpenFrom}-{storeOpenTo}\n </div>\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<void> => {\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 <PickUpOptionList\n pickupListOptionMenuText={pickupInStoreButtonText}\n pickupmodeList={deliveryOptionList}\n onChange={onChangeHandler(props)}\n />\n );\n }\n return (\n <button\n className='ms-store-select__location-line-select-store'\n aria-label={pickupInStoreAriaLabel}\n onClick={onPickupModeSelectHandler(props, props.filteredPickupMode)}\n >\n {pickupInStoreButtonText}\n </button>\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<IStoreSelectorLocationLineItemProps> = (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 <div className='ms-store-select__location-line-item'>\n <div className='ms-store-select__location-line-item-header'>\n {(shouldShowIndex || storeLocatorView) && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\n <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\n {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>\n {' '}\n {distanceAsString}\n </span> : false}\n </div>\n <div className='ms-store-select__location-line-item-content'>\n <div className='ms-store-select__location-line-item-contact-info'>\n <p className='ms-store-select__location-line-header'>{resources.contactInfoHeader}</p>\n {storeAddress && (\n <div className='ms-store-select__location-line-shop-address-section'>\n <span className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon' />\n <span className='ms-store-select__location-line-shop-address-text'>{storeAddress}</span>\n </div>\n )}\n {phoneNumber && (\n <div className='ms-store-select__location-line-shop-phone-section'>\n <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\n <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\n </div>\n )}\n </div>\n <div className='ms-store-select__location-line-item-store-hours'>\n <p className='ms-store-select__location-line-header'>{resources.storeHoursHeader}</p>\n {renderStoreHours(storeHours, location, resources)}\n </div>\n {!storeLocatorView && (\n <div className='ms-store-select__location-line-item-store-availability'>\n {!hideStockStatus && <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>}\n {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\n {isCurrentLocation ? (\n <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n <button\n className='ms-store-select__location-line-select-store'\n aria-label={pickupInStoreAriaLabel}\n onClick={pickUpButtonClickHandler(props)}\n {...attributes}\n >\n {pickupInStoreButtonText}\n </button>\n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n </div>\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n <button\n role='checkbox'\n className='ms-store-select__location-line-item-preferred-store'\n aria-live='polite'\n aria-checked='true'\n aria-label={resources.preferredStoreAriaLabel}\n onClick={removePreferredStoreHandler(props)}\n {...removePreferredStoreAttributes}\n >\n {resources.preferredStoreText}\n </button>\n ) : (\n <button\n role='checkbox'\n className='ms-store-select__location-line-item-set-as-preferred-store'\n aria-live='polite'\n aria-checked='false'\n aria-label={resources.setAsPreferredStoreTextAriaLabel}\n {...preferredStoreAttributes}\n onClick={onSetPreferredStoreClickHandler(props)}\n >\n {resources.setAsPreferredStoreText}\n </button>\n )\n ) : null}\n </div>\n {isError ? (\n <span className='ms-store-select__location-line-pickup-list-error msc-alert msc-alert-noborder msc-alert-danger'>\n <span className='msi-exclamation-triangle' aria-hidden='true' />\n <span>{props.resources.pickupDeliveryOptionErrorMessage}</span>\n </span>\n ) : ('')}\n </div>\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/// <reference types=\"bingmaps\" />\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<IStoreSelectorData> {\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<void>;\n searchTermChanged(searchTerm: string): Promise<void>;\n performSearch(searchTerm: string): Promise<void>;\n selectedLocation(location: OrgUnitLocation | undefined): Promise<void>;\n getAndUpdateUserLocation(): Promise<void>;\n attachMapAutoSuggest(): Promise<void>;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise<void>;\n setPreferredStore(storeId: string | undefined): Promise<void>;\n removePreferredStore(): Promise<void>;\n setSelectedStore(storeId: string | undefined): Promise<void>;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise<void>;\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<void>;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component<IPickUpInStoreProps<IPickUpInStoreData>>}\n */\n@observer\nclass StoreSelector extends React.Component<IStoreSelectorProps<IStoreSelectorData>, 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<IStoreSelectorData>) {\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<void> {\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<void> {\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<IStoreSelectorData>),\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 <Msdyn365.Text\n className='msc-modal__title'\n {...configHeading}\n tag='h2'\n text={configHeading}\n editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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 <StoreSelectorFoundLocationsMessage\n resources={resources}\n locations={storeLocationList}\n searchRadius={lookupRadius || 50}\n preferredDistanceUnit={preferredDistanceUnit}\n isSeeAllStore={this.state.isSeeAllStoreValue}\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 <StoreSelectorSearchForm\n value={this.state.searchTerm || ''}\n resources={resources}\n performSearch={this._performSearch}\n searchTermChanged={this._searchTermChanged}\n isMapDisabled={isMapDisabled}\n showAllStores={shouldShowAllStores}\n id={this.props.id}\n onShowAllStores={this.onShowAllStoresHandler}\n onToggleListMapViewState={storeSelectorActions.toggleListMapViewState}\n displayList={shouldDisplayList}\n locatorView={canShowLocationView}\n productPickUpDeliveryOptions={storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions}\n telemetryContent={this.telemetryContent}\n filterPickupModeSelected={this.onFilteredPickupMode}\n hasEnabledPickupFilterToShowStore={hasEnablePickupFilterToShowStore}\n filteredPickupMode={this.state.filteredPickupMode}\n />\n ),\n spinner: <StoreSelectorWaiting />,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n <StoreSelectorLocationLines\n locations={storeLocationList}\n resources={resources}\n preferredDistanceUnit={preferredDistanceUnit}\n alreadySelectedLocation={context ? context.alreadySelectedLocation : undefined}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- Reading config value.\n outOfStockThreshold={appConfig.outOfStockThreshold || 0}\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- Reading config value.\n enableOutOfStockCheck={appConfig.enableStockCheck || false}\n onLocationSelected={this._onOrgUnitLocationSelected}\n storeLocatorView={isLocatorView}\n selectedStoreLocationId={selectedStoreLocationId}\n onClick={this._setSelectedStore}\n preferredStoreLocationId={preferredStore?.StoreId ? preferredStore.StoreId : ''}\n onSetAsPreferredStore={this._setPreferredStore}\n onRemovePreferredStore={this._removePreferredStore}\n isPreferredStoreEnabled={this.isPreferredStoreEnabled}\n displayList={shouldDisplayList}\n telemetryContent={this.telemetryContent}\n isLocationDisabled={this.state.isLocationDisabled}\n productPickUpDeliveryOptions={storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions}\n filteredPickupMode={this.state.filteredPickupMode}\n shouldShowIndex={hasMapSlot}\n />\n ) : (\n undefined\n ),\n noLocationsMessage: <StoreSelectorEmptyMessage resources={resources} />,\n terms: (\n <StoreSelectorTermsOfService\n link={termsOfServiceLink}\n onTextChange={this.handleLinkTextChange}\n requestContext={this.props.context.request}\n />\n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n <span>{heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}</span>\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<void> => {\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<ISelectedStoreViewProps> = 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<ISelectedStoreViewProps> = 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 <Node {...storeDetailsMain}>\n <Node {...storeHeader}>\n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n </Node>\n <Node {...storeDetailsAvailabilityContainer}>\n {productAvailability}\n {stockStatus}\n </Node>\n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n </Node>\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<IStoreSelectorViewProps> = 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 <Node {...BodyContainerProps}>\n {locationsMessage}\n {search}\n <Node {...bodyWrapperProps!}>\n <Node {...storeResultContainerProps!}>\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}</>}\n {maps}\n <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation)}</Node>\n </Node>\n </Node>\n </Node>\n );\n }\n\n return (\n <Node {...BodyContainerProps}>\n <Node {...bodyWrapperProps!}>\n <Node {...storeResultContainerProps!}>\n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}</>}\n </Node>\n <Node {...mapContainerProps!}>{maps}</Node>\n </Node>\n </Node>\n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC<IStoreSelectorViewProps> = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n <Module {...ModuleProps}>\n <Node {...HeaderContainerProps}>{HeaderProps}</Node>\n {renderBody(props)}\n <Node {...FooterContainerProps}>{terms}</Node>\n </Module>\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<string> | 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<IStoreSelectorFoundLocationsMessage> = 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 <RichTextComponent\n className='ms-store-select__found-locations__text'\n text={\n isSeeAllStore\n ? resources.storeAllCountMessage.replace(\n '{count}',\n `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `<span class='ms-store-select__found-locations__count'>${locations.length.toString()}</span>`\n )\n .replace(\n '{radius}',\n `<span class='ms-store-select__found-locations__radius'>${searchRadius.toString()}</span>`\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 <RichTextComponent\n className='ms-store-select__store-hours-day'\n text={\n displayTime.endDayShort\n ? storeHoursDayPeriodString\n .replace('{startDay}', `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`)\n .replace(\n '{endDay}',\n `<abbr title=${displayTime.endDayFull ? displayTime.endDayFull : ''}>${displayTime.endDayShort}</abbr>`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `<abbr title=${displayTime.startDayFull}>${displayTime.startDayShort}</abbr>`\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 <div className='ms-store-select__store-hours-details-group'>\n {storeHoursList?.map(displayTime => (\n <div className='ms-store-select__store-hours-details' key={JSON.stringify(displayTime)}>\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n <div className='ms-store-select__store-hours-time'>{displayTime.timeRange}</div>\n </div>\n ))}\n </div>\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 <div className='ms-store-select__store-hours-details'>\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n </div>\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<HTMLButtonElement>) => {\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 <div className='ms-store-select__location-line-pickup-list-container'>\n <button\n role='menuitem'\n aria-label={filteredDeliveryMode.Description}\n value={filteredDeliveryMode.Code}\n data-description={filteredDeliveryMode.Description}\n className='ms-store-select__location-line-pickup-list-toggle preselected'\n >\n {filteredDeliveryMode.Description}\n </button>\n </div>\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 <div\n className='ms-store-select__location-line-pickup'\n data-selected={\n (pickUpStatesProps.state.filteredPickupMode !== undefined && filteredDeliveryMode !== undefined) ||\n selectedStorePickUpOption !== ''\n }\n data-error={isError}\n >\n <div className='ms-store-select__location-line-pickup-label'>{pickUpMethodLabel}</div>\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n <div className='ms-store-select__location-line-pickup-list-container'>\n <button\n className='ms-store-select__location-line-pickup-list-toggle'\n onClick={handleDropdownToggle}\n aria-expanded={isDropdownOpen}\n >\n {currentStorePickUpOption}\n </button>\n <ul className={classnames('ms-store-select__location-line-pickup-list', isDropdownOpen ? 'show' : '')}>\n {deliveryOptionList.map((delivery: DeliveryOption) => (\n <li\n role='presentation'\n className='ms-store-select__location-line-pickup-list-item'\n key={delivery.Code}\n value={delivery.Code}\n >\n <button\n role='menuitem'\n aria-label={delivery.Description}\n value={delivery.Code}\n data-description={delivery.Description}\n onClick={onChangeHandler}\n className='ms-store-select__location-line-pickup-list-item-button'\n >\n {delivery.Description}\n </button>\n </li>\n ))}\n </ul>\n <div className='ms-store-select__location-line-pickup-list-error'>{pickupOptionDropdownError}</div>\n </div>\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n <button className='ms-store-select__location-line-pickup-menu' aria-label={pickupButtonAriaLabel} onClick={onClickHandler}>\n {pickupInStoreButtonText}\n </button>\n </div>\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 <button\n className='ms-store-select__location-line-select-store'\n aria-label={pickupInStoreAriaLabel}\n onClick={onPickupButtonClickHandler()}\n {...attributes}\n >\n {pickupInStoreButtonText}\n </button>\n <div className='ms-store-select__location-line-pickup-button-error' data-pickup-error={isError}>\n {pickupDeliveryOptionErrorMessage}\n </div>\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<IStoreSelectorResources>\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<HTMLElement, 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 <div className='ms-store-select__location-line-item'>\n <div className='ms-store-select__location-line-item-header'>\n {storeLocatorView && <span className='ms-store-select__location-line-item-store-index'>{index}</span>}\n <span className='ms-store-select__location-line-item-store-name'>{storeName}</span>\n {distanceAsString ? <span className='ms-store-select__location-line-item-store-distance'>{distanceAsString}</span> : false}\n </div>\n <div className='ms-store-select__location-line-item-content'>\n <div className='ms-store-select__location-line-item-contact-info'>\n <p className='ms-store-select__location-line-header'>{locationLineItem.resources.contactInfoHeader}</p>\n {storeAddress && (\n <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\n <span\n className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\n aria-hidden='true'\n />\n <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\n {storeAddress}\n </span>\n </div>\n )}\n {phoneNumber && (\n <div className='ms-store-select__location-line-shop-phone-section'>\n <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\n <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\n </div>\n )}\n </div>\n <div className='ms-store-select__location-line-item-store-hours'>\n <p className='ms-store-select__location-line-header'>{locationLineItem.resources.storeHoursHeader}</p>\n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n </div>\n {!storeLocatorView && !hideStockStatus && (\n <div className='ms-store-select__location-line-item-store-availability'>\n <p className='ms-store-select__location-line-header'>{resources.availabilityInfoHeader}</p>\n {stockText && <p className='ms-store-select__location-line-stock-status'>{stockText}</p>}\n </div>\n )}\n {isPreferredStoreEnabled &&\n (isPreferredStore ? (\n <button\n role='checkbox'\n className='ms-store-select__location-line-item-preferred-store'\n aria-live='polite'\n aria-checked='true'\n aria-label={resources.preferredStoreAriaLabel}\n onClick={onRemovePreferredStoreClickHandler}\n {...removePreferredStoreAttribute}\n >\n {resources.preferredStoreText}\n </button>\n ) : (\n <button\n role='checkbox'\n className='ms-store-select__location-line-item-set-as-preferred-store'\n aria-live='polite'\n aria-checked='false'\n aria-label={resources.setAsPreferredStoreTextAriaLabel}\n {...preferredStoreAttribute}\n onClick={onSetPreferredStoreClickHandler}\n >\n {resources.setAsPreferredStoreText}\n </button>\n ))}\n </div>\n </div>\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<IStoreSelectorResources>,\n selectedLocationReference: React.RefObject<HTMLDivElement>\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 <PickUpButtonComponent\n attributes={attributes}\n pickupInStoreAriaLabel={pickupInStoreAriaLabel}\n pickupInStoreButtonText={pickupInStoreButtonText}\n pickupDeliveryOptionErrorMessage={props.resources.pickupDeliveryOptionErrorMessage}\n onPickupInStoreClickHandler={onPickupInStoreClickHandler}\n />\n ) : (\n <PickUpMethodDropdownComponent\n {...location}\n pickUpStatesProps={props}\n selectStoreText={selectStoreText}\n pickUpMethodLabel={pickUpMethodLabel}\n pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\n pickupOptionDropdownError={props.resources.pickupOptionDropdownErrorText}\n pickupButtonAriaLabel={pickupInStoreAriaLabel}\n />\n );\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\n\n return (\n <div\n className={classnames('ms-store-select__location-wrapper', {\n selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber && !props.isMobileView\n })}\n >\n <div\n className={classnames('ms-store-select__location', { selected: selectedStoreLocationId === orgUnitLocation.OrgUnitNumber })}\n key={index}\n role='listitem'\n aria-setsize={ArrayExtensions.hasElements(props.locationListProps) ? props.locationListProps.length : defaultAriaSetsize}\n aria-posinset={Number.parseInt(location.index, 10)}\n onClick={onClickHandler(orgUnitLocation)}\n onKeyDown={onClickHandler(orgUnitLocation)}\n ref={selectedStoreLocationId === orgUnitLocation.OrgUnitNumber ? selectedLocationReference : undefined}\n >\n {renderStoreLocationLineItem(location, props)}\n </div>\n {!storeLocatorView &&\n (isCurrentLocation ? (\n <p className='ms-store-select__location-line-current-location'>{resources.currentLocation}</p>\n ) : (\n pickUpMethodSelection\n ))}\n </div>\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<IStoreSelectorResources>,\n selectedLocationReference: React.RefObject<HTMLDivElement>\n) => {\n return (\n <div\n className={classnames('ms-store-select__locations', {\n show: props.data.storeSelectorStateManager.result?.listMapViewState.displayList\n })}\n role='list'\n >\n {props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })}\n </div>\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<IStoreSelectorResources>\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 <PickUpButtonComponent\n attributes={attributes}\n pickupInStoreAriaLabel={pickupInStoreAriaLabel}\n pickupInStoreButtonText={pickupInStoreButtonText}\n pickupDeliveryOptionErrorMessage={storeSelectorViewProps.resources.pickupDeliveryOptionErrorMessage}\n onPickupInStoreClickHandler={onPickupInStoreClickHandler}\n />\n ) : (\n selectedLocation && (\n <PickUpMethodDropdownComponent\n {...selectedLocation}\n pickUpStatesProps={storeSelectorViewProps}\n selectStoreText={selectStoreText}\n pickUpMethodLabel={pickUpMethodLabel}\n pickUpOptionPlaceholder={pickUpOptionDropdownPlaceholderText}\n pickupOptionDropdownError={storeSelectorViewProps.resources.pickupOptionDropdownErrorText}\n pickupButtonAriaLabel={pickupInStoreAriaLabel}\n />\n )\n );\n\n return (\n <Node {...storeDetailsMain}>\n <Node {...storeHeader}>\n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n </Node>\n <Node {...storeDetailsAvailabilityContainer}>\n <div className='ms-store-select__location-line-item-contact-info'>\n <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.contactText}</p>\n {storeAddress && (\n <div className='ms-store-select__location-line-shop-address-section' aria-label={storeAddress} role='button'>\n <span\n className='msi msi-map-marker-alt ms-store-select__location-line-shop-address-glyph-icon'\n aria-hidden='true'\n />\n <span className='ms-store-select__location-line-shop-address-text' aria-hidden='true'>\n {storeAddress}\n </span>\n </div>\n )}\n {phoneNumber && (\n <div className='ms-store-select__location-line-shop-phone-section'>\n <span className='msi msi-phone ms-store-select__location-line-shop-phone-icon' />\n <span className='ms-store-select__location-line-shop-phone-text'>{phoneNumber}</span>\n </div>\n )}\n </div>\n <div className='ms-store-select__location-line-item-store-hours'>\n <p className='ms-store-select__location-line-header'>{storeSelectorViewProps.resources.timeText}</p>\n {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\n </div>\n {productAvailability && (\n <div className='ms-store-select__location-line-item-store-availability'>\n <p className='ms-store-select__location-line-header'>{productAvailability}</p>\n {stockStatus && <p className='ms-store-select__location-line-stock-status'>{stockStatus}</p>}\n </div>\n )}\n </Node>\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n </Node>\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC<IStoreSelectorViewProps & IStoreSelectorProps<IStoreSelectorResources>> = 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<boolean>(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<HTMLDivElement>).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 <Module {...ModuleProps}>\n <Node {...HeaderContainerProps}>{HeaderProps}</Node>\n <Node {...BodyContainerProps}>\n <Node {...storeResultContainerProps!}>\n {locationsMessage && (\n <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\n )}\n {search}\n <Node {...bodyWrapperProps!}>\n <Node {...storeResultContainerProps!}>\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\n )}\n <Node\n className={`ms-store-select__map_view ${\n data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\n }`}\n >\n {maps}\n </Node>\n <Node {...storeDetailsModal!}>{selectedLocation && renderSelectedStore(selectedLocation, props)}</Node>\n </Node>\n </Node>\n </Node>\n </Node>\n <Node {...FooterContainerProps}>{terms}</Node>\n </Module>\n );\n }\n return (\n <Module {...ModuleProps}>\n <Node {...HeaderContainerProps}>{HeaderProps}</Node>\n <Node {...BodyContainerProps}>\n <Node\n className={`ms-store-select__store_container ${\n data.storeSelectorStateManager.result?.listMapViewState.displayList ? 'show' : ''\n }`}\n >\n {locationsMessage && (\n <StoreSelectorFoundLocationsMessageComponent {...(locationsMessage as React.ReactElement).props} />\n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}</>\n )}\n </Node>\n <Node\n className={`ms-store-select__map_container ${\n data.storeSelectorStateManager.result?.listMapViewState.displayMap ? '' : 'hide'\n }`}\n >\n {maps}\n </Node>\n </Node>\n <Node {...FooterContainerProps}>{terms}</Node>\n </Module>\n );\n};\n\nexport default StoreSelectorViewComponent;\n","module.exports = React;","module.exports = ReactDOM;","'use strict';\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw new $RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = globalThis.RangeError;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw new RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/environment-ff-version');\nvar IE_OR_EDGE = require('../internals/environment-is-ie-or-edge');\nvar V8 = require('../internals/environment-v8-version');\nvar WEBKIT = require('../internals/environment-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = globalThis.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = globalThis.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() !== new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n"],"names":["PaymentStateShareInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","Msdyn365","action","async","input","ctx","isCODSelected","isCreditCardSelected","shouldApplyOnAccountPayment","isStoreSelected","id","args","StoreSelectorFoundLocationsMessageComponent","props","locations","searchRadius","resources","isSeeAllStore","preferredDistanceUnit","storeCountMessage","milesShortText","storeCountMessageInKm","React","RichTextComponent","className","text","storeAllCountMessage","replace","length","toString","extractPhoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","ArrayExtensions","hasElements","primaryPhoneContact","find","IsPrimary","Locator","renderStoreHours","storeHours","storeHoursList","locationOpen","RegularStoreHours","map","displayTime","key","JSON","stringify","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","storeOpenFrom","openFrom","storeOpenTo","openTo","matchDeliveryOptions","productDeliveryOptions","storePickUpOptionList","productDeliveryOption","delivery","Code","PickUpMethodDropdownComponent","handlers","location","selectStoreText","pickUpMethodLabel","pickupButtonAriaLabel","productPickUpOptionList","defaultDeliveryOption","selectedStorePickUpOption","currentStorePickUpOption","Description","isError","setError","onClickHandler","StringExtensions","isNullOrEmpty","onSelected","onClick","PickUpButtonComponent","pickupInStoreAriaLabel","pickupInStoreButtonText","pickupDeliveryOptionErrorMessage","attributes","Object","assign","renderStoreLocationLineItem","locationLineItem","hideStockStatus","index","isInStock","preferredStoreLocationId","isPreferredStoreEnabled","stockStatusLabel","storeLocatorView","telemetryContent","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","isLocationDisabled","undefined","closeDistanceString","distanceString","Math","floor","Distance","storeAddress","Address","phoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","isPreferredStore","OrgUnitNumber","contentAction","etext","PreferredStore","preferredStoreAttribute","getTelemetryAttributes","RemovePreferredStore","removePreferredStoreAttribute","contactInfoHeader","role","storeHoursHeader","availabilityInfoHeader","preferredStoreAriaLabel","_props$data$storeSele","event","stopPropagation","onRemovePreferredStore","window","reload","data","storeSelectorStateManager","result","setSelectedStoreLocationId","preferredStoreText","setAsPreferredStoreTextAriaLabel","_props$context$reques","_locationLineItem$loc","_locationLineItem$loc2","_locationLineItem$loc3","addPreferredStoreAsync","callerContext","context","actionContext","CustomerAccountNumber","request","user","customerAccountNumber","StoreId","StoreName","Latitude","Longitude","ExtensionProperties","onSetAsPreferredStore","setAsPreferredStoreText","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","classnames","show","listMapViewState","displayList","locationListProps","store","renderStoreLocation","isCurrentLocation","orgUnitLocation","selectedStoreLocationId","canSelectLocation","selectLocationAriaLabelFormat","selectLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","deliveryOptionList","unitLocation","canSelectPickUpMethod","pickUpStatesProps","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupOptionDropdownErrorText","onPickupInStoreClickHandler","pickUpMethodSelection","selected","isMobileView","Number","parseInt","onKeyDown","ref","currentLocation","renderSelectedStore","selectedLocationProps","storeSelectorViewProps","_selectedStore$OrgUni","_selectedStore$OrgUni2","_selectedStore$StoreH","_selectedStore$OrgUni3","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","selectedStore","OrgUnitAvailability","OrgUnitLocation","StoreHours","buildStoreHours","contactText","timeText","availabilityText","closedText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreAriaFormatText","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","secondsToTime","OpenFrom","OpenTo","storeNameValue","getTelemetryObject","telemetryPageName","friendlyName","telemetry","orgUnitNumber","deliveryOptions","DeliveryOptions","selectedLocation","Node","_props$data$storeSele4","_data$storeSelectorSt2","_data$storeSelectorSt3","BodyContainerProps","storeResultContainerProps","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","locationsMessage","search","state","spinner","maps","locationsList","noLocationsMessage","terms","storeDetailsModal","bodyWrapperProps","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","isMobile","variant","VariantType","Browser","scrollIntoView","selectedLocationDiv","current","_selectedLocationDiv$","offset","getBoundingClientRect","parent","parentElement","totalHeight","scrollTop","top","clientHeight","MsDyn365","isBrowser","addEventListener","_props$data$storeSele3","preferredStore","update","viewport","isDesktopView","closeDialogue","isSignedIn","_userWithStore$store","userWithStore","parse","localStorage","getItem","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_storeSelectorStateMa2","updatedModuleProps","_objectSpread","toggle","onClosed","updatedHeaderContainerProps","_data$storeSelectorSt","Module","isSearchInProgress","displayMap","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","preferredStoreLocalStorageKey","this","isMapModuleLoaded","value","_readFromToCookie","storeInfo","_unused","_context","storeId","writeToCookie","arguments","_writeToCookie","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","removeItem","setItem","cookieValue","__decorate","computed","observable","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","requestContext","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","trim","query","encodeURI","geolocationApiUrl","app","config","requestUrl","Promise","resolve","script","document","createElement","setAttribute","remove","resourceSets","point","coordinates","body","appendChild","_document","getElementById","currentWindowAPI","mapAPIReady","isMapApiLoaded","url","lang","market","reject","_document2","_document3","type","defer","src","error","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","createObservableDataAction","getGenericAction","inputData","StorePickUpOptionList","super","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","setState","_onSelect","preventDefault","deliveryCode","currentTarget","getAttribute","selectedPickupMode","onChange","_onKeyDown","_storePickupListOptionMenu","render","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","tabIndex","StoreSelectorLocationLines","_scrollIntoView","selectedLocationRef","offsetTop","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","storeCounter","componentDidUpdate","previousProps","componentDidMount","_stores","_sortStores","reaction","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","StoreSelectorLocationLineItemComponent","ItemAvailabilities","onLocationSelected","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","_value$OrgUnitAvailab","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","onToggleListMapViewState","toggleMapViewAttributes","bind","SearchStore","storeSearchAttributes","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","editProps","StoreSelectorFoundLocationsMessage","_ref3","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","isExpandSiteOptionsState","_props$selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","onChangeHandler","_props$selectedStore3","removePreferredStoreHandler","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","SelectedStoreComponent","shouldHideStockStatus","parentClassName","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","tag","Button","pickUpDeliveryOptionButton","pickupModes","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","storeSelectorLocationLineItemComponentActions","deliveryMode","productdeliveryOptions","deliveryOption","pickup","_delivery","title","pickUpButtonClickHandler","StoreSelector","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeLocations","selectedStoreResources","selectedProps","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","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","_setSelectedStore","isSeeAllStoreValue","geoLocate","_updateLocations","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_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","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_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","_storeSelectorStateMa3","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","slots","mapSlot","isMobileDevice","Viewport","isInlineView","isLocatorView","canShowLocationView","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","_getStoreLocationListProps","hasMapSlot","dialogClassName","viewProps","Modal","moduleProps","classname","autoFocus","fade","isOpen","horizontalPosition","verticalPosition","ModalHeader","onEdit","ModalFooter","ModalBody","mapContainerProps","outOfStockThreshold","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","renderDeliveryOptions","renderBody","selectStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","description","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","module","exports","ReactDOM","ArrayBuffer","DataView","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","globalThis","isCallable","isObject","hasOwn","classof","tryToString","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","isPrototypeOf","getPrototypeOf","setPrototypeOf","wellKnownSymbol","uid","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TypeError","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","it","proto","isTypedArray","klass","Function","configurable","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","property","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","toObject","toAbsoluteIndex","lengthOfArrayLike","O","argumentsLength","end","endPos","toPrimitive","$TypeError","argument","prim","BigInt","toPositiveInteger","$RangeError","RangeError","BYTES","toIntegerOrInfinity","ArrayBufferViewCore","$fill","toBigInt","call","uncurryThis","fails","slice","actualValue","count","fill","valueOf","toOffset","toIndexedObject","$set","set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","0","TO_OBJECT_BUG","arrayLike","len","aCallable","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","sort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","Array","a","b","comparefn","x","y","getSortCompare","apply","arraySlice","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG"],"sourceRoot":""}