{"version":3,"file":"static/js/9.9adda524151ca681fd97.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/instrument-block/components/links.tsx?67ee","webpack://Msdyn365.Commerce.Online/./src/modules/instrument-block/instrument-block.tsx?6acc","webpack://Msdyn365.Commerce.Online/./src/modules/instrument-block/instrument-block.view.tsx?4b1d","webpack://Msdyn365.Commerce.Online/./src/themes/connselmer2/views/components/price.component.tsx?a3d7","webpack://Msdyn365.Commerce.Online/./src/themes/connselmer/views/components/price.component.tsx?7cef","webpack://Msdyn365.Commerce.Online/./src/themes/leblanc/views/components/price.component.tsx?1d26","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express/checkout-express.view.tsx?134b","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?a0c9","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-small-components.tsx?a27a","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-line-item.components.tsx?0d4f","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-lines.tsx?3695","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-payment-option-list.tsx?d919","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/components/distributor-selector-search-form.tsx?6f95","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/distributor-selector.tsx?f21b","webpack://Msdyn365.Commerce.Online/./src/modules/distributor-selector/distributor-selector.view.tsx?0f28","webpack://Msdyn365.Commerce.Online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-header.component.tsx?3609","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.categorysuggest.tsx?6bcf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.mobile.empty.tsx?ff32","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.form.tsx?d41a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.keywordsuggest.tsx?2724","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/search.productsuggest.tsx?6616","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search.view.tsx?bfa7","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","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-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/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/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"sourcesContent":["import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../instrument-block.props.autogenerated';\r\n\r\nexport interface IInstrumentLinks {\r\n links?: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n}\r\n\r\nexport class InstrumentLinks extends React.PureComponent{\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (link_data: ILinksData[]|undefined): Msdyn365.ILinksData[] | null => {\r\n if (!link_data || link_data.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n link_data.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: \"link\",\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n }\r\n}\r\nexport default InstrumentLinks;","import * as React from 'react';\r\nimport {IInstrumentBlockProps, IInstrumentBlockConfig, IColumnsData} from './instrument-block.props.autogenerated';\r\nimport * as Msdyn365 from \"@msdyn365-commerce/core\";\r\nimport classnames from \"classnames\";\r\nimport {getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent} from \"@msdyn365-commerce-modules/utilities\";\r\nimport LinksComponent from './components/links';\r\n\r\n/* Interfaces */\r\nexport interface IInstrumentBlockViewProps extends IInstrumentBlockProps<{}>{\r\n\tmainHeading?: string;\r\n\tmainImage?: Msdyn365.IImageData;\r\n\tcolumns?:JSX.Element,\r\n\tinstrumentBlockContainer: IModuleProps;\r\n\timageContainer: INodeProps;\r\n}\r\nexport interface IInstrumentBlockFullConfig extends IInstrumentBlockConfig {\r\n\t// eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\r\n\tmsdyn365__moduleLayout?: string;\r\n}\r\n\r\nexport class InstrumentBlock extends React.PureComponent> {\r\n\tprivate readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n\t\tthis.props.context.request.telemetryPageName!,\r\n\t\tthis.props.friendlyName,\r\n\t\tthis.props.telemetry\r\n\t);\r\n\r\n\tprivate _buildColumns(columns: IColumnsData[]|undefined, mainHeading: string|undefined):JSX.Element{\r\n\t\tconst _headingTag = mainHeading ? `h3` : `h2`;\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{columns?.map((item, idx) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)\r\n\t\t\t\t})}\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n\r\n public render(): JSX.Element | null {\r\n\t\tconst {\r\n\t\t\tmainHeading,\r\n\t\t\tmainImage,\r\n\t\t\tcolumns,\r\n\t\t\tclassName\r\n\t\t\t/*clientRender*/\r\n\t\t} = this.props.config;\r\n\r\n\t\t//Don't render the module without a main image\r\n\t\tif (!mainImage){\r\n\t\t\tthis.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst imageProps = {\r\n\t\t\tgridSettings: this.props.context.request.gridSettings ?? {},\r\n\t\t\timageSettings: mainImage?.imageSettings\r\n\t\t};\r\n\t\tconst instrumentBlockImage = (\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\treturn this.props.renderView({\r\n\t\t\t...this.props,\r\n\t\t\tmainHeading: mainHeading && (

{mainHeading}

),\r\n\t\t\tmainImage: instrumentBlockImage,\r\n\t\t\tinstrumentBlockContainer: {\r\n\t\t\t\tmoduleProps: this.props,\r\n\t\t\t\tclassName: classnames('inst-block', className)\r\n\t\t\t},\r\n\t\t\timageContainer: { className: 'inst-block__image' },\r\n\t\t\tcolumns: this._buildColumns(columns, mainHeading)\r\n\t\t}) as React.ReactElement;\r\n }\r\n}\r\nexport default InstrumentBlock;\r\n","import * as React from 'react';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IInstrumentBlockViewProps } from './instrument-block';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const {\r\n\t\tmainHeading,\r\n\t\tmainImage,\r\n\t\tcolumns,\r\n\t\tinstrumentBlockContainer,\r\n\t\timageContainer\r\n } = props;\r\n\r\n return (\r\n\t\t\r\n\t\t\t{mainHeading}\r\n\t\t\t{mainImage}\r\n\t\t\t{columns}\r\n\t\t\r\n\t);\r\n};\r\nexport default ContentBlockView;","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductType, SalesAgreementPriceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { Button, format, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n salesAgreementPricePrompt?: string;\r\n salesAgreementExpirationDatePrompt?: string;\r\n salesAgreementCommittedQuantityPrompt?: string;\r\n salesAgreementRemainingQuantityPrompt?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n product?: SimpleProduct;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n isSalesAgreementPriceFeatureEnabled?: boolean;\r\n salesAgreementLineId?: number;\r\n priceResources?: IPriceComponentResources;\r\n salesAgreementDetailCollapseProps?: ICollapseProps;\r\n currencyCode?: string;\r\n salesAgreementDetailOnClick?(event: React.MouseEvent | React.KeyboardEvent): void;\r\n}\r\nexport interface IPriceComponent extends IComponent {}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Get the original price from price component props.\r\n * @param props - The IPriceComponentProps.\r\n * @returns The original price.\r\n */\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return props.data.price.AdjustedPrice ?? props.data.price.TradeAgreementPrice ?? props.data.price.BasePrice ?? defaultPrice;\r\n};\r\nconst getActivePrice = (props: IPriceComponentProps): number => {\r\n if (showPriceRangeForMasterProduct(props) && props.data.price.MinVariantPrice !== undefined) {\r\n return props.data.price.MinVariantPrice;\r\n }\r\n if (props.data.price.CustomerContextualPrice !== undefined) {\r\n return props.data.price.CustomerContextualPrice;\r\n }\r\n return getOriginalPrice(props);\r\n};\r\n\r\n/**\r\n * Get the formatted currency.\r\n * @param props - The props.\r\n * @param price - The price.\r\n * @param showCC\r\n * @returns The formatted currency.\r\n */\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, showCC:boolean): string => {\r\n if (price === undefined || price === freePrice) return '';\r\n const currencyCode = props.currencyCode || props.data.price.CurrencyCode || null;\r\n if(currencyCode){\r\n return _cultureFormatter(props, price, currencyCode, showCC);\r\n } else {\r\n //check the Extension Properties or else return null (and kill the object)\r\n if(props.data.price?.ExtensionProperties){\r\n const _cc = props.data.price.ExtensionProperties.find((element) => (element.Key === 'CurrencyCode' && element.Value && element.Value.StringValue));\r\n if(_cc !== undefined && _cc.Value && _cc.Value.StringValue){\r\n return _cultureFormatter(props, price, _cc.Value.StringValue.trim(), showCC);\r\n }\r\n }\r\n return '';\r\n }\r\n //return props.context.cultureFormatter.formatCurrency(price, currencyCode) + (showCC ? ' '+ currencyCode: '');\r\n};\r\nconst _cultureFormatter = (props: IPriceComponentProps, price: number, currencyCode:string, showCC:boolean):string => {\r\n return props.context.cultureFormatter.formatNumber(price,{\r\n style:\"currency\",\r\n currency:currencyCode,\r\n minimumFractionDigits: 0\r\n }) + (showCC ? ' '+ currencyCode: '');\r\n}\r\n\r\nconst showPriceRangeForMasterProduct = (props: IPriceComponentProps): boolean => {\r\n return (\r\n (props.isPriceMinMaxEnabled ?? false) &&\r\n (props.product?.ProductTypeValue === ProductType.Master || props.product?.ProductTypeValue === ProductType.KitMaster) &&\r\n props.data.price.MinVariantPrice !== undefined &&\r\n props.data.price.MaxVariantPrice !== undefined\r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalSalesPrice = getOriginalPrice(props);\r\n const activeSalesPrice = showPriceRangeForMasterProduct(props)\r\n ? props.data.price.MinVariantPrice\r\n : props.data.price.CustomerContextualPrice;\r\n\r\n if (activeSalesPrice && originalSalesPrice) {\r\n return activeSalesPrice < originalSalesPrice;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Render current price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n if (\r\n props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice\r\n ) {\r\n return (\r\n {\r\n formatCurrency(props, props.data.price.MinVariantPrice, false) +\r\n props.priceResources?.priceRangeSeparator +\r\n formatCurrency(props, props.data.price.MaxVariantPrice, true)\r\n }\r\n );\r\n }\r\n return (\r\n \r\n {formatCurrency(props, getActivePrice(props), true)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render active sales price with original sales price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, getOriginalPrice(props), true);\r\n\r\n return (\r\n <>\r\n \r\n {` `}\r\n {props.originalPriceText}\r\n {` `}\r\n {initialPrice}\r\n {` `}\r\n {props.currentPriceText}\r\n {` `}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && {props.savingsText}}\r\n \r\n );\r\n};\r\nconst renderSalesAgreementDetail = (props: IPriceComponentProps): JSX.Element => {\r\n // In most cases there should be only one sales agreement line.\r\n // If there are more than one, only the first one will be shown.\r\n const firstPriceLine: SalesAgreementPriceLine = (props.data.price.AttainablePriceLines ?? [])[0] as SalesAgreementPriceLine;\r\n return (\r\n

\r\n

\r\n {/* Available date */}\r\n {` · ${format(\r\n props.priceResources?.salesAgreementExpirationDatePrompt ?? '',\r\n props.context.cultureFormatter.formatDate(firstPriceLine.EffectiveDate as Date),\r\n props.context.cultureFormatter.formatDate(firstPriceLine.ExpirationDate as Date)\r\n )}`}\r\n

\r\n

\r\n {/* Quantity commitment */}\r\n {` · ${format(props.priceResources?.salesAgreementCommittedQuantityPrompt ?? '', firstPriceLine.CommittedQuantity)}`}\r\n

\r\n

\r\n {/* Remaining quantity to qualify */}\r\n {` · ${format(props.priceResources?.salesAgreementRemainingQuantityPrompt ?? '', firstPriceLine.RemainingQuantity)}`}\r\n

\r\n

\r\n );\r\n};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) return null;\r\n\r\n // Determine if contract price is avaiable/applied by:\r\n // isFeatureEnabled and SA price != 0, for PDP.\r\n // SA line id != 0, for cart line.\r\n if (props.isSalesAgreementPriceFeatureEnabled && props.data.price.SalesAgreementPrice !== 0) {\r\n const [isExpanded, setIsExpanded] = React.useState(false);\r\n const toggle = () => {\r\n setIsExpanded(!isExpanded);\r\n };\r\n return (\r\n \r\n \r\n

