{"version":3,"file":"static/js/17.c41bf702059a2b6066f2.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/mands-cookies/components/accept-button.tsx?0b21","webpack://Msdyn365.Commerce.Online/./src/modules/mands-cookies/components/reject-button.tsx?859d","webpack://Msdyn365.Commerce.Online/./src/modules/mands-cookies/components/links.tsx?0a61","webpack://Msdyn365.Commerce.Online/./src/modules/mands-cookies/mands-cookies.tsx?78a7","webpack://Msdyn365.Commerce.Online/./src/modules/mands-cookies/mands-cookies.view.tsx?0ca8","webpack://Msdyn365.Commerce.Online/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/account-customer-balance.view.tsx?70d2","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","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/store-selector/store-selector.view.tsx?71a6"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { Cookie } from 'universal-cookie';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n cookies?: Cookie | undefined;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose,\n cookies\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const handleAccept = () => {\n if (!cookies?.get('reject')) {\n cookies?.set('accept', true);\n }\n onClose();\n };\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface ICookieComplianceRejecttButton {\r\n rejectCookiesButtonText?: string;\r\n rejectCookiesButtonAriaLabel?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n cookies?: Cookies | undefined;\r\n}\r\n\r\nexport const CookieComplianceRejectButton: React.FC = ({\r\n rejectCookiesButtonText,\r\n rejectCookiesButtonAriaLabel,\r\n telemetryContent,\r\n onClose,\r\n cookies\r\n}) => {\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'reject cookies');\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const handleReject = () => {\r\n if (!cookies?.get('accept')) {\r\n cookies?.set('reject', true);\r\n }\r\n onClose();\r\n };\r\n return (\r\n \r\n {rejectCookiesButtonText}\r\n \r\n );\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../mands-cookies.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\n// import * as MsDyn365 from '@msdyn365-commerce/core';\nimport MsDyn365, { RichTextComponent, ContentEditableEvent, ICoreContext } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport Cookies from 'universal-cookie';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks, CookieComplianceRejectButton } from './components';\nimport { IMandsCookiesConfig, IMandsCookiesProps } from './mands-cookies.props.autogenerated';\n// import { reaction } from 'mobx';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends IMandsCookiesProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n rejectButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n isRejected: boolean;\n isAccepted: boolean;\n}\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n public cookies: Cookies | undefined;\n public isRejected: boolean;\n public isAccepted: boolean;\n public listOfCookies: string[];\n public forceFullyRemoveCookiesList: string[];\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IMandsCookiesProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n this.cookies = new Cookies();\n this.isRejected = this.cookies?.get('reject') ? true : false;\n this.isAccepted = this.cookies?.get('accept') ? true : false;\n this.listOfCookies = props.config.cookiesList?.split(',')!;\n this.forceFullyRemoveCookiesList = props.config.forceFullyRemoveCookiesList?.split(',')!;\n\n if (MsDyn365.isBrowser && !this.isRejected && !this.isAccepted) {\n this.handleCookies(this.listOfCookies, props.context);\n }\n }\n public componentDidMount(): void {\n const { context } = this.props;\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n if (this.isRejected && MsDyn365.isBrowser && !this.isAccepted) {\n this.removeCookies(this.forceFullyRemoveCookiesList, context);\n this.handleCookies(this.listOfCookies, context);\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel, rejectCookiesButtonText, rejectCookiesAriaLabel } = resources;\n const { visible } = this.state;\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: IMandsCookiesConfig;\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n ),\n rejectButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: ContentEditableEvent): void => {\n // eslint-disable-next-line security/detect-object-injection\n if (this.props.config.actionLinks?.[linkIndex]) {\n // eslint-disable-next-line security/detect-object-injection\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n\n private handleCookies(\n data: string[],\n context: ICoreContext<{\n [x: string]: any;\n }>\n ) {\n data.forEach(cookieName => {\n if (context.request.cookies.get(cookieName.trim())) {\n document.cookie = `${cookieName.trim()}=; Max-Age=-99999999;`;\n context.request.cookies.remove(cookieName.trim());\n }\n });\n }\n private removeCookies(\n data: string[],\n context: ICoreContext<{\n [x: string]: any;\n }>\n ) {\n data.forEach(cookieName => {\n if (context.request.cookies.get(cookieName.trim())) {\n const expires = new Date();\n expires.setTime(expires.getTime() - 1);\n document.cookie = `${cookieName.trim()}=; expires=${expires.toUTCString()}; path=/`;\n context.request.cookies.remove(cookieName.trim());\n }\n });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable no-duplicate-imports */\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './mands-cookies';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links, rejectButton } = props;\n return (\n \n \n \n {text}\n {links}\n \n \n {rejectButton}\n {` `}\n {acceptButton}\n \n \n \n );\n};\nexport default CookieComplianceView;\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 { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n return (\n \n \n {heading}\n {aadAPIConainer}\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 { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\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 {\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\n}\n\nexport default InteractiveFeatureCollection;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems &&\n interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\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 { 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"],"names":["CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","cookies","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Object","assign","type","className","onClick","handleAccept","get","set","CookieComplianceRejectButton","rejectCookiesButtonText","rejectCookiesButtonAriaLabel","handleReject","CookieComplianceLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","this","props","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","CookieCompliance","_this$cookies","_this$cookies2","_props$config$cookies","_props$config$forceFu","super","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleLinkTextChange","linkIndex","event","_this$props$config$ac","config","actionLinks","target","value","handleContentChange","content","state","visible","cookieRef","_onDismiss","bind","Cookies","isRejected","isAccepted","listOfCookies","cookiesList","split","forceFullyRemoveCookiesList","MsDyn365","isBrowser","handleCookies","componentDidMount","isConsentGiven","setState","removeCookies","resources","acceptCookiesAriaLabel","rejectCookiesAriaLabel","moduleConfig","error","viewProps","_objectSpread","onDismiss","CookieComplianceBanner","moduleProps","classnames","ref","AlertProps","color","fade","Content","text","RichTextComponent","onEdit","ArrayExtensions","hasElements","acceptButton","rejectButton","renderView","setConsentCookie","location","reload","data","cookieName","trim","document","cookie","remove","expires","Date","setTime","getTime","toUTCString","Module","Alert","Node","aadGeneric","aadConainer","aadAPIConainer","heading","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","InteractiveFeatureCollection","_telemetryContent","handleTextChange","title","item","itemsCounter","keyIndex","key","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","slots","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","tag","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","id","vertical","createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","map","_getFeatureItem","interactiveFeatureCollectionView","tileItem","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","current","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","async","preventDefault","deliveryCode","currentTarget","getAttribute","onChange","_renderDeliveryOptions","window","addEventListener","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","delivery","Code","tabIndex","Description","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","undefined","onKeyDown","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","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","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","buildDistanceString","distance","preferredDistanceUnit","isLocationDisabled","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","StoreSelectorLocationLineItemComponent","hideStockStatus","isCurrentLocation","isInStock","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","productPickUpOptionList","shouldShowIndex","storeName","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","filter","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","isPreferredStore","TelemetryConstant","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","isError","setError","contactInfoHeader","storeHoursHeader","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","availabilityInfoHeader","currentLocation","pickUpButtonClickHandler","renderPickupModes","filteredPickupMode","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","pickupDeliveryOptionErrorMessage","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactText","timeText","availabilityText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","storeHoursMondayText","storeHoursTuesdayText","storeHoursWednesdayText","storeHoursThursdayText","storeHoursFridayText","storeHoursSaturdayText","storeHoursSundayText","storeHoursMondayFullText","storeHoursTuesdayFullText","storeHoursWednesdayFullText","storeHoursThursdayFullText","storeHoursFridayFullText","storeHoursSaturdayFullText","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreHours","ItemAvailabilities","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","name","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeDetailsMain","storeHeader","storeDetailsCloseButton","Button","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","handleHeadingChange","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","input","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","message","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","Modal","classname","autoFocus","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody"],"sourceRoot":""}