{"version":3,"file":"static/js/17.7e7a601979505889ad5c.chunk.js","mappings":"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","sources":["webpack://lds-commerce/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-organization-wide-selector.component.tsx?b9a7","webpack://lds-commerce/./src/modules/accordion/accordion.tsx?78b1","webpack://lds-commerce/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://lds-commerce/./src/modules/footer-item/footer-item.tsx?074a","webpack://lds-commerce/./src/modules/site-picker/site-picker.tsx?b9ec","webpack://lds-commerce/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://lds-commerce/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://lds-commerce/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://lds-commerce/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://lds-commerce/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://lds-commerce/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://lds-commerce/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://lds-commerce/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://lds-commerce/./src/modules/store-selector/store-selector.tsx?e416","webpack://lds-commerce/./src/themes/fabrikam/views/search.view.tsx?af4e","webpack://lds-commerce/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://lds-commerce/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://lds-commerce/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://lds-commerce/./src/modules/account-customer-balance/account-customer-balance.view.tsx?70d2","webpack://lds-commerce/./src/modules/footer-item/footer-item.view.tsx?c5af","webpack://lds-commerce/./src/modules/site-picker/site-picker.view.tsx?5319","webpack://lds-commerce/./src/modules/store-selector/store-selector.view.tsx?71a6"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { Button, ITelemetryContent, getPayloadObject, getTelemetryAttributes } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-organization-wide-selector';\nconst buttonClassName = `${componentClassName}__button`;\nconst buttonActiveClassName = `${componentClassName}__active-button`;\nconst buttonInactiveClassName = `${componentClassName}__inactive-button`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources {\n currentUserOptionLabel: string;\n currentUserOptionAriaLabel?: string;\n organizationWideOptionLabel: string;\n organizationWideOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState {\n CurrentUser,\n OrganizationWide\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData {\n customer: Customer;\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n extends IComponentProps {\n className?: string;\n resources: IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources;\n currentSelectorState: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState;\n telemetryContent?: ITelemetryContent;\n onChange(state: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersOrganizationWideSelectorFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n) => {\n // Current version doesn't include functionality for non b2b users or non-admin b2b users.\n if (!props.data.customer.IsB2bAdmin) {\n return
;\n }\n\n const [selectorState, setSelectorState] = React.useState(props.currentSelectorState);\n\n const onClickHandler = (newSelectorState: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState) => {\n setSelectorState(newSelectorState);\n props.onChange(newSelectorState);\n };\n\n // define telemetry attributes\n const currentUserOrderHistoryAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, props.resources?.currentUserOptionLabel ?? 'Current user order history')\n );\n const orgWideOrderHistoryAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, props.resources?.currentUserOptionLabel ?? 'Org wide order history')\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.CurrentUser)}\n {...currentUserOrderHistoryAttributes}\n >\n {props.resources?.currentUserOptionLabel}\n \n onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.OrganizationWide)}\n {...orgWideOrderHistoryAttributes}\n >\n {props.resources?.organizationWideOptionLabel}\n \n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n */\nexport const OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n>('OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent', {\n component: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorFunctionalComponent\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\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 { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ISearchCategoryViewProps,\r\n ISearchFormViewProps,\r\n ISearchKeywordViewProps,\r\n ISearchProductViewProps\r\n} from '@msdyn365-commerce-modules/search/src/modules/search/./components';\r\nimport { ISearchViewProps } from '@msdyn365-commerce-modules/search/src/modules/search/./search';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n FormWrapper,\r\n label\r\n } = props;\r\n\r\n return (\r\n \r\n {label}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\r\n \r\n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.submitBtn}\r\n {form.input}\r\n {form.cancelBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (KeywordSuggest: INodeProps, UlKeyword: INodeProps, keywordSuggestions?: ISearchKeywordViewProps) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (ProductSuggest: INodeProps, UlProduct: INodeProps, productSuggestions?: ISearchProductViewProps) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.thumbnail}\r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;\r\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 { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\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 { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\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":["componentClassName","buttonClassName","buttonActiveClassName","buttonInactiveClassName","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent","msdyn365Commerce","createComponent","component","props","_props$resources$curr","_props$resources","_props$resources$curr2","_props$resources2","_props$resources$curr3","_props$resources3","_props$resources4","_props$resources$curr4","_props$resources5","_props$resources6","_props$resources7","_props$resources$orga","_props$resources8","_props$resources9","_props$resources$orga2","_props$resources10","_props$resources11","_props$resources12","data","customer","IsB2bAdmin","React","className","classnames","selectorState","setSelectorState","currentSelectorState","onClickHandler","newSelectorState","onChange","currentUserOrderHistoryAttributes","getTelemetryAttributes","telemetryContent","getPayloadObject","resources","currentUserOptionLabel","orgWideOrderHistoryAttributes","Button","Object","assign","CurrentUser","currentUserOptionAriaLabel","title","onClick","OrganizationWide","organizationWideOptionAriaLabel","organizationWideOptionLabel","Accordion","constructor","super","expandAllButtonRef","collapseAllButtonRef","handleHeadingChange","event","this","config","heading","text","target","value","_onExpandAll","bind","_onCollapseAll","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","payLoad","state","isDisabled","render","slots","headingComponent","Msdyn365","tag","editProps","onEdit","requestContext","accordionViewProps","_objectSpread","AccordionContainer","moduleProps","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","length","map","item","index","_getAccordionItem","renderView","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","disabled","expandAllText","ref","toggleAllSeparator","collapseAllText","error","accordionState","isAllExpanded","actionContext","update","createAccordionStateInput","setState","setTimeout","_this$collapseAllButt","current","focus","_this$expandAllButton","key","interactionStyle","__decorate","observer","AccordionItem","moduleClassName","accordionItemTitle","_onToggle","shouldComponentUpdate","nextProps","accordionExpandedStateResult","accordionExpandedState","result","expanded","undefined","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","ControlledDrawer","toggleButtonText","collapseProps","isOpen","onToggle","onTextChange","accordionSlots","FooterItem","handleTextChange","handleLinkTextChange","link","linkText","image","footerItemClassName","attributes","viewProps","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","linkUrl","destinationUrl","role","href","ariaLabel","openInNewTab","onTelemetryClick","editableLink","additionalProperties","ariaHiddenAttr","src","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","shouldSkipToMainImage","SitePicker","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","document","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","_updateViewport","viewport","device","Type","isMobile","componentDidMount","_document","_document2","MsDyn365","isBrowser","addEventListener","body","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","_document3","_document4","removeEventListener","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","openGlyph","closeGlyph","glyphPlacement","isMobileView","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","e","preventDefault","currentTarget","cookies","isConsentGiven","cookieConfig","maxAge","set","location","defaultImageSettings","sm","md","xl","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","imageProps","tabIndex","siteRedirectUrl","siteName","Image","altText","_getViewport","innerWidth","observable","computed","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","_pickupListOptionMenu","_onSelect","async","deliveryCode","getAttribute","_renderDeliveryOptions","pickupListOptionMenuText","pickupmodeList","delivery","Code","Description","stopPropagation","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","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","get","buildStoreHoursString","closedText","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","push","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","ArrayExtensions","hasElements","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","isPreferredStore","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","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","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","id","isMapDisabled","showAllStores","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","onKeyUp","color","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","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","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","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","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","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","_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","_storeSelectorStateMa2","_storeSelectorStateMa3","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","maps","mapSlot","isMobileDevice","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","fade","onClosed","horizontalPosition","verticalPosition","toggle","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","_renderForm","form","SearchForm","FormWrapper","Node","submitBtn","cancelBtn","_renderKeywordSuggestions","KeywordSuggest","UlKeyword","keywordSuggestions","_renderProductSuggestions","ProductSuggest","UlProduct","productSuggestions","items","LiProduct","AProduct","thumbnail","price","_renderCategorySuggestions","CategorySuggest","UlCategory","categorySuggestions","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","autosuggestCategory","autosuggestKeyword","autosuggestProduct","label","Module","_renderAccordionItemContent","accordionItemContent","aadGeneric","aadConainer","aadAPIConainer","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","FooterItemView","_renderElement","_renderSitePicker","_renderSiteOptionsList","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","renderDeliveryOptions","renderBody"],"sourceRoot":""}