\r\n {formatCurrency(props, props.data.price.SalesAgreementPrice ?? props.data.price.CustomerContextualPrice, true)}\r\n

\r\n \r\n {props.priceResources?.salesAgreementPricePrompt}\r\n \r\n {isExpanded && renderSalesAgreementDetail(props)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * The PriceComponent.\r\n */\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride('Price', {\r\n component: Price,\r\n ...priceComponentActions\r\n});\r\n\r\nexport default PriceComponent;","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n}\r\nexport interface IPriceComponent extends IComponent {\r\n}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalPrice = getOriginalPrice(props);\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n return props.data.price.MinVariantPrice < originalPrice;\r\n }\r\n\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return Math.max(\r\n props.data.price.BasePrice ?? defaultPrice,\r\n props.data.price.TradeAgreementPrice ?? defaultPrice,\r\n props.data.price.AdjustedPrice ?? defaultPrice\r\n );\r\n};\r\n\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, shouldUseFreePriceText: boolean | undefined): string => {\r\n if (price === undefined) {\r\n return '';\r\n }\r\n\r\n if (shouldUseFreePriceText && price === freePrice && props.freePriceText) {\r\n return '';\r\n //return props.freePriceText;\r\n }\r\n\r\n let _price: any = props.context.cultureFormatter.formatCurrency(price);\r\n let _symbol: string = _price.replace(/[\\d\\., ]/g, ''); //get symbol from price\r\n _price = _price.replace(/[^0-9\\.-]+/g,\"\"); //remove symbol from price\r\n _price = _price %1 != 0 ? _price : Number(_price);\r\n _price = _price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return _symbol + \"\" + _price;\r\n //return props.context.cultureFormatter.formatCurrency(price);\r\n};\r\n\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, props.data.price.CustomerContextualPrice, true);\r\n const maxVariantPrice: string = formatCurrency(props, props.data.price.MaxVariantPrice, false);\r\n const minVariantPrice: string = formatCurrency(props, props.data.price.MinVariantPrice, false);\r\n let _currencyCode: string = '';\r\n if(props.data.price?.ExtensionProperties != undefined){\r\n props.data.price?.ExtensionProperties?.forEach((element) => {\r\n if (element.Key == 'CurrencyCode' && element.Value?.StringValue != '' && element.Value?.StringValue != undefined) {\r\n _currencyCode = element.Value?.StringValue;\r\n }\r\n })\r\n }\r\n\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n //MS Code\r\n return (\r\n \r\n {' '}\r\n \r\n {minVariantPrice}\r\n \r\n \r\n {props.priceResources?.priceRangeSeparator}\r\n \r\n \r\n {maxVariantPrice}\r\n \r\n {_currencyCode}\r\n \r\n );\r\n }\r\n return (\r\n {initialPrice + ' ' + _currencyCode}\r\n );\r\n};\r\n\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const originalPrice: number = getOriginalPrice(props);\r\n const initialPrice: string = formatCurrency(props, originalPrice, true);\r\n\r\n return (\r\n <>\r\n \r\n {' '}\r\n {props.originalPriceText}\r\n {' '}\r\n {initialPrice}\r\n {' '}\r\n {props.currentPriceText}\r\n {' '}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && \r\n {props.savingsText}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'Price',\r\n { component: Price, ...priceComponentActions }\r\n);\r\n\r\n\r\nexport default PriceComponent;","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductType, SalesAgreementPriceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { Button, format, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n salesAgreementPricePrompt?: string;\r\n salesAgreementExpirationDatePrompt?: string;\r\n salesAgreementCommittedQuantityPrompt?: string;\r\n salesAgreementRemainingQuantityPrompt?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n product?: SimpleProduct;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n isSalesAgreementPriceFeatureEnabled?: boolean;\r\n salesAgreementLineId?: number;\r\n priceResources?: IPriceComponentResources;\r\n salesAgreementDetailCollapseProps?: ICollapseProps;\r\n currencyCode?: string;\r\n salesAgreementDetailOnClick?(event: React.MouseEvent | React.KeyboardEvent): void;\r\n}\r\nexport interface IPriceComponent extends IComponent {}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Get the original price from price component props.\r\n * @param props - The IPriceComponentProps.\r\n * @returns The original price.\r\n */\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return props.data.price.AdjustedPrice ?? props.data.price.TradeAgreementPrice ?? props.data.price.BasePrice ?? defaultPrice;\r\n};\r\nconst getActivePrice = (props: IPriceComponentProps): number => {\r\n if (showPriceRangeForMasterProduct(props) && props.data.price.MinVariantPrice !== undefined) {\r\n return props.data.price.MinVariantPrice;\r\n }\r\n if (props.data.price.CustomerContextualPrice !== undefined) {\r\n return props.data.price.CustomerContextualPrice;\r\n }\r\n return getOriginalPrice(props);\r\n};\r\n\r\n/**\r\n * Get the formatted currency.\r\n * @param props - The props.\r\n * @param price - The price.\r\n * @param showCC\r\n * @returns The formatted currency.\r\n */\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, showCC:boolean): string => {\r\n if (price === undefined || price === freePrice) return '';\r\n const currencyCode = props.currencyCode || props.data.price.CurrencyCode || null;\r\n if(currencyCode){\r\n return _cultureFormatter(props, price, currencyCode, showCC);\r\n } else {\r\n\t\t//check the Extension Properties or else return null (and kill the object)\r\n\t\tif(props.data.price?.ExtensionProperties){\r\n\t\t\tconst _cc = props.data.price.ExtensionProperties.find((element) => (element.Key === 'CurrencyCode' && element.Value && element.Value.StringValue));\r\n\t\t\tif(_cc !== undefined && _cc.Value && _cc.Value.StringValue){\r\n\t\t\t\treturn _cultureFormatter(props, price, _cc.Value.StringValue.trim(), showCC);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n //return props.context.cultureFormatter.formatCurrency(price, currencyCode) + (showCC ? ' '+ currencyCode: '');\r\n};\r\nconst _cultureFormatter = (props: IPriceComponentProps, price: number, currencyCode:string, showCC:boolean):string => {\r\n return props.context.cultureFormatter.formatNumber(price,{\r\n style:\"currency\",\r\n currency:currencyCode,\r\n minimumFractionDigits: 0\r\n }) + (showCC ? ' '+ currencyCode: '');\r\n}\r\n\r\nconst showPriceRangeForMasterProduct = (props: IPriceComponentProps): boolean => {\r\n return (\r\n (props.isPriceMinMaxEnabled ?? false) &&\r\n (props.product?.ProductTypeValue === ProductType.Master || props.product?.ProductTypeValue === ProductType.KitMaster) &&\r\n props.data.price.MinVariantPrice !== undefined &&\r\n props.data.price.MaxVariantPrice !== undefined\r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalSalesPrice = getOriginalPrice(props);\r\n const activeSalesPrice = showPriceRangeForMasterProduct(props)\r\n ? props.data.price.MinVariantPrice\r\n : props.data.price.CustomerContextualPrice;\r\n\r\n if (activeSalesPrice && originalSalesPrice) {\r\n return activeSalesPrice < originalSalesPrice;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Render current price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n if (\r\n props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice\r\n ) {\r\n return (\r\n {\r\n formatCurrency(props, props.data.price.MinVariantPrice, false) +\r\n props.priceResources?.priceRangeSeparator +\r\n formatCurrency(props, props.data.price.MaxVariantPrice, true)\r\n }\r\n );\r\n }\r\n return (\r\n \r\n {formatCurrency(props, getActivePrice(props), true)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render active sales price with original sales price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, getOriginalPrice(props), true);\r\n\r\n return (\r\n <>\r\n \r\n {` `}\r\n {props.originalPriceText}\r\n {` `}\r\n {initialPrice}\r\n {` `}\r\n {props.currentPriceText}\r\n {` `}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && {props.savingsText}}\r\n \r\n );\r\n};\r\nconst renderSalesAgreementDetail = (props: IPriceComponentProps): JSX.Element => {\r\n // In most cases there should be only one sales agreement line.\r\n // If there are more than one, only the first one will be shown.\r\n const firstPriceLine: SalesAgreementPriceLine = (props.data.price.AttainablePriceLines ?? [])[0] as SalesAgreementPriceLine;\r\n return (\r\n

\r\n

\r\n {/* Available date */}\r\n {` · ${format(\r\n props.priceResources?.salesAgreementExpirationDatePrompt ?? '',\r\n props.context.cultureFormatter.formatDate(firstPriceLine.EffectiveDate as Date),\r\n props.context.cultureFormatter.formatDate(firstPriceLine.ExpirationDate as Date)\r\n )}`}\r\n

\r\n

\r\n {/* Quantity commitment */}\r\n {` · ${format(props.priceResources?.salesAgreementCommittedQuantityPrompt ?? '', firstPriceLine.CommittedQuantity)}`}\r\n

\r\n

\r\n {/* Remaining quantity to qualify */}\r\n {` · ${format(props.priceResources?.salesAgreementRemainingQuantityPrompt ?? '', firstPriceLine.RemainingQuantity)}`}\r\n

\r\n

\r\n );\r\n};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) return null;\r\n\r\n // Determine if contract price is avaiable/applied by:\r\n // isFeatureEnabled and SA price != 0, for PDP.\r\n // SA line id != 0, for cart line.\r\n if (props.isSalesAgreementPriceFeatureEnabled && props.data.price.SalesAgreementPrice !== 0) {\r\n const [isExpanded, setIsExpanded] = React.useState(false);\r\n const toggle = () => {\r\n setIsExpanded(!isExpanded);\r\n };\r\n return (\r\n \r\n \r\n

\r\n {formatCurrency(props, props.data.price.SalesAgreementPrice ?? props.data.price.CustomerContextualPrice, true)}\r\n

