{"version":3,"file":"static/js/12.1d0180cf0443fa1c098d.chunk.js","mappings":"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","sources":["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/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/loyalty-terms.tsx?babd","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","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/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/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/iframe/iframe.tsx?65fe","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","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/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/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","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/iframe/iframe.view.tsx?a7d6","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/cart.view.tsx?3909","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","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-terms/components/loyalty-terms-modal.tsx?1b8b","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/pickup-option-list.tsx?dae0","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/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://venchi-ecommerce-msdyn365/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc"],"sourcesContent":["/*!\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 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 { 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\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 * 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 { 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 { 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 { 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","/*!\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 { 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 { 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 { 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 { 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 { 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 {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
    \n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
    \n {isBopisSelected && (\n
    \n {cartLine.pickUpInStore.orgUnitName}\n \n
    \n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
    \n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
    \n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
    \n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

    \n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

    \n ) : null}\n

    {countTitle}

    \n
    \n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
    \n

    \n

    {groupTitle}

    \n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
    \n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
    \n {props.cartLinesGroup.map(cartlines => {\n return (\n
    \n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
    \n );\n })}\n
    \n );\n }\n return props.cartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

    \n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

    \n );\n return (\n
    \n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
    {props.orderSummaryLineitems?.orderTotal}
    \n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
    \n );\n};\n\nexport default CartView;\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","/*!\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 {\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 { 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 } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
    \n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
      \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
    \n \n {this.state.isFilterExpanded ? (\n
      \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
    • \n \n \n {delivery.Description}\n \n \n
    • \n );\n })}\n
    \n ) : null}\n
    \n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
    \n {storeHoursList.map(displayTime => (\n
    \n {displayTime.endDayShort ? (\n
    \n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
    \n ) : (\n
    \n {displayTime.startDayShort}\n
    \n )}\n
    {displayTime.timeRange}
    \n
    \n ))}\n
    \n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
    \n {storeOpenFrom}-{storeOpenTo}\n
    \n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
    \n
    \n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
    \n
    \n
    \n

    {resources.contactInfoHeader}

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

    {resources.storeHoursHeader}

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

    {resources.availabilityInfoHeader}

    }\n {stockText &&

    {stockText}

    }\n {isCurrentLocation ? (\n

    {resources.currentLocation}

    \n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
    \n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
    \n {isError ? (\n \n \n ) : ('')}\n
    \n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, 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"],"names":["AccountCustomerBalanceTile","React","constructor","props","super","this","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","state","_objectSpread","_initState","reaction","hasError","error","setState","content","ErrorComponent","value","resources","apiGenericErrorMessage","get","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","data","render","isCustomerAccountPaymentEnabled","className","heading","links","config","viewProps","moduleProps","classnames","Heading","headingTag","tag","text","isDetailsLinkDisplayed","LinksComponent","Object","assign","onTextChange","index","event","requestContext","renderView","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","__decorate","computed","Module","SignUpText","LoyaltySignUp","handleHeadingChange","target","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","input","IssueLoyaltyInput","apiSettings","issueLoyalty","actionContext","then","MsDyn365","isBrowser","window","location","Msdyn365","catch","message","debug","payLoad","getPayloadObject","TelemetryConstant","SignIn","loyaltySignInAttributes","getTelemetryAttributes","contentAction","etext","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","result","undefined","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","loading","params","isEditor","status","editProps","onEdit","signInLink","Button","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","onClick","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","observer","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","checked","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","modal","CardNumber","LoyaltyTermsModal","returnRef","isOpen","terms","onToggle","onSubmit","onCheck","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","Node","modalHeader","modalBody","agreeSection","checkbox","agreeText","modalFooter","submitButton","cancelButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredDistanceUnit","preferredStore","isPreferredStoreEnabled","hasEnabledOutOfStockCheck","productPickUpOptionList","shouldDisplayList","_ref","_selectedStore$OrgUni","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreLocationId","selectedStore","find","store","_store$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","OrgUnitNumber","orgUnitLocation","selectedStoreResources","_mapResources","_selectedStore$OrgUni2","_selectedStore$OrgUni3","selectedProps","shouldHideStockStatus","isCurrentLocation","_isCurrentLocation","alreadySelectedLocation","isInStock","_isProductInStock","ItemAvailabilities","stockStatusLabel","_stockInventoryLabel","preferredStoreLocationId","StoreId","isLocationDisabled","storePickUpOptionList","OrgUnitPickUpDeliveryModes","DeliveryOptions","handlers","onSelected","_onOrgUnitLocationSelected","onSetAsPreferredStore","_setPreferredStore","onRemovePreferredStore","_removePreferredStore","closeStoreDetailsModal","_closeStoreDetailModal","SelectedStoreComponent","handleLinkTextChange","termsOfServiceLink","linkText","onShowAllStoresHandler","_getAndUpdateStoreLocation","filteredPickupMode","onFilterLocations","stores","filter","_location$OrgUnitPick","some","deliveryOption","Code","onFilteredPickupMode","deliveryCode","_attachMapAutoSuggest","async","autoSuggestOptions","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","id","_onSuggestionSelected","errorCallback","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","OrgUnitName","isConsentGiven","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","current","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","onLocationSelected","Promise","resolve","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","deliveryMode","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","selectedLocation","hasEnableOutOfStockCheck","itemAvailabilities","ArrayExtensions","hasElements","AvailableQuantity","ProductInventoryInformation","length","_isInStock$OrgUnitAva","InventoryLocationId","InventLocationId","StockLevelLabel","storeCounter","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","setTimeout","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","key","BingMapsEnabled","lang","locale","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","showAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","listMapViewState","displayList","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","milesShortText","isEnableOutofStock","enableStockCheck","deliveryOptions","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","Modal","autoFocus","fade","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","StoreSelectorFoundLocationsMessage","locations","searchRadius","isSeeAllStore","StoreSelectorSearchForm","performSearch","searchTermChanged","onShowAllStores","onToggleListMapViewState","locatorView","productPickUpDeliveryOptions","filterPickupModeSelected","hasEnabledPickupFilterToShowStore","spinner","StoreSelectorWaiting","locationsList","StoreSelectorLocationLines","outOfStockThreshold","enableOutOfStockCheck","storeLocatorView","shouldShowIndex","noLocationsMessage","StoreSelectorEmptyMessage","StoreSelectorTermsOfService","link","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isPreferredStore","_value$OrgUnitAvailab","isStoreLocatorView","storeList","map","storeLineProps","_createStoreLocationList","push","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","storeOpenFrom","secondsToTime","OpenFrom","storeOpenTo","OpenTo","storeHours","StoreHours","_store$OrgUnitAvailab4","hideStockStatus","toString","locationOpen","openFrom","openTo","storeHoursList","RegularStoreHours","buildStoreHours","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","canSelectLocation","pickUpDeliveryOptionButton","pickupModes","renderDeliveryOptions","renderBody","BusinessPartnerPromotionTermsParagraph","title","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","type","termsOfServiceLinkText","onChange","termsOfServiceAgreementText","role","termsOfServiceModal","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","label","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","attributes","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","CookieCompliance","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","componentDidMount","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","ref","AlertProps","Content","acceptButton","setConsentCookie","reload","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","targetURL","src","height","iframeAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","item","ProductComparisonItem","catalogId","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","buttonText","onClickHandler","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","componentWillUnmount","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","items","getCatalogId","GenericPopup","popupVisible","recallVisible","_onDismissRecall","createCookieRecall","_onDismissPopup","recallEnabled","recallShowAfterPopup","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","classNamePopup","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","cookie","Cookies","hidePopupIfCookieIsSet","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","expires","set","recallDismissableForDays","recallDismissable","recallText","closeButtonAriaLabel","closeButtonLabel","_window$dataLayer","_window$dataLayer$pus","modalName","dataLayer","call","eventCategory","eventAction","eventLabel","handleClose","popupElement","document","querySelector","form","getElementsByTagName","_window$dataLayer2","_window$dataLayer2$pu","renderModuleAttributes","IFrameView","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","_ref2","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","_ref3","groupProps","delivery","salesLinesProps","salesLines","salesLine","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","emptyMessage","backToShoppingLink","list","moreButton","SignUpItem","wrapper","SignUpEmailVerification","email","buttonWrapper","buttons","successMessage","button","SignUpLoading","icon","signUp","viewState","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","LocalAccount","_props$context","_props$context2","localAccount","emailVerification","disclaimer","uiLocales","query","ui_locales","regionCRM","includes","RegionCRM","birthDate","setBirthDate","formatDateState","setFormatDateState","pattern","patternUS","checkDate","currentTarget","today","match","getElementById","onclick","e","preventDefault","stopPropagation","isRequired","verificationControlWrapper","htmlFor","birthdayLabelText","birthdayErrorText","name","maxLength","onKeyUp","onPaste","BirthdayText","renderThirdPartyPrivacy","defaultChecked","textGenericMarketing","required","textThirdParty","renderCustomerName","customer","FirstName","Name","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_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","body","addEventListener","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","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","ProductComparisonButtonViewFunctionalComponent","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","PickupInStore","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","toLowerCase","replace","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","Number","cart","totalItemsInCart","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","subtotal","totalDiscounts","shipping","otherCharge","tax","errorData","OrderSummaryErrors","errors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","OrderInfomation","note","channelAddress","SalesLine","salesLineProps","buyAgainButton","GroupDelivery","Group","isCashAndCarryTransaction","salesStatus","deliveryType","shipment","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderSummary","payment","help","StoreSelectorFoundLocationsMessageComponent","storeCountMessage","storeCountMessageInKm","RichTextComponent","storeAllCountMessage","extractPhoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","primaryPhoneContact","IsPrimary","Locator","renderStoreHours","displayTime","JSON","stringify","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","matchDeliveryOptions","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","dataset","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","Description","renderLocationLinePickupButton","PickUpButtonComponent","pickupInStoreAriaLabel","pickupDeliveryOptionErrorMessage","renderStoreLocationLineItem","locationLineItem","distanceAsString","buildDistanceString","distance","closeDistanceString","distanceString","floor","Distance","storeAddress","Address","phoneNumber","Contacts","resourceLabel","stockText","PreferredStore","preferredStoreAttribute","RemovePreferredStore","removePreferredStoreAttribute","_props$data$storeSele","onSetPreferredStoreClickHandler","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","show","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","onPickupInStoreClickHandler","pickUpMethodSelection","selected","parseInt","onKeyDown","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","selectedLocationDiv","_selectedLocationDiv$","offset","getBoundingClientRect","parent","parentElement","totalHeight","scrollTop","top","clientHeight","_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","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","applicationNode","returnFocusRef","cancelLoyaltyTermsText","joinLoyaltyTermsText","loyaltyTermsHeading","loyaltyAgreeToTerms","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","_pickupListOptionMenu","expandSiteOptions","_onSelect","_renderDeliveryOptions","pickupListOptionMenuText","pickupmodeList","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","_scrollIntoView","selectedLocationRef","offsetTop","availabilityWithHours","_availabilityWithHour","componentDidUpdate","_stores","_renderStoreLocation","StoreSelectorLocationLineItemComponent","observable","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","_searchTextChanged","inputValue","_onSubmit","_this$searchBoxRef$cu","blur","_onChangeHandler","renderPickupModesList","pickupFilterMenuHeading","pickupFilterByHeading","toggleButtonClass","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","autoComplete","searchInputAriaLabel","placeholder","emptyLocationsText","storeSelectorLocationLineItemComponentActions","onPickupModeSelectHandler","pickupMode","removePreferredStoreHandler","productdeliveryOptions","pickup","_delivery","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","pickUpButtonClickHandler","renderPickupModes","_props$selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","parentClassName"],"sourceRoot":""}