{"version":3,"file":"static/js/19.1bc42be2b917b5784f5c.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/freedom-nav-item/freedom-nav-item.tsx?6602","webpack://Msdyn365.Commerce.Online/./src/modules/freedom-nav-item/freedom-nav-item.view.tsx?e523","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-nav-item/obrien-nav-item.tsx?7706","webpack://Msdyn365.Commerce.Online/./src/modules/obrien-nav-item/obrien-nav-item.view.tsx?4762","webpack://Msdyn365.Commerce.Online/./src/themes/absoluteoutdoors/views/cart.view.tsx?8a04","webpack://Msdyn365.Commerce.Online/./src/themes/arborbb/views/cart.view.tsx?e3fe","webpack://Msdyn365.Commerce.Online/./src/themes/freedom23/views/cart.view.tsx?039f","webpack://Msdyn365.Commerce.Online/./src/themes/liquid23/views/cart.view.tsx?f72f","webpack://Msdyn365.Commerce.Online/./src/themes/obrien23/views/cart.view.tsx?654c","webpack://Msdyn365.Commerce.Online/./src/themes/watersportdiscounts/views/cart.view.tsx?7c3d","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/ratings-histogram.view.tsx?6e01","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IFreedomNavItemConfig, IFreedomNavItemProps, IHeadingData, ILinkData } from './freedom-nav-item.props.autogenerated';\r\n\r\nexport interface IFreedomNavViewProps extends IFreedomNavItemProps {\r\n heading: React.ReactNode;\r\n image: React.ReactNode;\r\n text: React.ReactNode;\r\n linkText: React.ReactNode;\r\n className?: string;\r\n FreedomNavItem: IModuleProps;\r\n HeadingContainer: INodeProps;\r\n ItemContainer: INodeProps;\r\n Link: INodeProps;\r\n EditableLink: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * FreedomNavItem component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class FreedomNavItem extends React.PureComponent> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private attributes: Msdyn365.IDictionary | undefined;\r\n\r\n constructor(props: IFreedomNavItemProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n // Construct telemetry attribute to render\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { heading, image, link, text } = this.props.config;\r\n const FreedomNavItemClassName = classnames('freedom-nav__item', this.props.config.className);\r\n const linkText = link && link.linkText ? link.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const viewProps: IFreedomNavViewProps = {\r\n ...this.props,\r\n heading: this._createHeading(heading!),\r\n image: this._createImageMarkup(image!),\r\n text: this._createText(text!),\r\n linkText: this._createLinkText(link!),\r\n EditableLink: this._createLink(link!),\r\n\r\n FreedomNavItem: {\r\n moduleProps: this.props,\r\n className: FreedomNavItemClassName\r\n },\r\n\r\n HeadingContainer: {\r\n className: 'freedom-nav__heading'\r\n },\r\n\r\n ItemContainer: {\r\n className: 'freedom-nav__link__container'\r\n },\r\n\r\n // @ts-expect-error\r\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\r\n tag: 'a',\r\n role: 'link',\r\n className: 'freedom-nav__link',\r\n href: link.linkUrl.destinationUrl,\r\n title: linkText,\r\n 'aria-label': link.ariaLabel,\r\n target: link.openInNewTab ? '_blank' : undefined,\r\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\r\n ...this.attributes\r\n },\r\n className: FreedomNavItemClassName\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.text = event.target.value;\r\n\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.link!.linkText = event.target.value;\r\n\r\n private _createLink(link: ILinkData): React.ReactNode | null {\r\n if (link) {\r\n const linkText = link.linkText ? link.linkText : '';\r\n\r\n // TODO: Update the inner tag in the anchor link to span\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'freedom-nav__link',\r\n linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: this.attributes!,\r\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\r\n };\r\n return (\r\n \r\n );\r\n\r\n }\r\n return null;\r\n }\r\n\r\n private _createLinkText(link: ILinkData): React.ReactNode | null {\r\n if (!link || !link.linkText) {\r\n return null;\r\n }\r\n\r\n return (\r\n {link.linkText}\r\n );\r\n }\r\n\r\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\r\n if (!heading || !heading.text || heading.text.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createText(text: string): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\r\n if (!item || !item.src || item.src.length === 0) {\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FreedomNavItem;\r\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IFreedomNavViewProps } from './freedom-nav-item';\r\n\r\n/**\r\n *\r\n * FreedomNavItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FreedomNavItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { FreedomNavItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFreedomNavViewProps): React.ReactNode | null {\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n {heading}\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FreedomNavItemView;\r\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 * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IObrienNavItemConfig, IObrienNavItemProps, IHeadingData, ILinkData } from './obrien-nav-item.props.autogenerated';\r\n\r\nexport interface IObrienNavViewProps extends IObrienNavItemProps {\r\n heading: React.ReactNode;\r\n image: React.ReactNode;\r\n text: React.ReactNode;\r\n linkText: React.ReactNode;\r\n className?: string;\r\n ObrienNavItem: IModuleProps;\r\n HeadingContainer: INodeProps;\r\n ItemContainer: INodeProps;\r\n Link: INodeProps;\r\n EditableLink: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * ObrienNavItem component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class ObrienNavItem extends React.PureComponent> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private attributes: Msdyn365.IDictionary | undefined;\r\n\r\n constructor(props: IObrienNavItemProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n // Construct telemetry attribute to render\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { heading, image, link, text } = this.props.config;\r\n const ObrienNavItemClassName = classnames('obrien-nav__item', this.props.config.className);\r\n const linkText = link && link.linkText ? link.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const viewProps: IObrienNavViewProps = {\r\n ...this.props,\r\n heading: this._createHeading(heading!),\r\n image: this._createImageMarkup(image!),\r\n text: this._createText(text!),\r\n linkText: this._createLinkText(link!),\r\n EditableLink: this._createLink(link!),\r\n\r\n ObrienNavItem: {\r\n moduleProps: this.props,\r\n className: ObrienNavItemClassName\r\n },\r\n\r\n HeadingContainer: {\r\n className: 'obrien-nav__heading'\r\n },\r\n\r\n ItemContainer: {\r\n className: 'obrien-nav__link__container'\r\n },\r\n\r\n // @ts-expect-error\r\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\r\n tag: 'a',\r\n role: 'link',\r\n className: 'obrien-nav__link',\r\n href: link.linkUrl.destinationUrl,\r\n title: linkText,\r\n 'aria-label': link.ariaLabel,\r\n target: link.openInNewTab ? '_blank' : undefined,\r\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\r\n ...this.attributes\r\n },\r\n className: ObrienNavItemClassName\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.text = event.target.value;\r\n\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.link!.linkText = event.target.value;\r\n\r\n private _createLink(link: ILinkData): React.ReactNode | null {\r\n if (link) {\r\n const linkText = link.linkText ? link.linkText : '';\r\n\r\n // TODO: Update the inner tag in the anchor link to span\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'obrien-nav__link',\r\n linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: this.attributes!,\r\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\r\n };\r\n return (\r\n \r\n );\r\n\r\n }\r\n return null;\r\n }\r\n\r\n private _createLinkText(link: ILinkData): React.ReactNode | null {\r\n if (!link || !link.linkText) {\r\n return null;\r\n }\r\n\r\n return (\r\n {link.linkText}\r\n );\r\n }\r\n\r\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\r\n if (!heading || !heading.text || heading.text.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createText(text: string): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\r\n if (!item || !item.src || item.src.length === 0) {\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ObrienNavItem;\r\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IObrienNavViewProps } from './obrien-nav-item';\r\n\r\n/**\r\n *\r\n * ObrienNavItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ObrienNavItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { ObrienNavItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IObrienNavViewProps): React.ReactNode | null {\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n {heading}\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ObrienNavItemView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n Guest Checkout\r\n {props.checkoutAsGuestButton}\r\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\r\n {props.expressCheckoutButton}\r\n ) : null}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\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 { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (cartLines: ICartlinesViewProps[] | undefined, cartEmptyText: string, CartlinesWrapper: INodeProps, storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode, waitingComponent: React.ReactNode, cartLoadingStatus: string, cartDataResult: boolean): JSX.Element[] | JSX.Element => {\r\n\r\n if (cartLoadingStatus) {\r\n return (<>\r\n {cartLoadingStatus}\r\n );\r\n }\r\n if (cartLines) {\r\n return cartLines.map((cartLine) => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {\r\n storeSelector && cartLine.pickUpInStore ? \r\n {cartLine.pickUpInStore.defaultComponent}\r\n : null\r\n }\r\n {\r\n cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )\r\n }\r\n
\r\n );\r\n });\r\n }\r\n return (cartDataResult ? (\r\n
\r\n

\r\n {cartEmptyText}\r\n

\r\n {backToShoppingButton}\r\n
\r\n ) : <>\r\n {waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (invoiceSummaryLines: IInvoiceSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps):\r\nJSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (orderSummaryLines: IOrderSummaryLines | undefined, OrderSummaryItems: INodeProps, props: ICartViewProps):\r\nJSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n\r\n \r\n );\r\n\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ?

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

: null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (pickUpText: string, shippingText: string, emailShippingText: string,\r\n titleSeparate: string, cartLine: ICartlinesViewProps, emailDeliveryModeCode?: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

\r\n {groupTitle}\r\n

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n { props.cartLinesGroup.map(cartlines => {\r\n return (
\r\n {renderCartLinesGroupHeader(props.resources.pickUpText, props.resources.shippingText,\r\n props.resources.emailshippingText, props.resources.titleSeparate, cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode)}\r\n {_renderCartlines(cartlines, props.resources.emptyCartText, props.CartlinesWrapper, props.storeSelector,\r\n props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n
);\r\n })}\r\n
\r\n );\r\n }\r\n return (props.cartDataResult ? (\r\n
\r\n
\r\n

\r\n {props.resources.emptyCartText}\r\n

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : <>\r\n {props.waitingComponent}\r\n \r\n );\r\n\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? renderCartLinesGroup(props) : \r\n {_renderCartlines(props.cartlines, props.resources.emptyCartText, props.CartlinesWrapper, props.storeSelector,\r\n props.backToShoppingButton, props.waitingComponent, props.cartLoadingStatus, props.cartDataResult)}\r\n }\r\n {props.orderSummaryHeading &&\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props) : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n }\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n Guest Checkout\r\n {props.checkoutAsGuestButton}\r\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\r\n {props.expressCheckoutButton}\r\n ) : null}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n Guest Checkout\r\n {props.checkoutAsGuestButton}\r\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\r\n {props.expressCheckoutButton}\r\n ) : null}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n Guest Checkout\r\n {props.checkoutAsGuestButton}\r\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\r\n {props.expressCheckoutButton}\r\n ) : null}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart/src/modules/cart/./cart';\r\nimport { ICartlinesViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/src/modules/cart/./components/cart-line-items-promotion';\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n cartEmptyText: string,\r\n CartlinesWrapper: INodeProps,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean\r\n): JSX.Element[] | JSX.Element => {\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n return cartLines.map(cartLine => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {storeSelector && cartLine.pickUpInStore ? (\r\n {cartLine.pickUpInStore.defaultComponent}\r\n ) : null}\r\n {cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n {cartLine.addToOrderTemplate}\r\n \r\n ) : (\r\n <>\r\n {cartLine.remove}\r\n {cartLine.addToWishlist}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{cartEmptyText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * Method will render error block.\r\n * @param errorData -The order summary errors interface.\r\n * @returns Jsx element.\r\n */\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render invoice summary lines.\r\n * @param invoiceSummaryLines -The invoicesummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render order summary lines.\r\n * @param orderSummaryLines -The ordersummary lines interface.\r\n * @param OrderSummaryItems -The order summary items props.\r\n * @param props -The cartview props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {props.promoCode}\r\n {orderSummaryLines.subtotal}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cart promotions.\r\n * @param promotions -The cartline item view props.\r\n * @returns Jsx element.\r\n */\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines group title.\r\n * @param cartLine -The cartline view props.\r\n * @param titleSeparate -The title separate.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

\r\n {cartLine.pickUpInStore?.deliveryOption}\r\n {titleSeparate}\r\n {cartLine.pickUpInStore?.orgUnitName}\r\n

\r\n ) : null}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines groups header title.\r\n * @param pickUpText -The pickup text for group.\r\n * @param shippingText -The shipping text for group.\r\n * @param emailShippingText -The email shipping text for group.\r\n * @param titleSeparate -The title separator.\r\n * @param cartLine -The cartline view props.\r\n * @param emailDeliveryModeCode -The email delivery code from channel.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroupHeader = (\r\n pickUpText: string,\r\n shippingText: string,\r\n emailShippingText: string,\r\n titleSeparate: string,\r\n cartLine: ICartlinesViewProps,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\r\n
\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Method will render cartlines in groups.\r\n * @param props -The cartline.\r\n * @returns Jsx element.\r\n */\r\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {renderCartLinesGroupHeader(\r\n props.resources.pickUpText,\r\n props.resources.shippingText,\r\n props.resources.emailshippingText,\r\n props.resources.titleSeparate,\r\n cartlines[0],\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\n\r\nconst CartView: React.FC = (props: ICartViewProps) => (\r\n
\r\n {props.title}\r\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n renderCartLinesGroup(props)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources.emptyCartText,\r\n props.CartlinesWrapper,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {/*props.checkoutAsSignInUserButton*/}\r\n Checkout\r\n {/*props.checkoutAsGuestButton*/}\r\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\r\n {props.expressCheckoutButton}\r\n ) : null}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n);\r\n\r\nexport default CartView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\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 handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.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 }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\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._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n \n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\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 retrun 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 * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\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 /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

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

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

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

{resources.currentLocation}

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

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n"],"names":["FreedomNavItem","React","constructor","props","super","handleHeadingChange","event","this","config","heading","text","target","value","handleTextChange","handleLinkTextChange","link","linkText","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","render","image","FreedomNavItemClassName","classnames","className","contentAction","etext","attributes","getTelemetryAttributes","viewProps","_objectSpread","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","moduleProps","HeadingContainer","ItemContainer","Link","linkUrl","destinationUrl","tag","role","href","title","ariaLabel","openInNewTab","undefined","onClick","onTelemetryClick","renderView","editableLink","additionalProperties","Msdyn365","editProps","onTextChange","requestContext","length","onEdit","item","ariaHiddenAttr","src","Object","assign","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","key","shouldSkipToMainImage","FreedomNavItemView","Module","_renderElement","Node","ObrienNavItem","ObrienNavItemClassName","ObrienNavItemView","_renderCartlines","cartLines","cartEmptyText","CartlinesWrapper","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","map","cartLine","_cartLine$cartlineId","cartlineId","MsDyn365","cartline","pickUpInStore","ContainerProps","defaultComponent","addToOrderTemplate","remove","addToWishlist","renderCartLinesGroupHeader","pickUpText","shippingText","emailShippingText","titleSeparate","emailDeliveryModeCode","_cartLine$pickUpInSto4","groupTitle","isBopisSelected","data","DeliveryMode","toLowerCase","renderCartLinesGroupTitle","_cartLine$pickUpInSto","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","deliveryOption","orgUnitName","_props$cart","_props$cart2","errorData","promotions","id","renderModuleAttributes","cart","hasInvoiceLine","promotionOptions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","multiplePickUpEnabled","cartLinesGroup","ArrayExtensions","cartlines","_props$context$action","resources","emailshippingText","actionContext","channel","EmailDeliveryModeCode","emptyCartText","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","_renderInvoiceSummarylines","invoiceSummaryLines","OrderSummaryItems","invoices","giftCard","loyalty","orderTotal","error","invoiceSummaryLineitems","_renderOrderSummarylines","orderSummaryLines","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderSummaryLineitems","OrderSummaryErrors","errors","Wrapper","header","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","state","clicked","setState","input","IssueLoyaltyInput","apiSettings","issueLoyalty","then","window","location","catch","message","debug","TelemetryConstant","loyaltySignInAttributes","loyaltySignUpAttributes","loyaltyDetailsLinkAttributes","loyaltyTermsLinkAttributes","shouldComponentUpdate","nextProps","nextState","_data$customerInforma","_this$props$context$a","_this$props$context$a2","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","result","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","loading","status","signInLink","Button","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","__decorate","observer","LoyaltyTermsModal","loyaltyTermCancelAttributes","loyaltyTermSubmitAttributes","loyaltyTermCheckboxAttributes","modal","Modal","toggle","onToggle","applicationNode","isOpen","returnFocusRef","returnRef","modalHeader","ModalHeader","modalFooter","ModalFooter","modalBody","ModalBody","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","type","onChange","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","CookieComplianceAcceptButton","_ref","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","index","push","links","CookieCompliance","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","content","visible","cookieRef","_onDismiss","componentDidMount","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","ref","AlertProps","color","fade","Content","acceptButton","setConsentCookie","reload","Alert","renderCustomerName","accountInformation","customer","FirstName","Name","_renderReactFragment","items","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","altText","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","sm","md","_categoryImage$imageS","ImageData","Image","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","document","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","onFocus","hoverEffect","arguments","isParent","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","async","preventDefault","deliveryCode","currentTarget","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","delivery","Code","Description","onKeyDown","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","_availabilityWithHour","_availabilityWithHour2","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","_value$OrgUnitAvailab2","filter","observable","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","KeyCodes","activeDescedantValue","_handleKeyPressPrev","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","Promise","resolve","renderPickupModesList","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","storeSearchAttributes","showAllStoreAttributes","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","name","autoComplete","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","secondsToTime","seconds","hours","floor","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","buildDistanceString","distance","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","matchDeliveryOptions","productdeliveryOptions","pickup","_delivery","hideStockStatus","storeName","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","resourceLabel","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","pickupInStoreAriaLabel","preferredStoreAttributes","removePreferredStoreAttributes","deliveryOptionList","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","renderPickupModes","_props$selectedStore","_props$selectedStore$","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","_props$selectedStore5","_props$selectedStore6","_props$selectedStore7","_props$selectedStore8","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","_selectedStore$OrgUni3","shouldHideStockStatus","parentClassName","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","_location$OrgUnitPick2","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","_preferredStore$OrgUn4","_preferredStore$OrgUn5","_preferredStore$OrgUn6","storeId","mode","_store$OrgUnitAvailab3","_store$OrgUnitAvailab4","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","_storeSelectorStateMa2","_storeSelectorStateMa3","parentElementRef","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_isInStock$OrgUnitAva2","_this$props$data$stor7","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$context$a3","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","_this$props$data$stor6","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor8","_this$props$data$stor9","_this$props$context$a4","_this$props$data$stor10","when","_this$props$data$stor11","_this$props$data$stor12","_this$props$data$stor13","_this$props$data$stor14","isSameContext","_storeSelectorStateMa4","_storeSelectorStateMa5","_storeSelectorStateMa6","_sortLocation","_storeSelectorStateMa7","_storeSelectorStateMa8","_storeSelectorStateMa9","_storeSelectorStateMa10","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","autoFocus","onClosed","horizontalPosition","verticalPosition","HeaderContainerProps","HeaderProps","FooterContainerProps","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","spinner","locationsList","outOfStockThreshold","noLocationsMessage","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab5","selectedStoreLocation","lineResources","_store$OrgUnitAvailab6","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","dataset","description","StringExtensions","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","renderStoreLocations","selectedLocationReference","_props$data$storeSele","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","Number","parseInt","selectedLocationProps","storeSelectorViewProps","_selectedStore$OrgUni4","_selectedStore$StoreH","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_selectedStore$OrgUni7","_selectedStore$OrgUni8","_selectedStore$OrgUni9","_selectedStore$OrgUni10","_selectedStore$OrgUni11","_storeSelectorViewPro","_storeSelectorViewPro2","_storeSelectorViewPro3","_storeSelectorViewPro4","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","viewport","_data$storeSelectorSt","displayMap"],"sourceRoot":""}