{"version":3,"file":"static/js/19.74a6b510f60c359efd24.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/map-custom/map-custom.tsx?7be2","webpack://Msdyn365.Commerce.Online/./src/modules/map-custom/map-custom.view.tsx?fdae","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/checkout-delivery-options.view.tsx?3e8c","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/product-specification.view.tsx?ddc2","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-confirmation.tsx?406f","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-error.tsx?e789","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.tsx?8686","webpack://Msdyn365.Commerce.Online/./src/modules/check-in-for-pickup/check-in-for-pickup.view.tsx?bd7a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-history.view.tsx?692d","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/sign-in.view.tsx?048a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n// tslint:disable:no-reference\r\n/// \r\n\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions/dist/types/utilities/full-org-unit-availability';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport classname from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IMapCustomData } from './map-custom.data';\r\nimport { IMapCustomProps, IPushpinOptionsData } from './map-custom.props.autogenerated';\r\n\r\nexport interface IHeader {\r\n headerProps: INodeProps;\r\n heading: React.ReactNode;\r\n}\r\n\r\nexport interface IMapViewProps extends IMapCustomProps {\r\n ModuleProps: IModuleProps;\r\n Header: IHeader;\r\n MapProps: INodeProps;\r\n Map: Microsoft.Maps.Map | undefined;\r\n}\r\n\r\n/**\r\n *\r\n * Map component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass Map extends React.Component> {\r\n @observable public map: Microsoft.Maps.Map | undefined;\r\n private mapRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IMapCustomProps) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n }\r\n } = this.props;\r\n\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.DefaultLanguageId\r\n });\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n () => {\r\n this._initMap();\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n return [\r\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\r\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\r\n this.map\r\n ];\r\n },\r\n async () => {\r\n if (!this.props.data.storeSelectorStateManager.result?.context?.isDialog) {\r\n this._updateMap();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { heading, className },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const displayMap = storeSelectorStateManager?.listMapViewState?.displayMap;\r\n\r\n const viewProps: IMapViewProps = {\r\n ...this.props,\r\n ModuleProps: {\r\n tag: 'div',\r\n moduleProps: this.props,\r\n className: classname('ms-map', { show: displayMap }, className)\r\n },\r\n Header: {\r\n headerProps: { className: 'ms-map__header' },\r\n heading: heading && heading.text && (\r\n \r\n )\r\n },\r\n MapProps: {\r\n tag: 'div',\r\n className: 'ms-map__body',\r\n ref: this.mapRef\r\n },\r\n Map: this.map\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\r\n\r\n private _initMap = () => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\r\n credentials: channel?.BingMapsApiKey,\r\n pushpinAccessible: true\r\n });\r\n }\r\n };\r\n\r\n private _updateMap = () => {\r\n // const pushpinOptions = this.props.config.pushpinOptions;\r\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\r\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n\r\n if (this.map && orgUnitStoreInformation) {\r\n let mapLocation: OrgUnitLocation | undefined;\r\n this.map.entities.clear();\r\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\r\n\r\n orgUnitStoreInformation.map((unitStoreInfo: IFullOrgUnitAvailability, index: number) => {\r\n const storeLocation = unitStoreInfo?.OrgUnitAvailability?.OrgUnitLocation;\r\n\r\n if (storeLocation?.Latitude && storeLocation.Longitude) {\r\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\r\n // tslint:disable-next-line:no-shadowed-variable\r\n const pushpinOptions = {\r\n color: storeLocation.OrgUnitName && storeLocation.OrgUnitName.startsWith('R ') ? '#5f8798' : '#8c7760',\r\n selectionColor: storeLocation.OrgUnitName && storeLocation.OrgUnitName.startsWith('R ') ? '#004f71' : '#542D00',\r\n showIndex: true,\r\n size: 1.5\r\n };\r\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\r\n const pushpin = new Microsoft.Maps.Pushpin(\r\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\r\n options\r\n );\r\n\r\n Microsoft.Maps.Events.addHandler(\r\n pushpin,\r\n 'click',\r\n () =>\r\n storeLocation.OrgUnitNumber &&\r\n storeSelectorStateManager?.setSelectedStoreLocationId(storeLocation.OrgUnitNumber)\r\n );\r\n\r\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\r\n\r\n if (isSelectedLocation) {\r\n mapLocation = storeLocation;\r\n }\r\n }\r\n });\r\n\r\n if (mapLocation) {\r\n const currLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\r\n this.map.setView({ center: currLocation });\r\n } else {\r\n // Create a LocationRect from array of pushpins and set the map view.\r\n this.map.setView({\r\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\r\n });\r\n }\r\n\r\n this.map.setOptions({ pushpinAccessible: true });\r\n this.map?.entities.push(pushpins);\r\n }\r\n };\r\n\r\n private _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\r\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\r\n\r\n const size = pushpinOptions?.size || 1;\r\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\r\n const icon = this._getSvgIcon(size, color, text);\r\n\r\n return {\r\n // fallback if icon doesn't render properly\r\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\r\n icon: icon\r\n };\r\n };\r\n\r\n private _getSvgIcon = (size: number, color?: string, text?: string) => {\r\n return `\r\n \r\n ${\r\n text\r\n ? `${text}`\r\n : ''\r\n }\r\n `;\r\n };\r\n}\r\n\r\nexport default Map;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeader, IMapViewProps } from './map-custom';\r\n\r\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\r\n\r\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\r\n \r\n {Header && }\r\n \r\n \r\n);\r\n\r\nexport default MapView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport get from 'lodash/get';\r\n\r\nimport { ICheckoutDeliveryOption, ICheckoutDeliveryOptionsViewProps, ICheckoutDeliveryOptionsList } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-delivery-options/./checkout-delivery-options';\r\nimport { ICheckoutDeliveryOptionsProps } from '../definition-extensions/checkout-delivery-options.ext.props.autogenerated';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n\r\ninterface ICheckoutDeliveryData extends ICheckoutDeliveryOptionsList {\r\n deliveryOptions: DeliveryOption[];\r\n}\r\n\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list, deliveryOptions }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n\r\n // deliveryOptions sorted by ShippingChargeAmount\r\n const sortedDeliveryOptions = deliveryOptions.sort((a, b) => {\r\n return get(a, 'ShippingChargeAmount', 0) - get(b, 'ShippingChargeAmount', 0);\r\n });\r\n\r\n // console.log(sortedDeliveryOptions);\r\n return (\r\n \r\n {sortedDeliveryOptions.map((deliveryOption: DeliveryOption) => {\r\n const sortedDeliveryOption = list.find(deliveryOptionEdit => deliveryOptionEdit.code === deliveryOption.Code);\r\n if (sortedDeliveryOption !== undefined) {\r\n return (\r\n \r\n {sortedDeliveryOption.radioButton}\r\n {sortedDeliveryOption.description}\r\n {sortedDeliveryOption.price}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC> = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n checkoutErrorRef,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionsData,\r\n deliveryOptionSelected,\r\n alert,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton\r\n } = props;\r\n const extraTextField = props.config.paragraph;\r\n const extraText = extraTextField && ;\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {extraText}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && alert}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image, IImageData } from '@msdyn365-commerce/core';\r\n// import { StockCountJournalsDataActions } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n IProductSpecificationProps as IProductSpecificationExtensionProps,\r\n IProductSpecificationConfig as IProductSpecificationExtensionConfig,\r\n IReassuranceItemsData as IReassuranceItemsExtensionData\r\n} from '../definition-extensions/product-specification.ext.props.autogenerated';\r\nimport * as React from 'react';\r\n// import axios from 'axios';\r\ninterface NutritionalData {\r\n label: string;\r\n qty1Label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n subcategory: NutritionalSubcategoryData[];\r\n}\r\n\r\ninterface NutritionalSubcategoryData {\r\n label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n}\r\n\r\n/* interface ProductLabel {\r\n label: string;\r\n imgLink: string;\r\n} */\r\n\r\ninterface ReassuranceShowType {\r\n title: string;\r\n description: string;\r\n image: IImageData;\r\n}\r\n\r\nconst ProductSpecificationView: React.FC &\r\n IProductSpecificationExtensionConfig> = props => {\r\n const { ProductSpecification, productSpecificationResult } = props;\r\n const tags = ['Gluten free', 'Palm oil free', 'Vegan friendly', 'Light'];\r\n const specificationsList = ['Product description', /* 'Nutritional Values', */ 'Nutritional Values JSON', 'Ingredients'];\r\n const ingredientsAllAttributesList = ['Ingredients', 'Ingredients 2', 'Ingredients 3'];\r\n const labels = props.resources;\r\n // @ts-ignore\r\n const pTags = [];\r\n // @ts-ignore\r\n const pSpecifications = [];\r\n // @ts-ignore\r\n const ingredientsArray = [];\r\n var ingredientsString = '';\r\n\r\n const temporaryDisabled = true;\r\n\r\n const reassuranceItems: ReassuranceShowType[] =\r\n props?.config?.reassuranceItems?.map((reassurance: IReassuranceItemsExtensionData) => ({\r\n title: reassurance.reassuranceTitle,\r\n description: reassurance.reassuranceDescription,\r\n image: reassurance.reassuranceImage\r\n })) ?? [];\r\n\r\n const isProductAccordionOpened = props?.config?.productDescriptionAccordionOpened ?? false;\r\n\r\n const [accordionsState, setAccordionsState] = React.useState(isProductAccordionOpened ? 'Productdescription' : '');\r\n // const [fetchingLabels, setFetchingLabels] = React.useState(false);\r\n /* const [productLabels, setProductLabels] = React.useState(\r\n [{\r\n label: labels['product_specification_title_emea_label'] ?? \"EMEA label\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_emea_warnings'] ?? \"EMEA warnings\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_fda_label'] ?? \"FDA label\",\r\n imgLink: ''\r\n }]) */\r\n\r\n productSpecificationResult?.map(row => {\r\n const itemHtml = row?.props.cellData.props.dangerouslySetInnerHTML;\r\n if (row !== null && tags.includes(row.props.productName) && itemHtml !== undefined && itemHtml.__html === 'Yes') {\r\n pTags.push(row);\r\n }\r\n });\r\n productSpecificationResult?.map(row => {\r\n if (\r\n row !== null &&\r\n specificationsList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n pSpecifications.push(row);\r\n }\r\n if (\r\n row !== null &&\r\n ingredientsAllAttributesList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n ingredientsArray.push(row);\r\n }\r\n });\r\n // @ts-ignore\r\n const productSku = props.data.product.result?.ItemId;\r\n // @ts-ignore\r\n const productPrimaryImageUrl = props.data.product.result?.PrimaryImageUrl;\r\n\r\n // @ts-ignore\r\n ingredientsArray.map(row => {\r\n ingredientsString += row.props.cellData.props.dangerouslySetInnerHTML.__html || '';\r\n });\r\n\r\n const accordionOnClick = (accordion: string): void => {\r\n const accStates = accordionsState.split(',');\r\n if (accStates.includes(accordion)) {\r\n // setAccordionsState(accStates.filter(acc=>acc!==accordion).join(','));\r\n setAccordionsState('');\r\n } else {\r\n // setAccordionsState([...accStates, accordion].join(','));\r\n setAccordionsState(accordion);\r\n }\r\n };\r\n\r\n const isAccordionExpanded = (accordion: string): boolean => {\r\n const accStates = accordionsState.split(',');\r\n return accStates.includes(accordion);\r\n };\r\n\r\n const _renderNutritionalValues = (jData: any): JSX.Element => {\r\n // const jData = JSON.parse(data);\r\n return (\r\n
\r\n {jData.map((row: NutritionalData) => (\r\n <>\r\n
\r\n
{labels[row.label] ?? ''}
\r\n
\r\n
{labels[row.qty1Label] ?? ''}
\r\n
{row.qty1Value ?? ''}
\r\n
{row.qty1Unit ?? ''}
\r\n
\r\n {row.subcategory &&\r\n row.subcategory.map((subRow: NutritionalSubcategoryData) => (\r\n
\r\n
{labels[subRow.label] ?? ''}
\r\n
\r\n
{subRow.qty1Value ?? ''}
\r\n
{subRow.qty1Unit ?? ''}
\r\n
\r\n ))}\r\n \r\n ))}\r\n
\r\n );\r\n };\r\n\r\n /* const _renderProductLabels = (productLabels: ProductLabel[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_product_labels'] ?? 'Product labels';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {productLabels.filter(label => label.imgLink !== '').map((row: ProductLabel) => (\r\n
\r\n
\r\n {row.label}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n } */\r\n\r\n const _renderReassurance = (reassuranceItems: ReassuranceShowType[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_reassurance'] ?? 'Shipments and Returns';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {reassuranceItems.map((row: ReassuranceShowType, index: number) => {\r\n const isLast = index === reassuranceItems.length - 1;\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {row.title}\r\n {row.description}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n React.useEffect(() => {\r\n /* if (!fetchingLabels) {\r\n setFetchingLabels(true);\r\n _getProductLabels(productSku, productPrimaryImageUrl).then((response: string[]) => {\r\n const newProductLabels = [...productLabels];\r\n productLabels.forEach((_, index: number) => {\r\n newProductLabels[index].imgLink = response[index];\r\n });\r\n setProductLabels(newProductLabels);\r\n });\r\n } */\r\n });\r\n\r\n if (temporaryDisabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {props.title}\r\n {pSpecifications.length ? (\r\n \r\n {// @ts-ignore\r\n pSpecifications.map(row => {\r\n const title = row.props.productName;\r\n const titleId = title.replace(/\\s+/g, '');\r\n const titleLabel = labels[`product_specification_title_${title.replace(/\\s+/g, '_').toLowerCase()}`] ?? title;\r\n const ingredientsFinalString = ingredientsString;\r\n\r\n let accordionContent;\r\n if (title === 'Ingredients' && ingredientsFinalString) {\r\n accordionContent = ingredientsFinalString;\r\n } else if (title === 'Nutritional Values JSON') {\r\n try {\r\n const jData = JSON.parse(row.props.cellData.props.dangerouslySetInnerHTML.__html);\r\n accordionContent = _renderNutritionalValues(jData);\r\n } catch (e) {\r\n return;\r\n }\r\n } else if (row.props.cellData.props.dangerouslySetInnerHTML.__html) {\r\n accordionContent = row.props.cellData.props.dangerouslySetInnerHTML.__html;\r\n }\r\n\r\n if (!accordionContent) return;\r\n\r\n return (\r\n // tslint:disable-next-line:jsx-key\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{accordionContent}
\r\n \r\n );\r\n })}\r\n {reassuranceItems.length > 0 ? _renderReassurance(reassuranceItems, labels) : null}\r\n {/* {productLabels.filter(label => label.imgLink !== '').length > 0 ? _renderProductLabels(productLabels, labels) : null} */}\r\n {/* { _renderSocialShare(props.slots && props.slots?.socialShare)} */}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n};\r\n\r\n/* const _getProductLabels = async (productId?: string, baseImagePath?: string): Promise => {\r\n if (productId && baseImagePath) {\r\n const results: string[] = [];\r\n const imgBaseUrlArray = decodeURIComponent(baseImagePath).split('/');\r\n imgBaseUrlArray.pop();\r\n\r\n\r\n const imgUrls = [\r\n [...imgBaseUrlArray, `${productId}_000_006.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_007.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_008.jpg`].join('/'),\r\n ];\r\n \r\n for (let i=0; i<3; i=i+1) {\r\n try {\r\n const response = await axios.get(imgUrls[i]);\r\n results.push(response?.status === 200 ? imgUrls[i] : '');\r\n } catch (e) {\r\n results.push('');\r\n }\r\n }\r\n return results; \r\n }\r\n return ['', '', ''];\r\n} */\r\n\r\n/* const _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n}; */\r\n\r\nexport default ProductSpecificationView;\r\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 { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport QRCode from 'qrcode.react';\nimport * as React from 'react';\n\n/**\n * CheckInConfirmation component Properties.\n */\nexport interface ICheckInConfirmationProps {\n /**\n * The confirmation text to show.\n */\n confirmationText: string;\n\n /**\n * Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n */\n shouldShowQrCode: boolean;\n\n /**\n * The label shows for channel reference ID.\n */\n channelReferenceIdLabel: string;\n\n /**\n * The channel reference ID to show. When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n */\n channelReferenceId?: string;\n}\n\n/**\n * CheckInConfirmation component for showing confirmation information after check-in succeed.\n * @param confirmationProps - The confirmation properties.\n * @param confirmationProps.confirmationText - The confirmation text.\n * @param confirmationProps.shouldShowQrCode - Should the order confirmation number shown as QR code or not.\n * If false, the order confirmation number (channel reference ID) will be shown as text.\n * @param confirmationProps.channelReferenceIdLabel - The label shows for channel reference ID.\n * @param confirmationProps.channelReferenceId - The channel reference ID to show.\n * When shouldShowQrCode is true, the ID is shown as QR code, otherwise it is shown as text.\n * @returns The check-in confirmation component.\n */\nexport const CheckInConfirmationComponent: React.FC = ({\n confirmationText,\n shouldShowQrCode,\n channelReferenceIdLabel,\n channelReferenceId\n}) => {\n return (\n
\n

{confirmationText}

\n {channelReferenceId && (\n

\n {`${channelReferenceIdLabel} ${channelReferenceId}`}\n

\n )}\n {channelReferenceId && shouldShowQrCode && (\n \n \n \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 React from 'react';\n\n/**\n * Check-in error properties.\n */\nexport interface ICheckInErrorProps {\n errorMessage?: string;\n}\n\n/**\n * Check-in error.\n * @param errorProps - The error properties.\n * @param errorProps.errorMessage - The error message to show.\n * @returns The alert element showing check-in errors.\n */\nexport const CheckInErrorComponent: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\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 { IDictionary } from '@msdyn365-commerce/core';\nimport { CommerceProperty, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { CheckInConfirmationComponent } from './check-in-confirmation';\nimport { CheckInErrorComponent } from './check-in-error';\nimport { IAdditionalInformationKeysData, ICheckInForPickupConfig, ICheckInForPickupProps } from './check-in-for-pickup.props.autogenerated';\n\n/**\n * The interface representing a piece of additional information data.\n */\ninterface IAdditionalInformation {\n formKey: IAdditionalInformationKeysData;\n value: string;\n}\n\n/**\n * The state for check-in view.\n */\nexport interface ICheckInViewState {\n /**\n * If the module has header error to show.\n */\n isHeaderError: boolean;\n\n /**\n * If the customer has checked in.\n */\n isCheckedIn: boolean;\n\n /**\n * Additional information to capture.\n */\n additionalInformation: IDictionary[];\n}\n\n/**\n * The properties for check-in view.\n */\nexport interface ICheckInViewProps extends ICheckInForPickupProps {\n headerError: React.ReactNode;\n confirmationComponent: React.ReactNode;\n viewState: ICheckInViewState;\n additionalInformationValues: string[];\n checkInForOrderPickup(additionalInformation?: IAdditionalInformation[]): Promise;\n}\n\n/**\n * The state of the CheckInForPickup module.\n */\nexport interface ICheckInForPickupState {\n /**\n * The header error message.\n */\n headerErrorMessage: string;\n\n /**\n * If the customer has checked in successfully.\n */\n isCheckedIn: boolean;\n}\n\n/**\n *\n * CheckIn component.\n * @extends {React.Component, ICheckInForPickupState>}\n */\nclass CheckInForPickup extends React.Component, ICheckInForPickupState> {\n public constructor(props: ICheckInForPickupProps) {\n super(props);\n this.state = {\n headerErrorMessage: '',\n isCheckedIn: false\n };\n }\n\n public render(): JSX.Element | null {\n const isHeaderError: boolean = this.state.headerErrorMessage !== '';\n\n const viewProps = {\n ...this.props,\n headerError: ,\n confirmationComponent: (\n \n ),\n checkInForOrderPickup: this.checkInForOrderPickup,\n additionalInformationValues: this.props.config.additionalInformationKeys\n ? this.props.config.additionalInformationKeys.map(() => {\n return {};\n })\n : undefined,\n viewState: {\n isHeaderError,\n isCheckedIn: this.state.isCheckedIn\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public shouldComponentUpdate(nextProps: ICheckInForPickupProps, nextState: ICheckInForPickupState): boolean {\n if (\n this.props.config.additionalInformationHeading !== nextProps.config.additionalInformationHeading ||\n this.props.config.confirmationText !== nextProps.config.confirmationText\n ) {\n return true;\n }\n if (this.state.headerErrorMessage !== nextState.headerErrorMessage || this.state.isCheckedIn !== nextState.isCheckedIn) {\n return true;\n }\n return false;\n }\n\n public async componentDidMount(): Promise {\n await this._onInit();\n }\n\n /**\n * The async callback for submitting check-in.\n * @param additionalInformationList - The optional additional information captured.\n * @returns The async result.\n */\n public checkInForOrderPickup = async (additionalInformationList?: IAdditionalInformation[]): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query!.channelId, 10);\n const channelReferenceId: string = this.props.context.request.query!.channelReferenceId;\n const packingSlipId: string = this.props.context.request.query!.packingSlipId;\n\n const additionalInformationToSubmit: { formKey: string; value: string }[] | undefined = additionalInformationList?.map(\n additionalInformationKeyValuePair => {\n return {\n formKey: additionalInformationKeyValuePair.formKey.resourceId ?? '',\n value: additionalInformationKeyValuePair.value\n };\n }\n );\n const extensionPropertyList: CommerceProperty[] = [];\n if (!ObjectExtensions.isNullOrUndefined(additionalInformationToSubmit)) {\n for (const additionalInformation of additionalInformationToSubmit) {\n extensionPropertyList.push({\n Key: additionalInformation.formKey,\n Value: {\n StringValue: additionalInformation.value\n }\n });\n }\n }\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId,\n extensionPropertyList\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n return Promise.resolve();\n };\n\n /**\n * The action performed on module initialization.\n * @returns The async result.\n */\n private readonly _onInit = async (): Promise => {\n const channelId: number = Number.parseInt(this.props.context.request.query?.channelId ?? '', 10);\n const channelReferenceId: string | undefined = this.props.context.request.query?.channelReferenceId;\n const packingSlipId: string | undefined = this.props.context.request.query?.packingSlipId;\n if (Number.isNaN(channelId) || !channelReferenceId || !packingSlipId) {\n // No error message shown in editor mode.\n if (this.props.context.request.params.isEditor) {\n return Promise.resolve();\n } else if (this.props.context.request.params.isPreview) {\n this.setState({ headerErrorMessage: this.props.resources.requiredParameterMissingErrorMessage });\n } else {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage });\n }\n this.props.context.telemetry.error(\n 'One or more required URL parameters are missing. ' +\n 'Please make sure you have pass in channelId, channelReferenceId and packingSlipId through URL parameter.'\n );\n return Promise.resolve();\n }\n\n const { additionalInformationKeys } = this.props.config;\n\n const hasAdditionalInformation: boolean = ArrayExtensions.hasElements(additionalInformationKeys);\n\n // Call check-in-for-pickup directly if no additional information to capture.\n if (!hasAdditionalInformation) {\n try {\n await SalesOrdersDataActions.checkInForOrderPickupAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n channelId,\n packingSlipId,\n channelReferenceId\n );\n } catch (error) {\n this.setState({ headerErrorMessage: this.props.resources.genericErrorMessage, isCheckedIn: false });\n this.props.telemetry.error(error);\n return Promise.resolve();\n }\n this.setState({ headerErrorMessage: '', isCheckedIn: true });\n }\n return Promise.resolve();\n };\n}\n\nexport default CheckInForPickup;\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 { FormBuilder } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckInViewProps } from './check-in-for-pickup';\n\n/**\n * The check-in view for submitting check-in, capturing additional information, and showing check-in confirmation.\n * @param props - The check-in view properties.\n * @returns The check-in view as a react component.\n */\nconst CheckInViewComponent: React.FC = (props: ICheckInViewProps) => {\n const { headerError, checkInForOrderPickup, confirmationComponent, viewState } = props;\n return (\n <>\n {viewState.isHeaderError && headerError}\n {!viewState.isHeaderError && ArrayExtensions.hasElements(props.config.additionalInformationKeys) && (\n \n )}\n {!viewState.isHeaderError &&\n !ArrayExtensions.hasElements(props.config.additionalInformationKeys) &&\n viewState.isCheckedIn &&\n confirmationComponent}\n \n );\n};\n\nexport default CheckInViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n
\n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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

{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, 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 let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n const locationListProps = this._getStoreLocationListProps(\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 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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n
\n {orderInfomation.placedBy && {orderInfomation.placedBy}}\n
{orderInfomation && }
\n
\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n
\n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
\n
\n or\n
\n {B2BAccount(signInB2BAccount)}\n
\n
\n
\n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
\n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

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

{resources.currentLocation}

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

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n
\n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n"],"names":["Map","React","constructor","props","super","mapRef","handleHeadingChange","event","this","config","heading","text","target","value","_initMap","context","actionContext","requestContext","channel","data","storeSelectorStateManager","result","isMapApiLoaded","map","Microsoft","Maps","current","credentials","BingMapsApiKey","pushpinAccessible","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","_this$map","mapLocation","entities","clear","pushpins","unitStoreInfo","index","_unitStoreInfo$OrgUni","storeLocation","OrgUnitAvailability","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","pushpinOptions","color","OrgUnitName","startsWith","selectionColor","showIndex","size","options","_getPushpinOptions","pushpin","Pushpin","Location","Events","addHandler","setSelectedStoreLocationId","unshift","push","currLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","toString","undefined","icon","_getSvgIcon","componentDidMount","telemetry","BingMapsEnabled","reaction","_this$props$data$stor2","setMapModuleLoaded","_this$props$data$stor3","_this$props$data$stor4","loadMapApi","_this$props$data$stor5","_this$props$context","_this$props$context2","key","lang","ChannelCountryRegionISOCode","market","DefaultLanguageId","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$stor8","async","_this$props$data$stor9","isDialog","error","render","_storeSelectorStateMa2","className","displayMap","listMapViewState","viewProps","_objectSpread","ModuleProps","tag","moduleProps","classname","show","Header","headerProps","Msdyn365","Object","assign","editProps","onEdit","request","MapProps","ref","renderView","__decorate","observable","observer","MapHeader","_ref","Node","_ref2","Module","DeliveryOptionList","DeliveryOptionsList","list","deliveryOptions","length","sortedDeliveryOptions","sort","a","b","get","deliveryOption","sortedDeliveryOption","find","deliveryOptionEdit","code","Code","DeliveryOption","radioButton","description","price","DeliveryOptionSelected","CheckoutDeliveryOptions","checkoutErrorRef","viewState","deliveryOptionsData","deliveryOptionSelected","alert","waiting","saveButton","editButton","cancelButton","extraTextField","paragraph","extraText","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","_props$config$reassur","_props$config","_props$config$product","_props$config2","_props$data$product$r","_props$data$product$r2","ProductSpecification","productSpecificationResult","tags","specificationsList","ingredientsAllAttributesList","pTags","resources","pSpecifications","ingredientsArray","reassuranceItems","reassurance","title","reassuranceTitle","reassuranceDescription","image","reassuranceImage","isProductAccordionOpened","productDescriptionAccordionOpened","accordionsState","setAccordionsState","row","itemHtml","cellData","dangerouslySetInnerHTML","includes","productName","__html","product","ItemId","PrimaryImageUrl","AccountProfileEdit","moduleClassName","onTextBoxChange","id","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","isShowLoading","accountProfileEdit","classnames","loading","modal","Modal","isOpen","modalBody","ModalBody","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","e","document","createElement","innerHTML","childNodes","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","AccountProfileEditItem","AccountProfileEditLoading","_ref3","item","button","LocalAccount","disabled","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","errorClassName","role","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","CheckInConfirmationComponent","confirmationText","shouldShowQrCode","channelReferenceIdLabel","channelReferenceId","QRCode","CheckInErrorComponent","CheckInForPickup","checkInForOrderPickup","channelId","query","packingSlipId","additionalInformationToSubmit","additionalInformationList","additionalInformationKeyValuePair","_additionalInformatio","formKey","resourceId","extensionPropertyList","ObjectExtensions","isNullOrUndefined","additionalInformation","Key","Value","StringValue","SalesOrdersDataActions","callerContext","queryResultSettings","setState","headerErrorMessage","genericErrorMessage","isCheckedIn","Promise","resolve","_this$props$context$r","_this$props$context$r2","_this$props$context$r3","_this$props$context$r4","params","isEditor","isPreview","requiredParameterMissingErrorMessage","additionalInformationKeys","ArrayExtensions","hasElements","_this$props$context$r5","isHeaderError","headerError","confirmationComponent","defaultConfirmationText","confirmationIdLabel","additionalInformationValues","additionalInformationHeading","_props$config$additio","FormBuilder","additionalInformationDefaultHeading","submitButtonText","additionalInformationSubmitButtonText","keys","requiredValueMissingErrorMessage","onSubmit","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","preventDefault","deliveryCode","currentTarget","getAttribute","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","delivery","Description","tabIndex","onKeyDown","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","location","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","pickupDeliveryOptionErrorMessage","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","previousProps","locations","_stores","_sortStores","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","filter","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","bind","TelemetryConstant","SearchStore","storeSearchAttributes","contentAction","etext","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","name","autoComplete","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","link","onTextChange","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","addEventListener","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","buildDistanceString","distance","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","matchDeliveryOptions","productdeliveryOptions","pickup","_delivery","hideStockStatus","storeName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","pickupInStoreAriaLabel","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","setError","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","pickUpButtonClickHandler","renderPickupModes","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","autoSuggestManager","loadModule","callback","countryCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","setPreferredStoreLocation","isConsentGiven","clearPreferredStore","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","showMapViewLink","setOrgUnitStoreInformation","catch","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","autoSuggestionEnabled","isAutoSuggestionEnabled","locale","_this$props$context$a","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isInlineView","isLocatorView","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","autoFocus","fade","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","Heading","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","content","tileListView","tileItem","keyIndex","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","placedBy","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","header","emptyMessage","backToShoppingLink","table","moreButton","SignInLoading","SignInButton","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","disclaimer","signInButton","socialAccounts","SocialAccount","href","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","isNullOrEmpty","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","Browser","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","MsDyn365","isBrowser","viewport","_data$storeSelectorSt"],"sourceRoot":""}