\r\n \r\n {props.priceResources?.salesAgreementPricePrompt}\r\n \r\n {isExpanded && renderSalesAgreementDetail(props)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * The PriceComponent.\r\n */\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride('Price', {\r\n component: Price,\r\n ...priceComponentActions\r\n});\r\n\r\nexport default PriceComponent;","/*!\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 { ICheckoutExpressOverlayModal, ICheckoutExpressViewProps } from './checkout-express';\n\n/**\n * Overlay modal.\n * @param param0 - Modal.\n * @param param0.modal - Modal param.\n * @returns React node.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- public name.\nconst OverlayModal: React.FC = ({ modal }) => {\n return ;\n};\n\n/**\n * Checkout express view.\n * @param param0 - Checkout express view props.\n * @param param0.checkoutExpress - Checkout express.\n * @param param0.waiting - Waiting.\n * @param param0.alert - Alert.\n * @param param0.addPaymentForm - Add payment form.\n * @param param0.overlayModal - Overlay modal.\n * @param param0.title - Module title.\n * @param param0.shouldHideExpressCheckout - ShouldHideExpressCheckout.\n * @returns React node.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Public name.\nconst CheckoutExpressView: React.FC = ({\n checkoutExpress,\n waiting,\n alert,\n addPaymentForm,\n overlayModal,\n title,\n shouldHideExpressCheckout\n}) =>\n shouldHideExpressCheckout ? (\n <>\n ) : (\n \n {title}\n {waiting}\n {alert}\n {addPaymentForm}\n {overlayModal && }\n \n );\n\nexport default CheckoutExpressView;\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 { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\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 { IForm, IItem, IGiftCardBalanceCheckViewProps } from './index';\n\nexport const Form: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const Item: React.FC = ({ itemProps, selectedGiftCard }) => {selectedGiftCard};\n\nconst GiftCardBalanceCheckView: React.FC = props => {\n const { giftCardBalanceCheckProps, form, item } = props;\n return (\n \n {form &&
}\n {item && }\n \n );\n};\n\nexport default GiftCardBalanceCheckView;\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 { IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\nimport classnames from 'classnames';\nimport { ITermsOfServiceLinkData } from '../distributor-selector.props.autogenerated';\n\nexport interface IDistributorSelectorFoundResultsMessage {\n distributorCountMessage: string;\n distributors?: IDistributorInfo[];\n}\n\nexport interface IDistributorSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport interface IDistributorDoNotShowProps {\n onChange(event: React.ChangeEvent): void;\n doNotShowAgainMessage: string;\n}\n\nexport interface IDistributorButtonProps {\n onClick(event: React.MouseEvent): void;\n text: string;\n className: string;\n}\n\nexport interface IDistributorEmptyMessageProps {\n emptyLocationsText?: string;\n}\n\nexport const DistributorSelectorCountMessage: React.FC = ({\n distributors,\n distributorCountMessage\n}) => {\n if (distributors) {\n return (\n
\n {distributorCountMessage.replace('{count}', distributors.length.toString())}\n
\n );\n }\n\n return null;\n};\n\nexport const DistributorSelectorTermsOfService: React.FC = ({\n link,\n requestContext,\n onTextChange\n}) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-distributor-selector__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 const DistributorSelectorWaiting: React.FC = () => {\n return
;\n};\n\nexport const DistributorSelectorDoNotShowAgain: React.FC = ({ onChange, doNotShowAgainMessage }) => {\n return (\n
\n \n {doNotShowAgainMessage}\n
\n );\n};\n\nexport const DistributorSelectorButton: React.FC = ({ onClick, text, className }) => {\n return (\n \n );\n};\n\nexport const DistributorEmptyMessage: React.FC = ({ emptyLocationsText }) => (\n
\n

{emptyLocationsText}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Distributor selector line item resources.\n */\n// @ts-ignore\nexport interface IDistributorSelectorDistributorLineItemResources {\n currentDistributorText: string;\n locationHeadingText: string;\n primaryContactText: string;\n paymentTypeText: string;\n viewAllDistributorText: string;\n deliveryMethodHeadingText: string;\n}\n\n/**\n * Distributor Locator line item props.\n */\nexport interface IDistributorSelectorLineItemProps {\n mainClassName: string;\n selectDistributorText?: string;\n distributor: IDistributorInfo;\n resources: IDistributorSelectorDistributorLineItemResources;\n index: string;\n currentDistributorId: number | undefined;\n distributorDetailsToBeShown?: string[];\n shouldShowIndex?: boolean;\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n handlers: {\n onSetAsCurrentDistributor(distributorId: number | undefined): void;\n onViewAllDistributorDetails(distributorId: number | undefined): void;\n };\n}\n\n/**\n * Set Preferred distributor functionality.\n * @param props -Distributor locator location items.\n * @returns Distributor locator selected location line item action.\n */\nconst onSetCurrentDistributorClickHandler = (props: IDistributorSelectorLineItemProps) => () => {\n props.handlers.onSetAsCurrentDistributor(props.distributor.OrgUnit?.RecordId);\n};\n\nconst onViewAllDistributorDetailsClickHandler = (props: IDistributorSelectorLineItemProps) => () => {\n props.handlers.onViewAllDistributorDetails(props.distributor.OrgUnit?.RecordId);\n};\n\n/**\n * Renders distributor selector line items.\n * @param props - Distributor selector line items props.\n * @returns - HTML.\n */\nconst distributorSelectorLineItem: React.FC = (props: IDistributorSelectorLineItemProps) => {\n const {\n distributor,\n resources,\n index,\n currentDistributorId,\n telemetryContent,\n shouldShowIndex,\n selectDistributorText,\n distributorDetailsToBeShown,\n mainClassName\n } = props;\n\n const distributorName: string | undefined = distributor.OrgUnit?.OrgUnitName;\n const isCurrentDistributor = currentDistributorId === distributor.OrgUnit?.RecordId;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.CurrentDistributor);\n const currentDistributorAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const distributorAddress = distributor.OrgUnit?.OrgUnitAddress?.FullAddress;\n const distributorPhoneNo = distributor.OrgUnit?.OrgUnitAddress?.Phone;\n const deliveryMethods = distributor?.OrgUnitDeliveryOptions?.DeliveryOptions;\n\n return (\n
\n {isCurrentDistributor ? (\n
\n
{resources.currentDistributorText}
\n
\n ) : null}\n
\n {shouldShowIndex && {index}}\n {distributorName}\n
\n
\n {distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('location') > -1 ? (\n
\n {resources.locationHeadingText}\n {distributorAddress && (\n
\n \n {distributorAddress}\n
\n )}\n
\n ) : null}\n {distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('primaryContact') > -1 ? (\n
\n {resources.primaryContactText}\n {distributorPhoneNo && (\n
\n \n {distributorPhoneNo}\n
\n )}\n
\n ) : null}\n {distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('deliveryMethod') > -1 ? (\n
\n {resources.deliveryMethodHeadingText}\n {ArrayExtensions.hasElements(deliveryMethods) && (\n
\n <>\n {deliveryMethods?.map(deliveryMethod => {\n return (\n \n {deliveryMethod.Description}\n \n );\n })}\n \n
\n )}\n
\n ) : null}\n \n {resources.viewAllDistributorText}\n \n {!isCurrentDistributor ? (\n \n {selectDistributorText}\n \n ) : null}\n
\n
\n );\n};\n\n/**\n * Distributor line item component.\n */\nexport const DistributorSelectorLineItemComponent = distributorSelectorLineItem as (\n props: IDistributorSelectorLineItemProps\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 { ArrayExtensions, IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { OrgUnit } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\nimport { observable, reaction } from 'mobx';\nimport classnames from 'classnames';\nimport { IDistributorSelectorResources } from '../distributor-selector.props.autogenerated';\nimport { DistributorSelectorLineItemComponent } from './distributor-selector-line-item.components';\n\n/**\n * Distributor selector lines props interface.\n */\nexport interface IDistributorSelectorLinesProps {\n mainClassName: string;\n distributors?: IDistributorInfo[];\n resources: IDistributorSelectorResources;\n selectedDistributorId?: number;\n shouldDisplayList?: boolean;\n isLocationDisabled?: boolean;\n currentDistributorId: number | undefined;\n shouldShowIndex: boolean;\n distributorDetailsToBeShown?: string[];\n selectDistributorText?: string;\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onDistributorSelected(distributor: OrgUnit | undefined): void;\n onSetAsCurrentDistributor: (distributorId: number | undefined) => void;\n onViewAllDistributorDetails: (distributorId: number | undefined) => void;\n}\n\nexport class DistributorSelectorLines extends React.PureComponent {\n private readonly selectedDistributorRef: React.RefObject;\n private distributorCounter: number;\n @observable private shouldDisplayList: boolean | undefined;\n\n public constructor(props: IDistributorSelectorLinesProps) {\n super(props);\n this.selectedDistributorRef = React.createRef();\n this.distributorCounter = 0;\n this.shouldDisplayList = this.props.shouldDisplayList;\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.shouldDisplayList,\n () => {\n setTimeout(() => {\n this._scrollIntoView();\n }, 0);\n }\n );\n }\n\n public componentDidUpdate(previousProps: IDistributorSelectorLinesProps): void {\n if (this.props.selectedDistributorId !== previousProps.selectedDistributorId) {\n this._scrollIntoView();\n }\n }\n\n public render(): JSX.Element | null {\n const { distributors, mainClassName } = this.props;\n this.shouldDisplayList = this.props.shouldDisplayList;\n\n if (!ArrayExtensions.hasElements(distributors)) {\n return null;\n }\n\n this.distributorCounter = 0;\n\n return (\n
\n {distributors.map((distributor, index) => {\n return this._renderDistributor(distributor, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnit -OrgUnit distributor.\n * @returns Click action on orgUnit Distributor.\n */\n private readonly onDistributorSelected = (orgUnit: OrgUnit | undefined) => () => {\n this.props.onDistributorSelected(orgUnit);\n };\n\n private _renderDistributor(distributor: IDistributorInfo, index: number): JSX.Element | undefined {\n const {\n distributors,\n mainClassName,\n currentDistributorId,\n resources,\n telemetryContent,\n distributorDetailsToBeShown,\n selectDistributorText,\n shouldShowIndex,\n onSetAsCurrentDistributor,\n onViewAllDistributorDetails\n } = this.props;\n const selectedDistributorId = this.props.selectedDistributorId;\n const defaultAriaSetsize = 0;\n const orgUnit = distributor?.OrgUnit;\n if (distributor) {\n ++this.distributorCounter;\n return (\n \n \n
\n );\n }\n return undefined;\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedDistributorDiv = this.selectedDistributorRef.current;\n // In devices with a screen width of less than 768px, we display a toggle button that allows users to switch between the distributor list and the map.\n // The distributor list is initially shown in the list view, followed by the map. Each view has its own scrolling behavior, and they are contained within separate parent wrapper div's.\n const parent = this.props.shouldDisplayList\n ? selectedDistributorDiv?.parentElement?.parentElement\n : selectedDistributorDiv?.parentElement;\n if (selectedDistributorDiv && parent) {\n if (this.props.shouldDisplayList) {\n if (parent.scrollTop > selectedDistributorDiv.offsetTop) {\n parent.scrollTop = selectedDistributorDiv.offsetTop - 10;\n } else if (\n selectedDistributorDiv.offsetTop + selectedDistributorDiv.clientHeight >\n parent.scrollTop + parent.clientHeight\n ) {\n parent.scrollTop = selectedDistributorDiv.offsetTop + selectedDistributorDiv.clientHeight - parent.clientHeight - 10;\n }\n } else {\n if (parent.scrollLeft > selectedDistributorDiv.offsetLeft) {\n parent.scrollLeft = selectedDistributorDiv.offsetLeft;\n } else if (\n selectedDistributorDiv.offsetLeft + selectedDistributorDiv.clientHeight >\n parent.scrollLeft + parent.clientHeight\n ) {\n parent.scrollLeft = selectedDistributorDiv.offsetLeft + selectedDistributorDiv.clientHeight - parent.clientHeight - 10;\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 { TenderType } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Distributor Payment type list interface.\n */\nexport interface IDistributorPaymentTypesListProps {\n mainClassName: string;\n paymentTypesMenuText?: string;\n paymentTypesList?: TenderType[];\n defaultOptionText?: string;\n onChange(paymentType: string): Promise;\n}\n\n/**\n * Distributor Payment types state interface.\n */\nexport interface IDistributorPaymentTypeListState {\n isFilterExpanded: boolean;\n selectedPaymentTypes?: string;\n}\n\n/**\n * Distributor payment option list Filter\n */\nexport class DistributorPaymentOptionList extends React.PureComponent {\n private readonly _distributorPaymentTypesMenu: React.RefObject;\n\n public constructor(props: IDistributorPaymentTypesListProps) {\n super(props);\n this._distributorPaymentTypesMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPaymentTypes: ''\n };\n }\n\n public render(): JSX.Element {\n const { mainClassName, paymentTypesMenuText, paymentTypesList, defaultOptionText } = this.props;\n const selectedPaymentTypesDesc = defaultOptionText\n ? defaultOptionText\n : paymentTypesList?.find((payment: TenderType) => payment.TenderTypeId === this.state.selectedPaymentTypes)?.Name;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {paymentTypesList?.map((tenderType: TenderType) => {\n return (\n \n \n {tenderType.Name}\n \n \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop down get selected.\n */\n private readonly _renderTenderTypes = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n private readonly handleFilterSelection = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n const paymentCode = event.currentTarget.getAttribute('data-value');\n if (paymentCode !== null) {\n this.setState({\n selectedPaymentTypes: paymentCode\n });\n\n this._renderTenderTypes();\n await this.props.onChange(paymentCode);\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 {\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\nimport { TenderType } from '@msdyn365-commerce/retail-proxy';\nimport { DistributorPaymentOptionList } from './distributor-payment-option-list';\n\n/**\n * Distributor Selector Search Form Props interface.\n */\nexport interface IDistributorSelectorSearchFormProps {\n mainClassName: string;\n shouldDisplayList?: boolean;\n telemetryContent?: ITelemetryContent;\n viewMapText: string;\n viewListText: string;\n paymentFilterMenuHeading: string;\n paymentFilterByHeading: string;\n showLocatorView?: boolean;\n showPaymentTypeFilter?: boolean;\n paymentTypes?: TenderType[];\n filteredPaymentType?: string;\n onPaymentFilterSelected(tenderTypeId: string): void;\n onToggleListMapViewState(): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class DistributorSelectorSearchForm extends React.PureComponent {\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n public constructor(props: IDistributorSelectorSearchFormProps) {\n super(props);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.ToggleMapView);\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n mainClassName,\n shouldDisplayList,\n viewMapText,\n viewListText,\n showLocatorView,\n paymentTypes,\n paymentFilterMenuHeading,\n paymentFilterByHeading,\n showPaymentTypeFilter,\n onToggleListMapViewState\n } = this.props;\n const toggleButtonText = shouldDisplayList ? viewMapText : viewListText;\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n\n return (\n
\n
\n {showLocatorView && (\n \n {toggleButtonText}\n \n )}\n {showPaymentTypeFilter &&\n this.renderPaymentTypeList(this.props, paymentTypes, paymentFilterMenuHeading, paymentFilterByHeading)}\n
\n
\n );\n }\n\n /**\n * Method called on payment filter change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (tenderTypeId: string): Promise => {\n this.props.onPaymentFilterSelected(tenderTypeId);\n return Promise.resolve();\n };\n\n private readonly renderPaymentTypeList = (\n props: IDistributorSelectorSearchFormProps,\n paymentTypesOptions: TenderType[] | undefined,\n paymentFilterMenuHeading: string | undefined,\n paymentFilterByHeading: string | undefined\n ): JSX.Element | null => {\n return (\n <>\n
{paymentFilterByHeading}
\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\n/// \n\nimport * as React from 'react';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classname from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport { ArrayExtensions, IDistributorInfo } from '@msdyn365-commerce-modules/retail-actions';\nimport { OrgUnit, TenderType } from '@msdyn365-commerce/retail-proxy';\nimport { IDistributorSelectorData } from './distributor-selector.data';\nimport { IDistributorSelectorProps } from './distributor-selector.props.autogenerated';\nimport {\n DistributorSelectorButton,\n DistributorSelectorDoNotShowAgain,\n DistributorSelectorCountMessage,\n DistributorSelectorTermsOfService,\n DistributorSelectorWaiting,\n DistributorEmptyMessage\n} from './components/distributor-selector-small-components';\nimport { DistributorSelectorLines } from './components/distributor-selector-lines';\nimport { DistributorSelectorSearchForm } from './components/distributor-selector-search-form';\n\n/**\n * Distributor State Interface.\n */\nexport interface IDistributorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isLocationDisabled?: boolean;\n showDistributorDetails?: boolean;\n showWarningDialog?: boolean;\n warningDialogState?: boolean;\n currentSelectedDistributor?: IDistributorInfo;\n distributorId: number | undefined;\n distributorDetailsFromPopup: boolean;\n filteredPaymentTypeId: string;\n}\n\nexport interface ICurrentDistributor {\n DistributorName?: string;\n DistributorId?: number;\n}\n\n/**\n * Distributor View Props Interface.\n */\nexport interface IDistributorSelectorViewProps extends IDistributorSelectorProps {\n state: IDistributorState;\n\n // Current distributor button props\n currentDistributorContainer?: IModuleProps;\n currentDistributorButton: React.ReactNode;\n\n // Containers:\n moduleProps: IModuleProps;\n bodyContainerProps: INodeProps;\n footerContainerProps: INodeProps;\n headerContainerProps: INodeProps;\n\n // Distributor warning Props\n distributorWarningHeaderProps?: React.ReactNode;\n distributorWarningContentHeadingProps?: React.ReactNode;\n distributorWarningContent?: React.ReactNode;\n distributorWarningDoNotShowAgain?: React.ReactNode;\n distributorWarningContinue?: React.ReactNode;\n distributorWarningCancel?: React.ReactNode;\n distributorWarningButtonWrapper: INodeProps;\n\n // Distributor selector Props\n distributorSelectorHeaderProps?: React.ReactNode;\n // Components\n distributorCountMessage?: React.ReactNode;\n searchForm?: React.ReactNode;\n spinner?: React.ReactNode;\n noDistributorsMessage?: React.ReactNode;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n distributorDetailsModal?: INodeProps;\n bodyWrapperProps?: INodeProps;\n distributorsResultContainerProps: INodeProps;\n distributorsResultWrapperProps: INodeProps;\n distributorLinesViewProps?: React.ReactNode;\n terms?: React.ReactNode;\n\n // distributor details modal popup\n showDistributorDetailsPopup: boolean;\n distributorDetailsModalPopup: IModuleProps;\n distributorDetailsModalHeader: INodeProps;\n distributorDetailsHeaderProps: React.ReactNode;\n distributorDetailsModalBody: INodeProps;\n distributorDetailsModalBodyContainer: INodeProps;\n\n distributorDetailsLocation: React.ReactNode;\n distributorDetailsPrimaryContact: React.ReactNode;\n distributorDetailsDeliveryMethods: React.ReactNode;\n distributorDetailsViewAllDetails: React.ReactNode;\n distributorDetailsModalFooter: INodeProps;\n distributorDetailsChangeDistributor: React.ReactNode;\n\n // distributor details slider\n distributorDetailsSliderWrapper: INodeProps;\n distributorDetailsSliderHeaderContainer: INodeProps;\n distributorDetailsSliderFooterContainer: INodeProps;\n distributorDetailsSliderBodyContainer: INodeProps;\n distributorDetailsSliderDistributorName: React.ReactNode;\n distributorDetailsSliderHeaderContent: React.ReactNode;\n distributorDetailsSliderInformationWrapper: INodeProps;\n distributorDetailsSliderCurrentDistributorTitle: React.ReactNode;\n distributorDetailsSliderSelectDistributor: React.ReactNode;\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n *\n * DistributorSelector component\n * @extends {React.Component>}\n */\n@observer\nclass DistributorSelector extends React.Component, IDistributorState> {\n private readonly telemetryContent: ITelemetryContent;\n private mainClass = 'ms-distributor-selector';\n private headerClass = 'ms-header__current-distributor';\n private readonly currentDistributorBtnRef: React.RefObject = React.createRef();\n private currentDistributor?: ICurrentDistributor;\n\n public constructor(props: IDistributorSelectorProps) {\n super(props);\n this.state = {\n isSearchInProgress: true,\n searchTerm: '',\n showWarningDialog: false,\n showDistributorDetails: false,\n distributorId: undefined,\n distributorDetailsFromPopup: false,\n filteredPaymentTypeId: ''\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.currentDistributor = this.getCurrentDistributor();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n },\n request: { user }\n }\n } = this.props;\n\n if (this.props.data.distributorSelectorStateManager.result) {\n await this._getAndUpdateDistributorList();\n this.checkUserStateAndOpenDialog(user);\n }\n\n reaction(\n () => this.props.data.distributorSelectorStateManager.result,\n async () => {\n await this._getAndUpdateDistributorList();\n this.checkUserStateAndOpenDialog(user);\n }\n );\n\n reaction(\n () => this.props.data.distributorSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.distributorSelectorStateManager.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\n public render(): JSX.Element | null {\n const {\n config: {\n className,\n distributorSelectorHeading,\n distributorWarningDialogHeading,\n distributorWarningContent,\n termsOfServiceLink,\n distributorDetailsToBeShown,\n selectDistributorText,\n doNotShowAgainCheckbox,\n noDistributorFoundText\n },\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n },\n context: {\n request: { user }\n },\n slots: { maps: mapSlot },\n resources\n } = this.props;\n const { showWarningDialog } = this.state;\n const currentDistributorId = this.currentDistributor?.DistributorId;\n const currentDistributorName = this.currentDistributor?.DistributorName;\n const headerText = currentDistributorName ? currentDistributorName : resources.headerCurrentDistributorText;\n\n let distributorInfoList = distributorSelectorStateManager?.distributorList;\n const paymentTypes = this.getUniquePaymentTypes(distributorInfoList);\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n const distributorDetails = this.state.showDistributorDetails\n ? this.getDistributorDetails(this.state.distributorId)\n : this.getDistributorDetails(currentDistributorId);\n const isCurrentDistributorSelected = this.state.distributorId === currentDistributorId;\n const shouldOpenDistributorSelectorDialog = !!distributorSelectorStateManager?.isDistributorSelectorDialogOpen;\n const shouldOpenDistributorDetailPopup = !!(distributorSelectorStateManager?.isDistributorDetailPopupOpen && distributorDetails);\n const shouldDisplayList = distributorSelectorStateManager?.listMapViewState?.displayList;\n if (this.state.filteredPaymentTypeId && distributorInfoList) {\n distributorInfoList = this.filterDistributorsByPaymentTypes(distributorInfoList, this.state.filteredPaymentTypeId);\n }\n const sortedDistributorList = distributorInfoList ? this._sortDistributor(distributorInfoList, currentDistributorId) : [];\n\n const canShowLocationView =\n (distributorSelectorStateManager?.distributorSelectorContext?.showMapViewLink === undefined ||\n distributorSelectorStateManager.distributorSelectorContext.showMapViewLink) &&\n distributorSelectorStateManager?.isMapModuleLoaded &&\n hasMapSlot;\n\n const showDistributorDetailsOnMap = distributorSelectorStateManager?.showDistributorDetailsOnMap;\n\n // @ts-ignore\n const viewProps: IDistributorSelectorViewProps = {\n ...(this.props as IDistributorSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n showDistributorDetailsPopup: shouldOpenDistributorDetailPopup,\n currentDistributorContainer: this.shouldShowDistributors(user)\n ? {\n tag: 'div' as NodeTag,\n moduleProps: this.props,\n className: `${this.headerClass}-container`\n }\n : undefined,\n currentDistributorButton: (\n \n {headerText}\n \n ),\n moduleProps: {\n tag: Modal,\n moduleProps: this.props,\n className: classname(hasMapSlot ? `${this.mainClass} maps` : `${this.mainClass}`, className),\n autoFocus: true,\n fade: true,\n isOpen: shouldOpenDistributorSelectorDialog,\n 'aria-label': showWarningDialog ? distributorWarningDialogHeading : distributorSelectorHeading,\n onClosed: this._closeDistributorSelectorDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle:\n currentDistributorId || !ArrayExtensions.hasElements(distributorInfoList)\n ? this._closeDistributorSelectorDialog\n : undefined\n },\n isMobileView: isMobileDevice,\n headerContainerProps: {\n tag: ModalHeader,\n className: `${this.mainClass}-modal-header`,\n toggle:\n currentDistributorId || !ArrayExtensions.hasElements(distributorInfoList)\n ? this._closeDistributorSelectorDialog\n : undefined\n },\n distributorSelectorHeaderProps: distributorSelectorHeading && (\n \n ),\n distributorWarningHeaderProps: distributorWarningDialogHeading && (\n \n ),\n distributorWarningContent: distributorWarningContent && (\n \n ),\n footerContainerProps: {\n tag: ModalFooter,\n className: classname(`${this.mainClass}__modal-footer`, this.state.showWarningDialog ? 'distributor-warning-footer' : '')\n },\n bodyContainerProps: {\n tag: ModalBody,\n className: classname(`${this.mainClass}__modal-body`, this.state.showWarningDialog ? 'distributor-warning' : '')\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: `${this.mainClass}__body_wrapper`\n },\n distributorsResultContainerProps: {\n tag: 'div' as NodeTag,\n className: classname(`${this.mainClass}__distributor_container`, shouldDisplayList ? 'show' : 'hide')\n },\n distributorsResultWrapperProps: {\n tag: 'div' as NodeTag,\n className: classname(`${this.mainClass}__distributors_wrapper`, !showDistributorDetailsOnMap ? 'hide' : '')\n },\n mapContainerProps: hasMapSlot\n ? {\n tag: 'div' as NodeTag,\n className: classname(`${this.mainClass}__map_container`, !shouldDisplayList ? 'show' : 'hide')\n }\n : undefined,\n distributorCountMessage: (\n \n ),\n searchForm: (\n \n ),\n spinner: ,\n distributorLinesViewProps: ArrayExtensions.hasElements(distributorInfoList) ? (\n \n ) : (\n undefined\n ),\n noDistributorsMessage: ,\n terms: (\n \n ),\n distributorWarningButtonWrapper: {\n tag: 'div' as NodeTag,\n className: `${this.mainClass}__footer-button-wrapper`\n },\n distributorWarningDoNotShowAgain: doNotShowAgainCheckbox && (\n \n ),\n distributorWarningContinue: (\n \n ),\n distributorWarningCancel: (\n \n ),\n ...this.renderDistributorDetailsViewProps(distributorDetails),\n ...this.renderDistributorSliderViewProps(distributorDetails, isCurrentDistributorSelected)\n };\n return this.props.renderView(viewProps);\n }\n\n public toggleListMapViewState = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n await distributorSelectorStateManager?.toggleListMapViewState();\n };\n\n /**\n * Method to be called on the click on don't show again checkbox.\n */\n public onChangeForDoNotShow = (event: React.ChangeEvent): void => {\n this.setState({ warningDialogState: event.target.checked });\n };\n\n public onSelectDistributor = async (): Promise => {\n if (this.state.distributorId) {\n await this._setCurrentDistributor(this.state.distributorId);\n }\n };\n\n public onChangeDistributorClick = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n if (distributorSelectorStateManager) {\n // Set selected distributor id\n await distributorSelectorStateManager.setSelectedDistributorId(undefined);\n\n if (distributorSelectorStateManager.isDistributorDetailPopupOpen) {\n // close the detail popup\n await distributorSelectorStateManager.closeDistributorDetailPopup();\n }\n\n if (distributorSelectorStateManager.isDistributorSelectorDialogOpen) {\n this.setState({ distributorId: undefined, showDistributorDetails: false, distributorDetailsFromPopup: false });\n } else {\n // Open the distributor selector modal\n await distributorSelectorStateManager.openDistributorSelectorDialog({\n parentElementRef: this.currentDistributorBtnRef\n });\n }\n }\n };\n\n public onDistributorCloseButtonClick = async () => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n if (distributorSelectorStateManager) {\n await distributorSelectorStateManager.closeDistributorDetailPopup();\n }\n };\n\n /**\n * Method to be called on the click on the continue button.\n */\n public continueButtonClick = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n const currentDistributor = this.state.currentSelectedDistributor;\n\n if (this.state.warningDialogState) {\n distributorSelectorStateManager?.hideWarningMessage(cookies.isConsentGiven());\n }\n\n await this._closeDistributorSelectorDialog();\n this.redirectToDistributorURL(currentDistributor);\n };\n\n /**\n * Method to be called on click on the cancel button.\n */\n public cancelButtonClick = async (): Promise => {\n await this._closeDistributorSelectorDialog();\n this.setState({ warningDialogState: false, showWarningDialog: false, currentSelectedDistributor: undefined });\n };\n\n public backToSearchClick = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n this.setState({ showDistributorDetails: false, distributorId: undefined });\n await distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n };\n\n public onViewAllDistributorDetailsFromPopup = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n if (distributorSelectorStateManager) {\n if (!this.currentDistributor?.DistributorId) {\n return;\n }\n\n // close the detail popup\n await distributorSelectorStateManager.closeDistributorDetailPopup();\n\n // Open the distributor selector modal\n await distributorSelectorStateManager.openDistributorSelectorDialog({\n parentElementRef: this.currentDistributorBtnRef\n });\n\n // Set selected distributor id\n await distributorSelectorStateManager.setSelectedDistributorId(this.currentDistributor?.DistributorId);\n\n this.setState({\n distributorId: this.currentDistributor?.DistributorId,\n showDistributorDetails: true,\n distributorDetailsFromPopup: true\n });\n }\n };\n\n public onViewAllDistributorDetails = async (distributorId: number | undefined): Promise => {\n if (!distributorId) {\n return;\n }\n this.setState({ distributorId: distributorId, showDistributorDetails: true });\n };\n\n private getCurrentDistributor = (): ICurrentDistributor | undefined => {\n const {\n context: {\n request: {\n url: { requestUrl },\n user\n }\n }\n } = this.props;\n\n // We show the distributor selector module when the user is signed-in.\n if (user.isAuthenticated) {\n const distributorList = this.props.data.distributorList?.result;\n\n const currentDistributor = distributorList?.find(distributor =>\n distributor.MarketSettings?.localeItems.some(\n locale => requestUrl.href.toLowerCase().indexOf(locale.localeBaseUrl.toLowerCase()) >= 0\n )\n );\n\n if (currentDistributor) {\n return {\n DistributorId: currentDistributor.OrgUnit?.RecordId,\n DistributorName: currentDistributor.OrgUnit?.OrgUnitName\n };\n } else {\n return undefined;\n }\n }\n return undefined;\n };\n\n private getUniquePaymentTypes = (distributors?: IDistributorInfo[]) => {\n const uniquePaymentTypes = new Set();\n distributors?.forEach(distributor => {\n distributor.PaymentTypes?.forEach(paymentType => {\n uniquePaymentTypes.add(paymentType);\n });\n });\n return [...uniquePaymentTypes];\n };\n\n /**\n * The method to be called for filtering store locations based on the user's selected filters.\n * @param distributors - Distributors List.\n * @param filteredPaymentTypeId - Filter selected by the user.\n * @returns -Filtered distributors.\n */\n private readonly filterDistributorsByPaymentTypes = (distributors: IDistributorInfo[], filteredPaymentTypeId: string) => {\n return distributors.filter(distributor => {\n return distributor?.PaymentTypes?.some(paymentType => {\n return paymentType.TenderTypeId === filteredPaymentTypeId;\n });\n });\n };\n\n /**\n * Redirect user to the distributor selector site.\n * @param currentDistributor - Current distributor details\n */\n private redirectToDistributorURL = (currentDistributor: IDistributorInfo | undefined) => {\n const { telemetry } = this.props;\n const marketSettings = currentDistributor?.MarketSettings;\n\n // Check if the current locale is present.\n const currentLocale = marketSettings?.localeItems.find(localeItem => localeItem.locale === this.props.context.request.locale);\n let distributorURL = '';\n if (currentLocale) {\n distributorURL = currentLocale.localeBaseUrl;\n } else {\n // Check if the default locale is set.\n let defaultLocale = marketSettings?.localeItems.find(localeItem => localeItem.isDefaultLocale);\n if (!defaultLocale) {\n defaultLocale = ArrayExtensions.hasElements(marketSettings?.localeItems) ? marketSettings?.localeItems[0] : undefined;\n } else {\n distributorURL = defaultLocale.localeBaseUrl;\n }\n }\n\n if (distributorURL) {\n if (!distributorURL.startsWith('https://')) {\n distributorURL = `https://${distributorURL}`;\n }\n window.location.href = distributorURL;\n } else if (telemetry) {\n telemetry.debug('redirectToDistributorURL: Distributor URL is empty');\n }\n };\n\n /**\n * Handle click on the distributor selector.\n * @returns : Promise void.\n */\n private handleDistributorSelectorClick = async () => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n\n if (this.currentDistributor?.DistributorId) {\n if (distributorSelectorStateManager?.isDistributorDetailPopupOpen) {\n distributorSelectorStateManager?.closeDistributorDetailPopup();\n } else {\n await distributorSelectorStateManager?.openDistributorDetailPopup({\n parentElementRef: this.currentDistributorBtnRef\n });\n }\n return;\n }\n };\n\n /**\n * Filter distributors by payment types.\n * @param tenderTypeId -Delivery Code.\n */\n private readonly onFilteredPaymentType = (tenderTypeId: string) => {\n this.setState({ filteredPaymentTypeId: tenderTypeId });\n };\n\n /**\n * Creates the distributor details view props.\n * @param distributorDetails: Distributor details\n * @returns : View props for the distributor details.\n */\n private renderDistributorDetailsViewProps = (distributorDetails: IDistributorInfo | undefined) => {\n const {\n config: { switchDistributorText, distributorDetailsToBeShown },\n resources\n } = this.props;\n const distributorAddress = distributorDetails?.OrgUnit?.OrgUnitAddress?.FullAddress;\n const distributorPhoneNo = distributorDetails?.OrgUnit?.OrgUnitAddress?.Phone;\n const deliveryMethods = distributorDetails?.OrgUnitDeliveryOptions?.DeliveryOptions;\n\n const distributorDetailsViewProps = {\n distributorDetailsModalPopup: {\n tag: 'div',\n moduleProps: this.props,\n className: classname(`${this.mainClass}__details_dialog`)\n },\n distributorDetailsModalHeader: {\n tag: 'div',\n className: `${this.mainClass}__dialog__header`\n },\n distributorDetailsHeaderProps: (\n <>\n {distributorDetails?.OrgUnit?.OrgUnitName || ''}\n \n \n ),\n distributorDetailsModalBody: {\n tag: 'div',\n className: `${this.mainClass}__dialog__body`\n },\n distributorDetailsModalBodyContainer: {\n tag: 'div',\n className: `${this.mainClass}__dialog__container`\n },\n distributorDetailsLocation: (this.state.showDistributorDetails ||\n (distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('location') > -1)) && (\n
\n {resources.locationHeadingText}\n {distributorAddress && (\n
\n \n {distributorAddress}\n
\n )}\n
\n ),\n distributorDetailsPrimaryContact: (this.state.showDistributorDetails ||\n (distributorDetailsToBeShown && distributorDetailsToBeShown?.indexOf('primaryContact') > -1)) && (\n
\n {resources.primaryContactText}\n {distributorPhoneNo && (\n
\n \n {distributorPhoneNo}\n
\n )}\n
\n ),\n distributorDetailsDeliveryMethods: (this.state.showDistributorDetails ||\n (distributorDetailsToBeShown && distributorDetailsToBeShown.indexOf('deliveryMethod') > -1)) && (\n
\n {resources.deliveryMethodHeadingText}\n {ArrayExtensions.hasElements(deliveryMethods) && (\n
\n <>\n {deliveryMethods?.map(deliveryMethod => {\n return (\n \n {deliveryMethod.Description}\n \n );\n })}\n \n
\n )}\n
\n ),\n distributorDetailsViewAllDetails: (\n \n {resources.viewAllDistributorText}\n \n ),\n distributorDetailsChangeDistributor: (\n \n ),\n distributorDetailsModalFooter: {\n tag: 'div',\n className: `${this.mainClass}__dialog__footer`\n },\n distributorDetailsSliderWrapper: {\n tag: 'div',\n className: classname(\n `${this.mainClass}__details-slider-wrapper`,\n this.state.showDistributorDetails ? 'show' : '',\n this.state.distributorDetailsFromPopup ? 'no-header' : ''\n )\n }\n };\n return distributorDetailsViewProps;\n };\n\n private renderDistributorSliderViewProps = (\n distributorDetails: IDistributorInfo | undefined,\n isCurrentDistributorSelected: boolean\n ) => {\n const {\n resources,\n config: { selectDistributorText }\n } = this.props;\n const payLoad: IPayLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.CurrentDistributor);\n const currentDistributorAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n const distributorSliderViewProps = {\n distributorDetailsSliderDistributorName: (\n
{distributorDetails?.OrgUnit?.OrgUnitName}
\n ),\n distributorDetailsSliderHeaderContent: (\n \n {resources.distributorSliderBackToSearch}\n \n ),\n distributorDetailsSliderHeaderContainer: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-heading`\n },\n distributorDetailsSliderBodyContainer: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-body`\n },\n distributorDetailsSliderFooterContainer: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-footer`\n },\n distributorDetailsSliderInformationWrapper: {\n tag: 'div',\n className: `${this.mainClass}__details-slider-info-wrapper`\n },\n distributorDetailsSlidercurrentDistributorTitle: isCurrentDistributorSelected && (\n
\n
{resources.currentDistributorText}
\n
\n ),\n distributorDetailsSliderSelectDistributor: !isCurrentDistributorSelected && (\n \n {\n \n }\n \n )\n };\n return distributorSliderViewProps;\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n private handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.state.showWarningDialog) {\n this.props.config.distributorWarningDialogHeading = event.target.value;\n } else {\n this.props.config.distributorSelectorHeading = event.target.value;\n }\n };\n\n /**\n * Method to be called on warning text change.\n * @param event -Content Edit Event.\n */\n private handleWarningTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.distributorWarningContent = event.target.value;\n };\n\n /**\n * Method to be called on term of service text change.\n * @param event -Content Edit Event.\n */\n private 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 distributor text change.\n * @param event -Content Edit Event.\n */\n private handleSelectDistributorTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n if (this.props.config.selectDistributorText) {\n this.props.config.selectDistributorText = event.target.value;\n }\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n private handleChangeDistributorTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n if (this.props.config.switchDistributorText) {\n this.props.config.switchDistributorText = event.target.value;\n }\n };\n\n private shouldShowDistributors = (user: Msdyn365.IRequestContextUser): boolean => {\n const isOboRequest = Msdyn365.isOboRequest(this.props.context.request);\n const isOBOAccountSelected = isOboRequest && !!this.props.context.request.cookies.getAccountSelectionCookie();\n return isOBOAccountSelected || (!isOboRequest && !!user.isSignedIn);\n };\n\n /**\n * If the user is authenticated but has no current distributor, open the distributor selector dialog.\n * @param user - IRequestContextUser\n */\n private checkUserStateAndOpenDialog = (user: Msdyn365.IRequestContextUser) => {\n if (!this.currentDistributor && this.shouldShowDistributors(user)) {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager.result;\n distributorSelectorStateManager?.openDistributorSelectorDialog({\n parentElementRef: this.currentDistributorBtnRef\n });\n }\n };\n\n /**\n * Get the distributor details from the distributorId\n * @param distributorId - Distributor Id\n * @returns - Returns the distributor info.\n */\n private getDistributorDetails = (distributorId: number | undefined): IDistributorInfo | undefined => {\n const {\n data: {\n distributorList: { result: distributorList }\n }\n } = this.props;\n\n return distributorList?.find(distributor => distributor.OrgUnit?.RecordId === distributorId);\n };\n\n /**\n * Method to be called updating the distributor list.\n */\n private readonly _getAndUpdateDistributorList = async (): Promise => {\n const {\n data: {\n distributorList: { result: distributorList }\n }\n } = this.props;\n\n this.setState({ isSearchInProgress: true });\n\n if (distributorList) {\n await this._updateDistributorListInStateManager(distributorList);\n }\n\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to update the distributor state manager.\n * @param distributorList - distributor Info Object.\n * @returns Void promise.\n */\n private readonly _updateDistributorListInStateManager = async (distributorList: IDistributorInfo[]): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n },\n telemetry\n } = this.props;\n\n if (!distributorSelectorStateManager || !distributorList) {\n return;\n }\n\n const currentDistributorId = this.currentDistributor?.DistributorId;\n const sortedDistributorList = this._sortDistributor(distributorList, currentDistributorId);\n\n // When serializing the distributor selector state manager, functions get stripped.\n if (distributorSelectorStateManager.setDistributorsList) {\n await distributorSelectorStateManager.setDistributorsList(sortedDistributorList).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update distributor state');\n }\n });\n }\n };\n\n /**\n * Method will sort all distributor.\n * @param distributors - Distributor List.\n * @param currentDistributorId - Distributor Id.\n * @returns List of distributor.\n */\n private _sortDistributor(distributors: IDistributorInfo[], currentDistributorId: number | undefined): IDistributorInfo[] {\n const isCurrentDistributor = (value: IDistributorInfo) => currentDistributorId && value.OrgUnit?.RecordId === currentDistributorId;\n\n return [...distributors.filter(isCurrentDistributor), ...distributors.filter(distributor => !isCurrentDistributor(distributor))];\n }\n\n /**\n * Method to be called closing the distributor selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDistributorSelectorDialog = async (): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n if (distributorSelectorStateManager) {\n distributorSelectorStateManager.distributorSelectorContext?.parentElementRef?.current?.focus();\n // Update the distributor map visibility to true.\n distributorSelectorStateManager.updateDistributorMapVisibility(true);\n await distributorSelectorStateManager.setSelectedDistributorId(undefined);\n await distributorSelectorStateManager.closeDistributorSelectorDialog();\n this.setState({\n searchTerm: '',\n showWarningDialog: false,\n currentSelectedDistributor: undefined,\n distributorDetailsFromPopup: false,\n showDistributorDetails: false,\n distributorId: undefined\n });\n }\n };\n\n /**\n * On Selecting distributor.\n * @param distributorId - Distributor Id.\n */\n private readonly _setSelectedDistributor = async (orgUnit: OrgUnit | undefined): Promise => {\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n if (!distributorSelectorStateManager || !orgUnit) {\n return;\n }\n\n await distributorSelectorStateManager.setSelectedDistributorId(orgUnit.RecordId);\n };\n\n /**\n * On Selecting Current Distributor.\n * @param distributorId - Distributor Id.\n */\n private readonly _setCurrentDistributor = async (distributorId: number | undefined): Promise => {\n if (!distributorId) {\n return;\n }\n\n const {\n data: {\n distributorSelectorStateManager: { result: distributorSelectorStateManager }\n }\n } = this.props;\n\n if (!distributorSelectorStateManager) {\n return;\n }\n const distributorList = distributorSelectorStateManager?.distributorList;\n const currentDistributor = distributorList?.find(distributor => distributor.OrgUnit?.RecordId === distributorId);\n if (distributorSelectorStateManager.hideDistributorWarning || !this.currentDistributor) {\n this.redirectToDistributorURL(currentDistributor);\n await this._closeDistributorSelectorDialog();\n } else {\n this.setState({ showWarningDialog: true, currentSelectedDistributor: currentDistributor });\n }\n };\n}\n\nexport default DistributorSelector;\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';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { IDistributorSelectorViewProps } from './distributor-selector';\n\n/**\n * Render the body of the popup.\n * @param props -- Distributor selector view props.\n * @returns -- Returns the html.\n */\nconst renderDistributorSelectorBody: React.FC = props => {\n const {\n bodyContainerProps,\n state,\n spinner,\n distributorLinesViewProps,\n maps,\n bodyWrapperProps,\n distributorsResultContainerProps,\n distributorsResultWrapperProps,\n mapContainerProps,\n distributorCountMessage,\n searchForm,\n noDistributorsMessage\n } = props;\n\n return (\n \n \n {searchForm}\n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n \n {distributorLinesViewProps ? (\n <>\n {distributorCountMessage}\n {distributorLinesViewProps}\n \n ) : (\n <>{noDistributorsMessage}\n )}\n \n )}\n \n {mapContainerProps ? (\n \n {maps}\n {distributorLinesViewProps}\n \n ) : (\n undefined\n )}\n \n \n );\n};\n\nconst renderDistributorDetails: React.FC = props => {\n const {\n distributorDetailsSliderWrapper,\n distributorDetailsSliderHeaderContainer,\n distributorDetailsSliderHeaderContent,\n distributorDetailsSliderBodyContainer,\n distributorDetailsSliderCurrentDistributorTitle,\n distributorDetailsSliderFooterContainer,\n distributorDetailsSliderDistributorName,\n distributorDetailsSliderInformationWrapper,\n distributorDetailsLocation,\n distributorDetailsPrimaryContact,\n distributorDetailsSliderSelectDistributor,\n terms,\n distributorDetailsChangeDistributor,\n state,\n distributorDetailsDeliveryMethods\n } = props;\n\n return (\n \n {!state.distributorDetailsFromPopup ? (\n {distributorDetailsSliderHeaderContent}\n ) : null}\n \n {distributorDetailsSliderCurrentDistributorTitle}\n {distributorDetailsSliderDistributorName}\n \n {distributorDetailsLocation}\n {distributorDetailsPrimaryContact}\n {distributorDetailsDeliveryMethods}\n \n {distributorDetailsSliderSelectDistributor}\n {state.distributorDetailsFromPopup ? distributorDetailsChangeDistributor : null}\n \n {terms}\n \n );\n};\n\nconst renderDistributorWarningBody: React.FC = props => {\n const { bodyContainerProps, distributorWarningContent } = props;\n\n return {distributorWarningContent};\n};\n\nconst renderDistributorSelectorModal: React.FC = props => {\n const { footerContainerProps, headerContainerProps, distributorSelectorHeaderProps, moduleProps, terms } = props;\n return (\n \n {renderDistributorDetails(props)}\n {distributorSelectorHeaderProps}\n {renderDistributorSelectorBody(props)}\n {terms}\n \n );\n};\n\nconst renderDistributorDetailsPopup = (props: IDistributorSelectorViewProps): JSX.Element | null => {\n const {\n distributorDetailsModalPopup,\n distributorDetailsModalHeader,\n distributorDetailsHeaderProps,\n distributorDetailsModalBody,\n distributorDetailsModalBodyContainer,\n distributorDetailsLocation,\n distributorDetailsPrimaryContact,\n distributorDetailsViewAllDetails,\n distributorDetailsChangeDistributor,\n distributorDetailsModalFooter,\n showDistributorDetailsPopup,\n distributorDetailsDeliveryMethods\n } = props;\n if (showDistributorDetailsPopup) {\n return (\n \n {distributorDetailsHeaderProps}\n \n \n {distributorDetailsLocation}\n {distributorDetailsPrimaryContact}\n {distributorDetailsDeliveryMethods}\n \n {distributorDetailsViewAllDetails}\n \n {distributorDetailsChangeDistributor}\n \n );\n }\n return null;\n};\n\nconst renderWarningDialog = (props: IDistributorSelectorViewProps): JSX.Element | undefined => {\n const {\n footerContainerProps,\n headerContainerProps,\n distributorWarningHeaderProps,\n moduleProps,\n distributorWarningButtonWrapper,\n distributorWarningDoNotShowAgain,\n distributorWarningContinue,\n distributorWarningCancel\n } = props;\n return (\n \n {distributorWarningHeaderProps}\n {renderDistributorWarningBody(props)}\n \n {distributorWarningDoNotShowAgain}\n \n {distributorWarningCancel} {distributorWarningContinue}\n \n \n \n );\n};\n\n/**\n * Distributor selector view props.\n * @param props - Distributor selector view props.\n * @returns - HTML.\n */\nconst DistributorSelectorView: React.FC = props => {\n const { currentDistributorContainer, currentDistributorButton, state } = props;\n\n return currentDistributorContainer ? (\n \n {currentDistributorButton}\n {renderDistributorDetailsPopup(props)}\n {state.showWarningDialog ? renderWarningDialog(props) : renderDistributorSelectorModal(props)}\n \n ) : null;\n};\n\nexport default DistributorSelectorView;\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 { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-header';\nconst headingClassName = `${componentClassName}__heading`;\nconst orderCountClassName = `${componentClassName}__order-count`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderResources {\n orderCountLabel: string;\n ordersCountLabel: string;\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderData interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderData {\n salesOrders: SalesOrder[];\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersHeaderProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersHeaderProps\n extends Msdyn365.IComponentProps {\n className?: string;\n resources: IOrderHistoryWithSearchAndFiltersHeaderResources;\n textProps: Msdyn365.ITextProps;\n showOrderCount: boolean;\n extraActions?: React.ReactNode;\n onChange(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersHeader component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersHeaderFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersHeaderProps\n) => {\n const {\n resources,\n data: { salesOrders },\n textProps,\n showOrderCount,\n extraActions\n } = props;\n\n const orderCount = salesOrders?.length;\n const orderCountText = `(${orderCount} ${orderCount === 1 ? resources?.orderCountLabel : resources?.ordersCountLabel})`;\n\n return (\n \n {textProps?.text && (\n \n )}\n {showOrderCount && {orderCountText}}\n {extraActions}\n \n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersHeader component.\n */\nexport const OrderHistoryWithSearchAndFiltersHeaderComponent: React.FunctionComponent = Msdyn365.msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersHeaderProps\n>('OrderHistoryWithSearchAndFiltersHeaderComponent', { component: OrderHistoryWithSearchAndFiltersHeaderFunctionalComponent });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps, IStoreSelectorViewProps } from './index';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
{categoryAutoSuggestionHeading}
;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\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 { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
    \n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
      \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
    \n \n {this.state.isFilterExpanded ? (\n
      \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
    \n {storeHoursList.map(displayTime => (\n
    \n {displayTime.endDayShort ? (\n
    \n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
    \n ) : (\n
    \n {displayTime.startDayShort}\n
    \n )}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
    \n {storeOpenFrom}-{storeOpenTo}\n
    \n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
    \n
    \n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
    \n
    \n
    \n

    {resources.contactInfoHeader}

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

    {resources.storeHoursHeader}

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

    {resources.availabilityInfoHeader}

    }\n {stockText &&

    {stockText}

    }\n {isCurrentLocation ? (\n

    {resources.currentLocation}

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

    {resources.emptyLocationsText}

    \n
    \n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
    ;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
    \n \n
    \n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
    \n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
    \n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
    \n {storeHoursList?.map(displayTime => (\n
    \n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
    \n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
    \n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
    \n \n {filteredDeliveryMode.Description}\n \n
    \n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
    {pickUpMethodLabel}
    \n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
    \n \n {currentStorePickUpOption}\n \n
      \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
    \n
    {pickupOptionDropdownError}
    \n
    \n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
    \n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
    \n {pickupDeliveryOptionErrorMessage}\n
    \n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
    \n
    \n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
    \n
    \n
    \n

    {locationLineItem.resources.contactInfoHeader}

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

    {locationLineItem.resources.storeHoursHeader}

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

    {resources.availabilityInfoHeader}

    \n {stockText &&

    {stockText}

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

    {resources.currentLocation}

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

    {storeSelectorViewProps.resources.contactText}

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

    {storeSelectorViewProps.resources.timeText}

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

    {productAvailability}

    \n {stockStatus &&

    {stockStatus}

    }\n
    \n )}\n
    \n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
    \n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n
    \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n"],"names":["InstrumentLinks","React","constructor","_mapEditableLinks","link_data","length","editableLinks","forEach","link","index","payLoad","getPayloadObject","this","props","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","btnClass","editableLink","ariaLabel","className","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onClick","onTelemetryClick","push","render","links","Msdyn365","editProps","requestContext","InstrumentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","_buildColumns","columns","mainHeading","_headingTag","map","item","idx","key","tag","text","heading","paragraph","LinksComponent","Object","assign","_this$props$context$r","_this$props$config$ma","mainImage","config","error","imageProps","gridSettings","imageSettings","instrumentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","id","layout","msdyn365__moduleLayout","shouldSkipToMainImage","renderView","_objectSpread","instrumentBlockContainer","moduleProps","classnames","imageContainer","Module","Node","getOriginalPrice","_ref","_ref2","_props$data$price$Adj","data","price","AdjustedPrice","TradeAgreementPrice","BasePrice","formatCurrency","showCC","undefined","currencyCode","CurrencyCode","_cultureFormatter","_props$data$price","ExtensionProperties","_cc","find","element","Key","Value","StringValue","trim","cultureFormatter","formatNumber","style","currency","minimumFractionDigits","showPriceRangeForMasterProduct","_props$isPriceMinMaxE","_props$product","_props$product2","isPriceMinMaxEnabled","product","ProductTypeValue","ProductType","Master","KitMaster","MinVariantPrice","MaxVariantPrice","renderCurrentPrice","_props$priceResources","itemProp","priceResources","priceRangeSeparator","CustomerContextualPrice","getActivePrice","PriceComponent","msdyn365Commerce","createComponentOverride","component","isSalesAgreementPriceFeatureEnabled","SalesAgreementPrice","_props$data$price$Sal","_props$priceResources8","_props$priceResources9","isExpanded","setIsExpanded","toggle","Button","salesAgreementPricePrompt","tabIndex","_props$data$price$Att","_props$priceResources2","_props$priceResources3","_props$priceResources4","_props$priceResources5","_props$priceResources6","_props$priceResources7","firstPriceLine","AttainablePriceLines","format","salesAgreementExpirationDatePrompt","formatDate","EffectiveDate","ExpirationDate","salesAgreementCommittedQuantityPrompt","CommittedQuantity","salesAgreementRemainingQuantityPrompt","RemainingQuantity","renderSalesAgreementDetail","originalSalesPrice","activeSalesPrice","showStrikethroughPricing","initialPrice","originalPriceText","currentPriceText","savingsText","renderCurrentPriceWithOriginalPrice","originalPrice","_props$data$price$Bas","_props$data$price$Tra","Math","max","shouldUseFreePriceText","freePriceText","_price","_symbol","replace","Number","toString","maxVariantPrice","minVariantPrice","_currencyCode","_props$data$price2","_element$Value","_element$Value2","_element$Value3","OverlayModal","modal","checkoutExpress","waiting","alert","addPaymentForm","overlayModal","title","shouldHideExpressCheckout","ItemComponent","loading","itemProps","checkoutPlainContainerProps","items","Form","formProps","label","inputPinLabel","inputExpLabel","inputProps","inputNumProps","inputPinProps","inputExpProps","inputNumber","inputPin","inputExp","applyButton","supportExternalGiftCard","showGiftCardPinInput","showGiftCardExpInput","alertFieldLabel","Item","selectedGiftCard","giftCardBalanceCheckProps","form","DistributorSelectorCountMessage","distributors","distributorCountMessage","DistributorSelectorTermsOfService","onTextChange","DistributorSelectorWaiting","DistributorSelectorDoNotShowAgain","_ref3","onChange","doNotShowAgainMessage","type","DistributorSelectorButton","_ref4","DistributorEmptyMessage","_ref5","emptyLocationsText","onSetCurrentDistributorClickHandler","_props$distributor$Or","handlers","onSetAsCurrentDistributor","distributor","OrgUnit","RecordId","onViewAllDistributorDetailsClickHandler","_props$distributor$Or2","onViewAllDistributorDetails","DistributorSelectorLineItemComponent","_distributor$OrgUnit","_distributor$OrgUnit2","_distributor$OrgUnit3","_distributor$OrgUnit4","_distributor$OrgUnitD","resources","currentDistributorId","shouldShowIndex","selectDistributorText","distributorDetailsToBeShown","mainClassName","distributorName","OrgUnitName","isCurrentDistributor","TelemetryConstant","CurrentDistributor","currentDistributorAttributes","distributorAddress","OrgUnitAddress","FullAddress","distributorPhoneNo","Phone","deliveryMethods","OrgUnitDeliveryOptions","DeliveryOptions","currentDistributorText","indexOf","locationHeadingText","primaryContactText","deliveryMethodHeadingText","ArrayExtensions","hasElements","deliveryMethod","Description","viewAllDistributorText","DistributorSelectorLines","super","onDistributorSelected","orgUnit","_scrollIntoView","_selectedDistributorD","selectedDistributorDiv","selectedDistributorRef","current","parent","shouldDisplayList","parentElement","scrollTop","offsetTop","clientHeight","scrollLeft","offsetLeft","distributorCounter","componentDidMount","reaction","setTimeout","componentDidUpdate","previousProps","selectedDistributorId","_renderDistributor","selected","ref","__decorate","observable","DistributorPaymentOptionList","_renderTenderTypes","isExpandOptionsState","state","isFilterExpanded","setState","handleFilterSelection","async","event","preventDefault","paymentCode","currentTarget","getAttribute","selectedPaymentTypes","_distributorPaymentTypesMenu","_paymentTypesList$fin","paymentTypesMenuText","paymentTypesList","defaultOptionText","selectedPaymentTypesDesc","payment","TenderTypeId","Name","tenderType","onKeyDown","DistributorSelectorSearchForm","_onChangeHandler","onPaymentFilterSelected","tenderTypeId","Promise","resolve","renderPaymentTypeList","paymentTypesOptions","paymentFilterMenuHeading","paymentFilterByHeading","filteredPaymentType","ToggleMapView","toggleMapViewAttributes","viewMapText","viewListText","showLocatorView","paymentTypes","showPaymentTypeFilter","onToggleListMapViewState","toggleButtonText","toggleButtonClass","DistributorSelector","mainClass","headerClass","currentDistributorBtnRef","toggleListMapViewState","distributorSelectorStateManager","result","onChangeForDoNotShow","warningDialogState","target","checked","onSelectDistributor","distributorId","_setCurrentDistributor","onChangeDistributorClick","setSelectedDistributorId","isDistributorDetailPopupOpen","closeDistributorDetailPopup","isDistributorSelectorDialogOpen","showDistributorDetails","distributorDetailsFromPopup","openDistributorSelectorDialog","parentElementRef","onDistributorCloseButtonClick","continueButtonClick","actionContext","cookies","currentDistributor","currentSelectedDistributor","hideWarningMessage","isConsentGiven","_closeDistributorSelectorDialog","redirectToDistributorURL","cancelButtonClick","showWarningDialog","backToSearchClick","onViewAllDistributorDetailsFromPopup","_this$currentDistribu","_this$currentDistribu2","_this$currentDistribu3","DistributorId","getCurrentDistributor","url","requestUrl","user","isAuthenticated","_this$props$data$dist","distributorList","_distributor$MarketSe","MarketSettings","localeItems","some","locale","href","toLowerCase","localeBaseUrl","_currentDistributor$O","_currentDistributor$O2","DistributorName","getUniquePaymentTypes","uniquePaymentTypes","Set","_distributor$PaymentT","PaymentTypes","paymentType","add","filterDistributorsByPaymentTypes","filteredPaymentTypeId","filter","_distributor$PaymentT2","marketSettings","currentLocale","localeItem","distributorURL","defaultLocale","isDefaultLocale","startsWith","window","location","debug","handleDistributorSelectorClick","_this$props$data$dist2","_this$currentDistribu4","openDistributorDetailPopup","onFilteredPaymentType","renderDistributorDetailsViewProps","distributorDetails","_distributorDetails$O","_distributorDetails$O2","_distributorDetails$O3","_distributorDetails$O4","switchDistributorText","distributorDetailsModalPopup","classname","distributorDetailsModalHeader","distributorDetailsHeaderProps","closeDistributorDetailPopupButtonAriaLabel","distributorDetailsModalBody","distributorDetailsModalBodyContainer","distributorDetailsLocation","distributorDetailsPrimaryContact","distributorDetailsDeliveryMethods","distributorDetailsViewAllDetails","distributorDetailsChangeDistributor","onEdit","handleChangeDistributorTextChange","distributorDetailsModalFooter","distributorDetailsSliderWrapper","renderDistributorSliderViewProps","isCurrentDistributorSelected","_distributorDetails$O5","distributorDetailsSliderDistributorName","distributorDetailsSliderHeaderContent","distributorSliderBackToSearch","distributorDetailsSliderHeaderContainer","distributorDetailsSliderBodyContainer","distributorDetailsSliderFooterContainer","distributorDetailsSliderInformationWrapper","distributorDetailsSlidercurrentDistributorTitle","distributorDetailsSliderSelectDistributor","handleSelectDistributorTextChange","handleHeadingChange","distributorWarningDialogHeading","value","distributorSelectorHeading","handleWarningTextChange","distributorWarningContent","handleLinkTextChange","termsOfServiceLink","stopPropagation","shouldShowDistributors","isOboRequest","getAccountSelectionCookie","isSignedIn","checkUserStateAndOpenDialog","getDistributorDetails","_getAndUpdateDistributorList","isSearchInProgress","_updateDistributorListInStateManager","_this$currentDistribu5","sortedDistributorList","_sortDistributor","setDistributorsList","catch","message","_distributorSelectorS","distributorSelectorContext","focus","updateDistributorMapVisibility","closeDistributorSelectorDialog","searchTerm","_setSelectedDistributor","hideDistributorWarning","channel","_this$props$data$dist3","loadMapApi","_this$props$data$dist4","_this$props$context$a","BingMapsEnabled","BingMapsApiKey","lang","market","ChannelCountryRegionISOCode","_this$currentDistribu6","_this$currentDistribu7","_distributorSelectorS2","_distributorSelectorS3","doNotShowAgainCheckbox","noDistributorFoundText","slots","maps","mapSlot","currentDistributorName","headerText","headerCurrentDistributorText","distributorInfoList","hasMapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","shouldOpenDistributorSelectorDialog","shouldOpenDistributorDetailPopup","listMapViewState","displayList","canShowLocationView","showMapViewLink","isMapModuleLoaded","showDistributorDetailsOnMap","viewProps","showDistributorDetailsPopup","currentDistributorContainer","currentDistributorButton","color","headerCurrentDistributorAriaLabel","Modal","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","isMobileView","headerContainerProps","ModalHeader","distributorSelectorHeaderProps","distributorWarningHeaderProps","footerContainerProps","ModalFooter","bodyContainerProps","ModalBody","bodyWrapperProps","distributorsResultContainerProps","distributorsResultWrapperProps","mapContainerProps","searchForm","spinner","distributorLinesViewProps","isLocationDisabled","noDistributorsMessage","terms","distributorWarningButtonWrapper","distributorWarningDoNotShowAgain","distributorWarningContinue","distributorWarningCancel","_value$OrgUnit","observer","renderDistributorSelectorModal","distributorDetailsSliderCurrentDistributorTitle","renderDistributorDetails","renderDistributorSelectorBody","renderWarningDialog","renderDistributorWarningBody","renderDistributorDetailsPopup","componentClassName","headingClassName","orderCountClassName","OrderHistoryWithSearchAndFiltersHeaderComponent","createComponent","salesOrders","textProps","showOrderCount","extraActions","orderCount","orderCountText","orderCountLabel","ordersCountLabel","renderSelectedStore","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","isCurrentLocation","currentLocation","isPreferredStore","preferredStoreButton","removePreferredStoreButton","canSelectLocation","deliveryOptions","pickUpDeliveryOptionButton","pickupModes","renderDeliveryOptions","FooterContainerProps","HeaderContainerProps","HeaderProps","ModuleProps","BodyContainerProps","locationsMessage","search","locationsList","noLocationsMessage","storeResultContainerProps","storeDetailsModal","selectedLocation","renderBody","_props$data$operation","b2bRequestsStatus","table","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","src","Image","altText","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","formWrapper","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","input","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","_item$id","LiProduct","AProduct","thumbnail","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","callbacks","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","useState","isMobilePort","setIsMobile","useEffect","propsFormInput","propsFormInputCurrent","action","isMobileViewport","useCallback","Browser","addEventListener","viewport","StringExtensions","isNullOrEmpty","onBlur","isSearchFormExpanded","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","deliveryCode","_renderDeliveryOptions","bind","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","delivery","Code","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","selectedPickupModeDesc","secondsToTime","seconds","hours","floor","ampm","divisorForMinutes","getShortTimeString","day","days","monday","tuesday","wednesday","thursday","friday","saturday","sunday","getFullTimeString","mondayFull","tuesdayFull","wednesdayFull","thursdayFull","fridayFull","saturdayFull","sundayFull","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","storeHours","dateForLookup","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","onSelected","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","buildDistanceString","distance","preferredDistanceUnit","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isInStock","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","productPickUpOptionList","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","isError","setError","contactInfoHeader","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","availabilityInfoHeader","pickUpButtonClickHandler","renderPickupModes","filteredPickupMode","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","pickupDeliveryOptionErrorMessage","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","selectedLocationDiv","selectedLocationRef","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","selectedStoreLocationId","locations","_stores","_sortStores","show","store","_renderStoreLocation","_store$OrgUnitAvailab","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","StoreHours","ItemAvailabilities","productPickUpDeliveryOptions","stores","_value$OrgUnitAvailab","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","filterPickupModeSelected","renderPickupModesList","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","isMapDisabled","showAllStores","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","StoreSelectorWaiting","StoreSelectorTermsOfService","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","StoreSelector","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","isSeeAllStoreValue","geoLocate","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","closeDialog","_setOrgUnitStoreInformation","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","isDialog","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","warning","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","isInlineView","isLocatorView","storeSelectorActions","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","dialogClassName","outOfStockThreshold","sortLocations","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","description","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","parseInt","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","MsDyn365","isBrowser","_data$storeSelectorSt","displayMap"],"sourceRoot":""}