{"version":3,"file":"static/js/9.b021cc53d5e56f3ff682.chunk.js","mappings":"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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://venchi-ecommerce-msdyn365/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/breadcrumb.view.tsx?b054","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/iframe.view.tsx?059a","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/order-history.view.tsx?1eff","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/sign-up.view.tsx?e5d6","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://venchi-ecommerce-msdyn365/./src/modules/iframe/iframe.tsx?65fe","webpack://venchi-ecommerce-msdyn365/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/store-selector.tsx?e416","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*!\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 * as React from 'react';\r\n\r\nimport { IGenericPopupProps } from './generic-popup.props.autogenerated';\r\n\r\nimport classnames from 'classnames';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface IGenericPopupState {\r\n popupVisible: boolean;\r\n recallVisible: boolean;\r\n}\r\n\r\nexport interface IGenericPopupViewProps extends IGenericPopupProps<{}>, IGenericPopupState {\r\n onDismissRecall(): void;\r\n onDismissPopup(): void;\r\n handleTextRecall(): void;\r\n classNamePopup: string;\r\n classNameRecall: string;\r\n}\r\n\r\n/**\r\n *\r\n * GenericPopup component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass GenericPopup extends React.PureComponent, IGenericPopupState> {\r\n public state: IGenericPopupState = {\r\n popupVisible: false,\r\n recallVisible: false\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n // const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { className } = this.props.config;\r\n const { popupVisible, recallVisible } = this.state;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n classNamePopup: classnames('venchi_popup'),\r\n classNameRecall: classnames('venchi-recall', 'slide-in', className),\r\n popupVisible, // State data\r\n recallVisible, // State data\r\n onDismissRecall: this._onDismissRecall, // Methods\r\n onDismissPopup: this._onDismissPopup, // Methods\r\n handleTextRecall: this._displayPopupNow\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly _onDismissRecall = (): void => {\r\n this.createCookieRecall();\r\n this.setState({ recallVisible: false });\r\n };\r\n\r\n private readonly _onDismissPopup = (): void => {\r\n if (this.props.config.recallEnabled || false) {\r\n switch (this.props.config.recallShowAfterPopup) {\r\n case 'afterPopup':\r\n setTimeout(this._displayRecallNow, 3000);\r\n break;\r\n case 'afterPageReload':\r\n default:\r\n break;\r\n }\r\n }\r\n this.setState({\r\n popupVisible: false\r\n });\r\n };\r\n\r\n private readonly _displayRecallNow = (): void => {\r\n this.setState({\r\n popupVisible: false,\r\n recallVisible: true\r\n });\r\n };\r\n\r\n private readonly _displayPopupNow = (): void => {\r\n if (this.props.config.cookieCheckbox) {\r\n this.createCookie();\r\n }\r\n this.setState({\r\n popupVisible: true,\r\n recallVisible: false\r\n });\r\n };\r\n\r\n public async componentDidMount() {\r\n const cookie = new Cookies();\r\n if (this.props.config.hidePopupIfCookieIsSet) {\r\n if (!cookie.get(`${this.props.config.modalId}-shown`)) {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n } else {\r\n if (this.props.config.recallEnabled && !cookie.get(`${this.props.config.modalId}-recall-hidden`)) {\r\n setTimeout(this._displayRecallNow, 1000 * (this.props.config.delayRecall || 0));\r\n }\r\n }\r\n } else {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n }\r\n }\r\n\r\n private createCookie() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.expireDays >= 1) {\r\n var date = new Date();\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n // @ts-ignore\r\n date.setDate(date.getDate() + (this.props.config.expireDays || 0));\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-shown`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-shown`, true);\r\n }\r\n }\r\n\r\n private createCookieRecall() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.recallDismissableForDays >= 1) {\r\n var date = new Date();\r\n // @ts-ignore\r\n date.setDate(\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n date.getDate() + (this.props.config.recallDismissableForDays || 0)\r\n );\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true);\r\n }\r\n }\r\n}\r\n\r\nexport default GenericPopup;\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 * as React from 'react';\r\nimport { IGenericPopupViewProps } from './generic-popup';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst GenericPopupView: React.FC = props => {\r\n const {\r\n slots,\r\n popupVisible,\r\n recallVisible,\r\n classNamePopup,\r\n classNameRecall,\r\n onDismissRecall,\r\n onDismissPopup,\r\n handleTextRecall\r\n } = props;\r\n const { modalId, recallDismissable, modalHeader, recallText } = props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = props.resources;\r\n\r\n React.useEffect(() => {\r\n if (popupVisible) {\r\n //@ts-ignore\r\n const label = props.config.modalName || 'Generic';\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'displayed',\r\n eventLabel: label\r\n });\r\n }\r\n }, [popupVisible]);\r\n\r\n const handleClose = React.useCallback(() => {\r\n const popupElement = document.querySelector('.venchi_popup');\r\n const form = popupElement?.getElementsByTagName('form');\r\n\r\n if (form?.length && popupVisible) {\r\n const label = props.config.modalName;\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'click_close',\r\n eventLabel: label\r\n });\r\n }\r\n onDismissPopup();\r\n }, [onDismissPopup, popupVisible, props]);\r\n\r\n return (\r\n <>\r\n \r\n {modalHeader}\r\n
\r\n \r\n
\r\n
{slots.content}
\r\n
\r\n
\r\n
\r\n
\r\n {recallVisible ? (\r\n
\r\n \r\n {recallDismissable ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n
\r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GenericPopupView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBreadcrumbViewProps } from '@msdyn365-commerce-modules/breadcrumb';\r\nimport { IBreadcrumbProps } from '../definition-extensions/breadcrumb.ext.props.autogenerated';\r\n\r\nconst BreadCrumbView: React.FC> = props => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n let localizedRoot: React.ReactNode | React.ReactElement;\r\n\r\n // @ts-ignore\r\n if (root?.props?.text === 'Back to Order History') {\r\n // @ts-ignore\r\n localizedRoot = React.cloneElement(root, {\r\n text: props.resources.backToOrderHistory,\r\n ariaLabel: props.resources.backToOrderHistory\r\n });\r\n } else {\r\n localizedRoot = root;\r\n }\r\n\r\n return (\r\n \r\n \r\n {localizedRoot && (\r\n \r\n {localizedRoot}\r\n {links && separator}\r\n \r\n )}\r\n {backButton && {backButton}}\r\n {links &&\r\n links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && separator}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\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 { IIframeViewProps } from '@msdyn365-commerce-modules/iframe';\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * IFrameView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class IFrameView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\r\n\r\n return (\r\n \r\n {alert}\r\n {cookieConsentAccepted && cookieConsentAccepted === true ? (\r\n <>\r\n {Heading}\r\n
{IFrame}
\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nexport default IFrameView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n {salesLine.salesLine}\r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => {\r\n // @ts-ignore\r\n const dataPrice = orderInfomation.amount !== null ? orderInfomation.amount.props.data.price.CustomerContextualPrice : 0;\r\n const orderType = dataPrice < 0 ? 'order--return' : 'order--default';\r\n return (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n );\r\n};\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {successMessage &&\r\n successMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {buttons &&\r\n buttons.map((button: React.ReactNode) => {\r\n return <>{button};\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = (\r\n { localAccount, items, emailVerification, buttons, errorMessage, disclaimer },\r\n props\r\n) => {\r\n const europe = ['/fr', '/de'];\r\n const locale = props?.context?.request?.locale;\r\n const uiLocales = props?.context?.request?.query.ui_locales;\r\n const regionCRM = europe.includes(uiLocales) ? uiLocales : props.config.RegionCRM;\r\n\r\n const [birthDate, setBirthDate] = React.useState('');\r\n const [formatDateState, setFormatDateState] = React.useState(true);\r\n const pattern = /^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^((16|[248][048]|[3579][26])00)|(1[6789]|[2-9][0-9])(0[48]|[13579][26]|[2468][048])\\/02\\/(0[1-9]|1[0-9]|2[0-9])$|^(1[6789]|[2-9][0-9])[0-9]{2}\\/02\\/(0[1-9]|1[0-9]|2[0-8])$/gm;\r\n const patternUS = /^((0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^02\\/(0[1-9]|1[0-9]|2[0-9])$/gm;\r\n\r\n const checkDate = (event: React.KeyboardEvent) => {\r\n const value = event.currentTarget.value;\r\n const today = new Date();\r\n if (value !== '' && (!value.match(locale !== 'en-US' ? pattern : patternUS) || today < new Date(value))) {\r\n setFormatDateState(false);\r\n } else {\r\n setFormatDateState(true);\r\n }\r\n if (locale === 'en-US') {\r\n setBirthDate(`1900/${value}`);\r\n }\r\n };\r\n if (typeof window !== 'undefined') {\r\n const signUpButton: HTMLElement = document.getElementById('continue') as HTMLElement;\r\n\r\n if (signUpButton !== undefined) {\r\n signUpButton.onclick = e => {\r\n if (!formatDateState) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n }\r\n }\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n
\r\n \r\n {formatDateState === false ? (\r\n

{props.resources.birthdayErrorText}

\r\n ) : (\r\n ''\r\n )}\r\n {locale !== 'en-US' ? (\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n ) : (\r\n <>\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n \r\n \r\n )}\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {props.config.renderThirdPartyPrivacy && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n
\r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount, props)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\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 { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\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 } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\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: !this.props.context.request.params.isEditor && 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 * as React from 'react';\n\nexport interface IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\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 { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\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 {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
    \n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n \n {errorMessage}\n {products}\n \n {pagination}\n
    \n
    \n
    \n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

    \n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

    \n
    \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

    \n {message}\n

    \n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\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 { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
    \n \n {this.state.isFilterExpanded ? (\n
      \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
    \n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
    \n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n
    \n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
    \n \n
    \n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n \n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
    \n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
    {pickupFilterByHeading}
    \n
    \n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
    \n

    {resources.emptyLocationsText}

    \n
    \n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
    ;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
    \n \n
    \n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
    \n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
    \n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
    \n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
      \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
    \n {storeHoursList.map(displayTime => (\n
    \n {displayTime.endDayShort ? (\n
    \n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
    \n ) : (\n
    \n {displayTime.startDayShort}\n
    \n )}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
    \n {storeOpenFrom}-{storeOpenTo}\n
    \n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
    \n
    \n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
    \n
    \n
    \n

    {resources.contactInfoHeader}

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

    {resources.storeHoursHeader}

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

    {resources.availabilityInfoHeader}

    }\n {stockText &&

    {stockText}

    }\n {isCurrentLocation ? (\n

    {resources.currentLocation}

    \n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
    \n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
    \n {isError ? (\n \n \n ) : ('')}\n
    \n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps, IStoreSelectorViewProps } from './index';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
    \n

    {props.resources.headingForEmptyRequestStatus}

    \n

    {props.resources.textForEmptyRequestStatus}

    \n \n \n {continueShoppingButtonTitle}\n \n \n
    \n
    \n
    \n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\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 {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
    \n {storeHoursList?.map(displayTime => (\n
    \n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
    \n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
    \n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
    \n \n {filteredDeliveryMode.Description}\n \n
    \n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
    {pickUpMethodLabel}
    \n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
    \n \n {currentStorePickUpOption}\n \n
      \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
    \n
    {pickupOptionDropdownError}
    \n
    \n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
    \n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
    \n {pickupDeliveryOptionErrorMessage}\n
    \n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
    \n
    \n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
    \n
    \n
    \n

    {locationLineItem.resources.contactInfoHeader}

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

    {locationLineItem.resources.storeHoursHeader}

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

    {resources.availabilityInfoHeader}

    \n {stockText &&

    {stockText}

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

    {resources.currentLocation}

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

    {storeSelectorViewProps.resources.contactText}

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

    {storeSelectorViewProps.resources.timeText}

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

    {productAvailability}

    \n {stockStatus &&

    {stockStatus}

    }\n
    \n )}\n
    \n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
    \n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n \n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
    {renderProductImage(props)}
    \n
    \n
    {product?.Name}
    \n
    {product?.ItemId}
    \n
    \n
    \n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
    {resources.selectRatingLabel}
    \n {reviewModal.rating}\n
    \n
    \n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
    \n
    \n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
    \n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["GenericPopup","React","constructor","state","popupVisible","recallVisible","_onDismissRecall","this","createCookieRecall","setState","_onDismissPopup","props","config","recallEnabled","recallShowAfterPopup","setTimeout","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","render","className","viewProps","_objectSpread","classNamePopup","classnames","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","renderView","async","cookie","Cookies","hidePopupIfCookieIsSet","get","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","options","expires","set","recallDismissableForDays","slots","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","resources","_window$dataLayer","_window$dataLayer$pus","label","modalName","window","dataLayer","push","call","event","eventCategory","eventAction","eventLabel","handleClose","popupElement","document","querySelector","form","getElementsByTagName","length","_window$dataLayer2","_window$dataLayer2$pu","Modal","id","isOpen","onClosed","ModalHeader","toggle","ModalBody","Object","assign","renderModuleAttributes","content","onClick","_root$props","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","context","telemetry","error","localizedRoot","text","backToOrderHistory","ariaLabel","Module","Node","map","link","index","key","IFrameView","Heading","IframeContainer","IFrame","alert","cookieConsentAccepted","OrderHistoryOrderInfomation","_ref","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","_ref2","deliveryProps","heading","processing","address","trackingInfo","OrderHistoryGroup","_ref3","groupProps","delivery","salesLinesProps","salesLines","salesLine","data","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","dataPrice","price","CustomerContextualPrice","orderType","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","header","loading","emptyMessage","backToShoppingLink","list","moreButton","SignUpItem","wrapper","errorMessage","input","SignUpEmailVerification","email","buttonWrapper","buttons","successMessage","message","button","SignUpLoading","modal","modalBody","icon","signUp","viewState","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","LocalAccount","_props$context","_props$context2","localAccount","items","emailVerification","disclaimer","locale","request","uiLocales","query","ui_locales","regionCRM","includes","RegionCRM","birthDate","setBirthDate","formatDateState","setFormatDateState","pattern","patternUS","checkDate","value","currentTarget","today","match","signUpButton","getElementById","undefined","onclick","e","preventDefault","stopPropagation","item","isRequired","verificationControlWrapper","htmlFor","birthdayLabelText","birthdayErrorText","type","name","maxLength","onKeyUp","onPaste","Msdyn365","BirthdayText","renderThirdPartyPrivacy","defaultChecked","textGenericMarketing","required","textThirdParty","AccountCustomerBalanceTile","super","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","_initState","reaction","hasError","ErrorComponent","apiGenericErrorMessage","isCustomerAccountPaymentEnabled","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","moduleProps","headingTag","tag","isDetailsLinkDisplayed","LinksComponent","onTextChange","requestContext","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","__decorate","computed","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","forEach","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","editProps","SignUpText","LoyaltySignUp","handleHeadingChange","target","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","apiSettings","issueLoyalty","actionContext","then","MsDyn365","isBrowser","location","catch","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","result","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","status","onEdit","signInLink","Button","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","disabled","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","observer","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","onToggle","applicationNode","returnFocusRef","returnRef","modalFooter","ModalFooter","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onChange","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","BusinessPartnerPromotionTermsParagraph","title","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","horizontalPosition","verticalPosition","autoFocus","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","onTelemetryClick","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","componentDidMount","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","ref","AlertProps","Content","ArrayExtensions","hasElements","acceptButton","setConsentCookie","reload","renderCustomerName","accountInformation","customer","FirstName","Name","_renderReactFragment","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","src","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","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","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","OrderInfomation","channelAddress","note","SalesLine","salesLineProps","buyAgainButton","errors","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderSummary","payment","help","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","recommendation","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createHeading","_createIframe","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","product","RecordId","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","static","productComparisonPreview","onClickHandler","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","filter","ProductComparisonButtonViewFunctionalComponent","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","deliveryCode","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","find","Code","Description","onKeyDown","StoreSelectorLocationLines","orgUnitLocation","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","_availabilityWithHour","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","pickupDeliveryOptionErrorMessage","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","componentDidUpdate","selectedStoreLocationId","locations","_stores","_sortStores","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","hideStockStatus","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","observable","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","Promise","resolve","renderPickupModesList","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","autoComplete","searchInputAriaLabel","placeholder","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","pickupListOptionMenuText","pickupmodeList","isExpandSiteOptionsState","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","onSetPreferredStoreClickHandler","_props$selectedStore2","onChangeHandler","_props$selectedStore3","removePreferredStoreHandler","onPickupModeSelectHandler","pickupMode","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","renderPickupModes","deliveryOptionList","pickupInStoreButtonText","pickupInStoreAriaLabel","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeName","OrgUnitName","distanceAsString","buildDistanceString","Distance","resourceLabel","stockLabel","stockText","canSelectLocation","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","matchDeliveryOptions","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","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","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","distance","productdeliveryOptions","deliveryOption","pickup","_delivery","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","IsPrimary","Locator","extractPhoneNumber","Contacts","isError","setError","renderStoreHours","RegularStoreHours","displayTime","JSON","stringify","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","pickUpButtonClickHandler","StoreSelector","renderSelectedStore","shouldHideInventory","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","style","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","_storeSelectorStateMa2","_storeSelectorStateMa3","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","maps","mapSlot","isMobileDevice","Viewport","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","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$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","promoCodeHeadingText","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","Phone","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","Number","parseInt","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","offset","getBoundingClientRect","totalHeight","top","_data$storeSelectorSt","displayMap","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","xl","cropFocalRegion","renderProductImage","ItemId","signInMessage","signInButton","paragraph","reviewModal","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","createReviewModal"],"sourceRoot":""}