{"version":3,"file":"static/js/d50b0dd2819ff2ebcb0a.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online.Memx/./src/themes/memoryexpress/views/store-selector.view.tsx?8ccc","webpack://Msdyn365.Commerce.Online.Memx/./lib/store-selector/module-registration.js?8817","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://Msdyn365.Commerce.Online.Memx/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online.Memx/external var \"ReactDOM\"?853b"],"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 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\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 | 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 = 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 ${locations.length.toString()}`\r\n )\r\n : storeCountMessage\r\n .replace(\r\n '{count}',\r\n `${locations.length.toString()}`\r\n )\r\n .replace(\r\n '{radius}',\r\n `${searchRadius.toString()}`\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 ${displayTime.startDayShort}`)\r\n .replace(\r\n '{endDay}',\r\n `${displayTime.endDayShort}`\r\n )\r\n : storeHoursDayString.replace(\r\n '{startDay}',\r\n `${displayTime.startDayShort}`\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
\r\n {storeHoursList?.map(displayTime => (\r\n
\r\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\r\n
{displayTime.timeRange}
\r\n
\r\n ))}\r\n
\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
\r\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\r\n
\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 pickUpStatesProps,\r\n selectStoreText,\r\n pickUpMethodLabel,\r\n pickUpOptionPlaceholder,\r\n pickupOptionDropdownError,\r\n pickupButtonAriaLabel,\r\n productPickUpOptionList,\r\n storePickUpOptionList\r\n } = props;\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\r\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\r\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\r\n const [isError, setError] = React.useState(false);\r\n\r\n /**\r\n * Method to handle the store pickup option change.\r\n * @param event - Change Event.\r\n */\r\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\r\n event.preventDefault();\r\n selectStorePickUpOption(event.currentTarget.value);\r\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\r\n toggleDropdown(false);\r\n setError(false);\r\n }, []);\r\n\r\n /**\r\n * Method to render store location line pick up button.\r\n * @param filteredDeliveryMode - Filtered Delivery Mode.\r\n * @returns JSX Element.\r\n */\r\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\r\n return filteredDeliveryMode !== undefined ? (\r\n
\r\n \r\n {filteredDeliveryMode.Description}\r\n \r\n
\r\n ) : null;\r\n };\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 if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\r\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\r\n } else {\r\n toggleDropdown(false);\r\n setError(true);\r\n }\r\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\r\n\r\n const handleDropdownToggle = React.useCallback(() => {\r\n toggleDropdown(!isDropdownOpen);\r\n setError(false);\r\n }, [isDropdownOpen]);\r\n\r\n const filterDeliveryOption = deliveryOptionList.find(\r\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\r\n );\r\n\r\n const pickupInStoreButtonText: string = selectStoreText;\r\n const filteredDeliveryMode: DeliveryOption | undefined =\r\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\r\n\r\n return (\r\n \r\n
{pickUpMethodLabel}
\r\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\r\n
\r\n \r\n {currentStorePickUpOption}\r\n \r\n
    \r\n {deliveryOptionList.map((delivery: DeliveryOption) => (\r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n ))}\r\n
\r\n
{pickupOptionDropdownError}
\r\n
\r\n ) : (\r\n renderLocationLinePickupButton(filteredDeliveryMode)\r\n )}\r\n \r\n \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 \r\n {pickupInStoreButtonText}\r\n \r\n
\r\n {pickupDeliveryOptionErrorMessage}\r\n
\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\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 = () => {\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) => {\r\n event.stopPropagation();\r\n locationLineItem.handlers.onRemovePreferredStore();\r\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\r\n };\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
\r\n
\r\n {storeLocatorView && {index}}\r\n {storeName}\r\n {distanceAsString ? {distanceAsString} : false}\r\n
\r\n
\r\n
\r\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\r\n {stockText &&

{stockText}

}\r\n
\r\n )}\r\n {isPreferredStoreEnabled &&\r\n (isPreferredStore ? (\r\n \r\n {resources.preferredStoreText}\r\n \r\n ) : (\r\n \r\n {resources.setAsPreferredStoreText}\r\n \r\n ))}\r\n
\r\n
\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,\r\n selectedLocationReference: React.RefObject\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 \r\n ) : (\r\n \r\n );\r\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\r\n\r\n return (\r\n \r\n \r\n {renderStoreLocationLineItem(location, props)}\r\n \r\n {!storeLocatorView &&\r\n (isCurrentLocation ? (\r\n

{resources.currentLocation}

\r\n ) : (\r\n pickUpMethodSelection\r\n ))}\r\n \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,\r\n selectedLocationReference: React.RefObject\r\n) => {\r\n return (\r\n \r\n {props.locationListProps?.map((store, index) => {\r\n return renderStoreLocation(store, index, props, selectedLocationReference);\r\n })}\r\n \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\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 \r\n ) : (\r\n selectedLocation && (\r\n \r\n )\r\n );\r\n\r\n return (\r\n \r\n \r\n {storeDetailsCloseButton}\r\n {storeName}\r\n {storeDistance}\r\n \r\n \r\n
\r\n

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\r\n {stockStatus &&

{stockStatus}

}\r\n
\r\n )}\r\n
\r\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\r\n {canSelectPickUpMethod}\r\n
\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> = 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(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).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 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 if (!isDesktopView || !isDesktopPort) {\r\n return (\r\n \r\n {HeaderProps}\r\n \r\n \r\n {locationsMessage && (\r\n \r\n )}\r\n {search}\r\n \r\n \r\n {state.isSearchInProgress ? (\r\n spinner\r\n ) : (\r\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\r\n )}\r\n \r\n {maps}\r\n \r\n {selectedLocation && renderSelectedStore(selectedLocation, props)}\r\n \r\n \r\n \r\n \r\n {terms}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {HeaderProps}\r\n \r\n \r\n {locationsMessage && (\r\n \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 \r\n \r\n {maps}\r\n \r\n \r\n {terms}\r\n \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|memoryexpress|views|store-selector'] = {\n c: () => require('partner/themes/memoryexpress/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, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n \n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

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

{resources.currentLocation}

\n ) : (\n pickUpMethodSelection\n ))}\n \n );\n};\n\n/**\n * Render Store Locations.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocations = (\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n) => {\n return (\n \n {props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })}\n \n );\n};\n\n/**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n};\n\n/**\n * Render the selected store.\n * @param selectedLocationProps -- Selected store view props.\n * @param storeSelectorViewProps -- Store selector view props.\n * @returns -- HTML.\n */\nexport const renderSelectedStore = (\n selectedLocationProps: ISelectedStoreViewProps,\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps\n): JSX.Element => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton,\n selectedStore\n } = selectedLocationProps;\n\n const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\n const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\n ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\n : [];\n const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\n const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\n const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\n '{StoreName}',\n storeNameValue ?? ''\n );\n const telemetryContent = getTelemetryObject(\n storeSelectorViewProps.context.request.telemetryPageName!,\n storeSelectorViewProps.friendlyName,\n storeSelectorViewProps.telemetry\n );\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\n const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\n const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\n const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\n const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\n const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\n const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\n };\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n selectedLocation && (\n \n )\n );\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n
\n

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["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","pickUpStatesProps","selectStoreText","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","productPickUpOptionList","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","event","preventDefault","currentTarget","value","dataset","description","onClickHandler","StringExtensions","isNullOrEmpty","undefined","state","filteredPickupMode","onSelected","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","onClick","classnames","role","Description","renderLocationLinePickupButton","PickUpButtonComponent","pickupInStoreAriaLabel","pickupDeliveryOptionErrorMessage","attributes","Object","assign","renderStoreLocationLineItem","locationLineItem","hideStockStatus","index","isInStock","preferredStoreLocationId","isPreferredStoreEnabled","stockStatusLabel","storeLocatorView","telemetryContent","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","isLocationDisabled","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","storeHoursHeader","availabilityInfoHeader","preferredStoreAriaLabel","async","_props$data$storeSele","stopPropagation","onRemovePreferredStore","data","storeSelectorStateManager","result","setSelectedStoreLocationId","preferredStoreText","setAsPreferredStoreTextAriaLabel","onSetPreferredStoreClickHandler","onSetAsPreferredStore","setAsPreferredStoreText","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","show","listMapViewState","displayList","locationListProps","store","renderStoreLocation","isCurrentLocation","orgUnitLocation","selectedStoreLocationId","canSelectLocation","selectLocationAriaLabelFormat","selectLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","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","context","request","telemetryPageName","friendlyName","telemetry","orgUnitNumber","deliveryOptions","DeliveryOptions","selectedLocation","Node","_data$storeSelectorSt2","_data$storeSelectorSt3","BodyContainerProps","storeResultContainerProps","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","locationsMessage","search","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","window","addEventListener","viewport","_data$storeSelectorSt","Module","isSearchInProgress","displayMap","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","_objectSpread","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}