{"version":3,"file":"static/js/58.fc4aec71b4a44466e035.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Citta2.0/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Citta2.0/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Citta2.0/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Citta2.0/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Citta2.0/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Citta2.0/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Citta2.0/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Citta2.0/./src/modules/store-selector/store-selector.tsx?e416","webpack://Citta2.0/./src/modules/store-selector/store-selector.view.tsx?71a6"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

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

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n"],"names":["PickUpOptionList","React","constructor","props","super","eventsToBeBind","handleDocumentClick","event","htmlElement","target","this","_pickupListOptionButton","current","contains","_pickupListOptionMenu","setState","expandSiteOptions","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","length","onChange","_renderDeliveryOptions","bind","state","componentDidMount","window","addEventListener","componentWillUnmount","removeEventListener","render","pickupListOptionMenuText","pickupmodeList","className","onClick","ref","role","map","delivery","key","Code","tabIndex","Description","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","undefined","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","resources","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","location","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","index","preferredStoreLocationId","isPreferredStoreEnabled","telemetryContent","productPickUpOptionList","shouldShowIndex","storeName","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","ArrayExtensions","hasElements","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","isPreferredStore","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","attributes","getTelemetryAttributes","contentAction","etext","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","isError","setError","contactInfoHeader","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","title","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","availabilityInfoHeader","currentLocation","Object","assign","pickUpButtonClickHandler","renderPickupModes","filteredPickupMode","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","pickupDeliveryOptionErrorMessage","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","classnames","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreHours","ItemAvailabilities","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","value","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_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","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","id","isMapDisabled","showAllStores","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","onKeyUp","color","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","requestContext","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeDetailsMain","tag","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","data","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","context","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","config","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","telemetry","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","error","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","getTelemetryObject","request","telemetryPageName","friendlyName","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","viewProps","ModuleProps","Modal","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","text","onEdit","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","Node","renderDeliveryOptions","Module","renderBody"],"sourceRoot":""}