{"version":3,"file":"static/js/5.4eac5f9bcf9b576ac983.chunk.js","mappings":"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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/generic-popup/generic-popup.tsx?12c8","webpack://venchi-ecommerce-msdyn365/./src/modules/generic-popup/generic-popup.view.tsx?638f","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/breadcrumb.view.tsx?b054","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/checkout-delivery-options.view.tsx?3e8c","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/product-specification.view.tsx?ddc2","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/sign-up.view.tsx?e5d6","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://venchi-ecommerce-msdyn365/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://venchi-ecommerce-msdyn365/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://venchi-ecommerce-msdyn365/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://venchi-ecommerce-msdyn365/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://venchi-ecommerce-msdyn365/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://venchi-ecommerce-msdyn365/./src/modules/iframe/iframe.tsx?65fe","webpack://venchi-ecommerce-msdyn365/./src/modules/iframe/iframe.view.tsx?a7d6","webpack://venchi-ecommerce-msdyn365/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://venchi-ecommerce-msdyn365/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://venchi-ecommerce-msdyn365/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://venchi-ecommerce-msdyn365/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://venchi-ecommerce-msdyn365/./src/modules/tile-list/tile-list.tsx?78cb","webpack://venchi-ecommerce-msdyn365/./src/modules/tile-list/tile-list.view.tsx?1b00","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/order-history.view.tsx?692d","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/sign-in.view.tsx?048a","webpack://venchi-ecommerce-msdyn365/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IGenericPopupProps } from './generic-popup.props.autogenerated';\r\n\r\nimport classnames from 'classnames';\r\nimport Cookies from 'universal-cookie';\r\n\r\nexport interface IGenericPopupState {\r\n popupVisible: boolean;\r\n recallVisible: boolean;\r\n}\r\n\r\nexport interface IGenericPopupViewProps extends IGenericPopupProps<{}>, IGenericPopupState {\r\n onDismissRecall(): void;\r\n onDismissPopup(): void;\r\n handleTextRecall(): void;\r\n classNamePopup: string;\r\n classNameRecall: string;\r\n}\r\n\r\n/**\r\n *\r\n * GenericPopup component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass GenericPopup extends React.PureComponent, IGenericPopupState> {\r\n public state: IGenericPopupState = {\r\n popupVisible: false,\r\n recallVisible: false\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n // const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { className } = this.props.config;\r\n const { popupVisible, recallVisible } = this.state;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n classNamePopup: classnames('venchi_popup'),\r\n classNameRecall: classnames('venchi-recall', 'slide-in', className),\r\n popupVisible, // State data\r\n recallVisible, // State data\r\n onDismissRecall: this._onDismissRecall, // Methods\r\n onDismissPopup: this._onDismissPopup, // Methods\r\n handleTextRecall: this._displayPopupNow\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private readonly _onDismissRecall = (): void => {\r\n this.createCookieRecall();\r\n this.setState({ recallVisible: false });\r\n };\r\n\r\n private readonly _onDismissPopup = (): void => {\r\n if (this.props.config.recallEnabled || false) {\r\n switch (this.props.config.recallShowAfterPopup) {\r\n case 'afterPopup':\r\n setTimeout(this._displayRecallNow, 3000);\r\n break;\r\n case 'afterPageReload':\r\n default:\r\n break;\r\n }\r\n }\r\n this.setState({\r\n popupVisible: false\r\n });\r\n };\r\n\r\n private readonly _displayRecallNow = (): void => {\r\n this.setState({\r\n popupVisible: false,\r\n recallVisible: true\r\n });\r\n };\r\n\r\n private readonly _displayPopupNow = (): void => {\r\n if (this.props.config.cookieCheckbox) {\r\n this.createCookie();\r\n }\r\n this.setState({\r\n popupVisible: true,\r\n recallVisible: false\r\n });\r\n };\r\n\r\n public async componentDidMount() {\r\n const cookie = new Cookies();\r\n if (this.props.config.hidePopupIfCookieIsSet) {\r\n if (!cookie.get(`${this.props.config.modalId}-shown`)) {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n } else {\r\n if (this.props.config.recallEnabled && !cookie.get(`${this.props.config.modalId}-recall-hidden`)) {\r\n setTimeout(this._displayRecallNow, 1000 * (this.props.config.delayRecall || 0));\r\n }\r\n }\r\n } else {\r\n setTimeout(this._displayPopupNow, 1000 * (this.props.config.delayPopup || 0));\r\n }\r\n }\r\n\r\n private createCookie() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.expireDays >= 1) {\r\n var date = new Date();\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n // @ts-ignore\r\n date.setDate(date.getDate() + (this.props.config.expireDays || 0));\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-shown`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-shown`, true);\r\n }\r\n }\r\n\r\n private createCookieRecall() {\r\n const cookie = new Cookies();\r\n // @ts-ignore\r\n if (this.props.config.recallDismissableForDays >= 1) {\r\n var date = new Date();\r\n // @ts-ignore\r\n date.setDate(\r\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\r\n date.getDate() + (this.props.config.recallDismissableForDays || 0)\r\n );\r\n const options = { expires: date };\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true, options);\r\n } else {\r\n cookie.set(`${this.props.config.modalId}-recall-hidden`, true);\r\n }\r\n }\r\n}\r\n\r\nexport default GenericPopup;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IGenericPopupViewProps } from './generic-popup';\r\nimport { Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nconst GenericPopupView: React.FC = props => {\r\n const {\r\n slots,\r\n popupVisible,\r\n recallVisible,\r\n classNamePopup,\r\n classNameRecall,\r\n onDismissRecall,\r\n onDismissPopup,\r\n handleTextRecall\r\n } = props;\r\n const { modalId, recallDismissable, modalHeader, recallText } = props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = props.resources;\r\n\r\n React.useEffect(() => {\r\n if (popupVisible) {\r\n //@ts-ignore\r\n const label = props.config.modalName || 'Generic';\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'displayed',\r\n eventLabel: label\r\n });\r\n }\r\n }, [popupVisible]);\r\n\r\n const handleClose = React.useCallback(() => {\r\n const popupElement = document.querySelector('.venchi_popup');\r\n const form = popupElement?.getElementsByTagName('form');\r\n\r\n if (form?.length && popupVisible) {\r\n const label = props.config.modalName;\r\n window.dataLayer?.push?.({\r\n event: 'gaEvent',\r\n eventCategory: 'popup',\r\n eventAction: 'click_close',\r\n eventLabel: label\r\n });\r\n }\r\n onDismissPopup();\r\n }, [onDismissPopup, popupVisible, props]);\r\n\r\n return (\r\n <>\r\n \r\n {modalHeader}\r\n
\r\n \r\n
\r\n
{slots.content}
\r\n
\r\n
\r\n
\r\n
\r\n {recallVisible ? (\r\n
\r\n \r\n {recallDismissable ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n
\r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default GenericPopupView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBreadcrumbViewProps } from '@msdyn365-commerce-modules/breadcrumb';\r\nimport { IBreadcrumbProps } from '../definition-extensions/breadcrumb.ext.props.autogenerated';\r\n\r\nconst BreadCrumbView: React.FC> = props => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n let localizedRoot: React.ReactNode | React.ReactElement;\r\n\r\n // @ts-ignore\r\n if (root?.props?.text === 'Back to Order History') {\r\n // @ts-ignore\r\n localizedRoot = React.cloneElement(root, {\r\n text: props.resources.backToOrderHistory,\r\n ariaLabel: props.resources.backToOrderHistory\r\n });\r\n } else {\r\n localizedRoot = root;\r\n }\r\n\r\n return (\r\n \r\n \r\n {localizedRoot && (\r\n \r\n {localizedRoot}\r\n {links && separator}\r\n \r\n )}\r\n {backButton && {backButton}}\r\n {links &&\r\n links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && separator}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport get from 'lodash/get';\r\n\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionsViewProps,\r\n ICheckoutDeliveryOptionsList\r\n} from '@msdyn365-commerce-modules/checkout';\r\nimport { ICheckoutDeliveryOptionsProps } from '../definition-extensions/checkout-delivery-options.ext.props.autogenerated';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\ninterface ICheckoutDeliveryData extends ICheckoutDeliveryOptionsList {\r\n deliveryOptions: DeliveryOption[];\r\n}\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list, deliveryOptions }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n\r\n // deliveryOptions sorted by ShippingChargeAmount\r\n const sortedDeliveryOptions = deliveryOptions.sort((a, b) => {\r\n return get(a, 'ShippingChargeAmount', 0) - get(b, 'ShippingChargeAmount', 0);\r\n });\r\n\r\n // console.log(sortedDeliveryOptions);\r\n return (\r\n \r\n {sortedDeliveryOptions.map((deliveryOption: DeliveryOption) => {\r\n const sortedDeliveryOption = list.find(deliveryOptionEdit => deliveryOptionEdit.code === deliveryOption.Code);\r\n if (sortedDeliveryOption !== undefined) {\r\n return (\r\n \r\n {sortedDeliveryOption.radioButton}\r\n {sortedDeliveryOption.description}\r\n {sortedDeliveryOption.price}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC> = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n checkoutErrorRef,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionsData,\r\n deliveryOptionSelected,\r\n alert,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton\r\n } = props;\r\n const extraTextField = props.config.paragraph;\r\n const extraText = extraTextField && ;\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {extraText}\r\n {viewState.isLoading && waiting}\r\n {viewState.isError && alert}\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\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 { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { Image, IImageData } from '@msdyn365-commerce/core';\r\n// import { StockCountJournalsDataActions } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n IProductSpecificationProps as IProductSpecificationExtensionProps,\r\n IProductSpecificationConfig as IProductSpecificationExtensionConfig,\r\n IReassuranceItemsData as IReassuranceItemsExtensionData\r\n} from '../definition-extensions/product-specification.ext.props.autogenerated';\r\nimport * as React from 'react';\r\n// import axios from 'axios';\r\ninterface NutritionalData {\r\n label: string;\r\n qty1Label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n subcategory: NutritionalSubcategoryData[];\r\n}\r\n\r\ninterface NutritionalSubcategoryData {\r\n label: string;\r\n qty1Unit: string;\r\n qty1Value: number;\r\n}\r\n\r\n/* interface ProductLabel {\r\n label: string;\r\n imgLink: string;\r\n} */\r\n\r\ninterface ReassuranceShowType {\r\n title: string;\r\n description: string;\r\n image: IImageData;\r\n}\r\n\r\nconst ProductSpecificationView: React.FC &\r\n IProductSpecificationExtensionConfig> = props => {\r\n const { ProductSpecification, productSpecificationResult } = props;\r\n const tags = ['Gluten free', 'Palm oil free', 'Vegan friendly', 'Light'];\r\n const specificationsList = ['Product description', /* 'Nutritional Values', */ 'Nutritional Values JSON', 'Ingredients'];\r\n const ingredientsAllAttributesList = ['Ingredients', 'Ingredients 2', 'Ingredients 3'];\r\n const labels = props.resources;\r\n // @ts-ignore\r\n const pTags = [];\r\n // @ts-ignore\r\n const pSpecifications = [];\r\n // @ts-ignore\r\n const ingredientsArray = [];\r\n var ingredientsString = '';\r\n\r\n const temporaryDisabled = true;\r\n\r\n const reassuranceItems: ReassuranceShowType[] =\r\n props?.config?.reassuranceItems?.map((reassurance: IReassuranceItemsExtensionData) => ({\r\n title: reassurance.reassuranceTitle,\r\n description: reassurance.reassuranceDescription,\r\n image: reassurance.reassuranceImage\r\n })) ?? [];\r\n\r\n const isProductAccordionOpened = props?.config?.productDescriptionAccordionOpened ?? false;\r\n\r\n const [accordionsState, setAccordionsState] = React.useState(isProductAccordionOpened ? 'Productdescription' : '');\r\n // const [fetchingLabels, setFetchingLabels] = React.useState(false);\r\n /* const [productLabels, setProductLabels] = React.useState(\r\n [{\r\n label: labels['product_specification_title_emea_label'] ?? \"EMEA label\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_emea_warnings'] ?? \"EMEA warnings\",\r\n imgLink: ''\r\n },{\r\n label: labels['product_specification_title_fda_label'] ?? \"FDA label\",\r\n imgLink: ''\r\n }]) */\r\n\r\n productSpecificationResult?.map(row => {\r\n const itemHtml = row?.props.cellData.props.dangerouslySetInnerHTML;\r\n if (row !== null && tags.includes(row.props.productName) && itemHtml !== undefined && itemHtml.__html === 'Yes') {\r\n pTags.push(row);\r\n }\r\n });\r\n productSpecificationResult?.map(row => {\r\n if (\r\n row !== null &&\r\n specificationsList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n pSpecifications.push(row);\r\n }\r\n if (\r\n row !== null &&\r\n ingredientsAllAttributesList.includes(row.props.productName) &&\r\n row.props.cellData.props.dangerouslySetInnerHTML !== undefined\r\n ) {\r\n ingredientsArray.push(row);\r\n }\r\n });\r\n // @ts-ignore\r\n const productSku = props.data.product.result?.ItemId;\r\n // @ts-ignore\r\n const productPrimaryImageUrl = props.data.product.result?.PrimaryImageUrl;\r\n\r\n // @ts-ignore\r\n ingredientsArray.map(row => {\r\n ingredientsString += row.props.cellData.props.dangerouslySetInnerHTML.__html || '';\r\n });\r\n\r\n const accordionOnClick = (accordion: string): void => {\r\n const accStates = accordionsState.split(',');\r\n if (accStates.includes(accordion)) {\r\n // setAccordionsState(accStates.filter(acc=>acc!==accordion).join(','));\r\n setAccordionsState('');\r\n } else {\r\n // setAccordionsState([...accStates, accordion].join(','));\r\n setAccordionsState(accordion);\r\n }\r\n };\r\n\r\n const isAccordionExpanded = (accordion: string): boolean => {\r\n const accStates = accordionsState.split(',');\r\n return accStates.includes(accordion);\r\n };\r\n\r\n const _renderNutritionalValues = (jData: any): JSX.Element => {\r\n // const jData = JSON.parse(data);\r\n return (\r\n
\r\n {jData.map((row: NutritionalData) => (\r\n <>\r\n
\r\n
{labels[row.label] ?? ''}
\r\n
\r\n
{labels[row.qty1Label] ?? ''}
\r\n
{row.qty1Value ?? ''}
\r\n
{row.qty1Unit ?? ''}
\r\n
\r\n {row.subcategory &&\r\n row.subcategory.map((subRow: NutritionalSubcategoryData) => (\r\n
\r\n
{labels[subRow.label] ?? ''}
\r\n
\r\n
{subRow.qty1Value ?? ''}
\r\n
{subRow.qty1Unit ?? ''}
\r\n
\r\n ))}\r\n \r\n ))}\r\n
\r\n );\r\n };\r\n\r\n /* const _renderProductLabels = (productLabels: ProductLabel[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_product_labels'] ?? 'Product labels';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {productLabels.filter(label => label.imgLink !== '').map((row: ProductLabel) => (\r\n
\r\n
\r\n {row.label}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n } */\r\n\r\n const _renderReassurance = (reassuranceItems: ReassuranceShowType[], labels: any): JSX.Element => {\r\n const titleLabel = labels['product_specification_title_reassurance'] ?? 'Shipments and Returns';\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {reassuranceItems.map((row: ReassuranceShowType, index: number) => {\r\n const isLast = index === reassuranceItems.length - 1;\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {row.title}\r\n {row.description}\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n React.useEffect(() => {\r\n /* if (!fetchingLabels) {\r\n setFetchingLabels(true);\r\n _getProductLabels(productSku, productPrimaryImageUrl).then((response: string[]) => {\r\n const newProductLabels = [...productLabels];\r\n productLabels.forEach((_, index: number) => {\r\n newProductLabels[index].imgLink = response[index];\r\n });\r\n setProductLabels(newProductLabels);\r\n });\r\n } */\r\n });\r\n\r\n if (temporaryDisabled) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {props.title}\r\n {pSpecifications.length ? (\r\n \r\n {// @ts-ignore\r\n pSpecifications.map(row => {\r\n const title = row.props.productName;\r\n const titleId = title.replace(/\\s+/g, '');\r\n const titleLabel = labels[`product_specification_title_${title.replace(/\\s+/g, '_').toLowerCase()}`] ?? title;\r\n const ingredientsFinalString = ingredientsString;\r\n\r\n let accordionContent;\r\n if (title === 'Ingredients' && ingredientsFinalString) {\r\n accordionContent = ingredientsFinalString;\r\n } else if (title === 'Nutritional Values JSON') {\r\n try {\r\n const jData = JSON.parse(row.props.cellData.props.dangerouslySetInnerHTML.__html);\r\n accordionContent = _renderNutritionalValues(jData);\r\n } catch (e) {\r\n return;\r\n }\r\n } else if (row.props.cellData.props.dangerouslySetInnerHTML.__html) {\r\n accordionContent = row.props.cellData.props.dangerouslySetInnerHTML.__html;\r\n }\r\n\r\n if (!accordionContent) return;\r\n\r\n return (\r\n // tslint:disable-next-line:jsx-key\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{accordionContent}
\r\n \r\n );\r\n })}\r\n {reassuranceItems.length > 0 ? _renderReassurance(reassuranceItems, labels) : null}\r\n {/* {productLabels.filter(label => label.imgLink !== '').length > 0 ? _renderProductLabels(productLabels, labels) : null} */}\r\n {/* { _renderSocialShare(props.slots && props.slots?.socialShare)} */}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n};\r\n\r\n/* const _getProductLabels = async (productId?: string, baseImagePath?: string): Promise => {\r\n if (productId && baseImagePath) {\r\n const results: string[] = [];\r\n const imgBaseUrlArray = decodeURIComponent(baseImagePath).split('/');\r\n imgBaseUrlArray.pop();\r\n\r\n\r\n const imgUrls = [\r\n [...imgBaseUrlArray, `${productId}_000_006.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_007.jpg`].join('/'),\r\n [...imgBaseUrlArray, `${productId}_000_008.jpg`].join('/'),\r\n ];\r\n \r\n for (let i=0; i<3; i=i+1) {\r\n try {\r\n const response = await axios.get(imgUrls[i]);\r\n results.push(response?.status === 200 ? imgUrls[i] : '');\r\n } catch (e) {\r\n results.push('');\r\n }\r\n }\r\n return results; \r\n }\r\n return ['', '', ''];\r\n} */\r\n\r\n/* const _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n}; */\r\n\r\nexport default ProductSpecificationView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {successMessage &&\r\n successMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {buttons &&\r\n buttons.map((button: React.ReactNode) => {\r\n return <>{button};\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = (\r\n { localAccount, items, emailVerification, buttons, errorMessage, disclaimer },\r\n props\r\n) => {\r\n const europe = ['/fr', '/de'];\r\n const locale = props?.context?.request?.locale;\r\n const uiLocales = props?.context?.request?.query.ui_locales;\r\n const regionCRM = europe.includes(uiLocales) ? uiLocales : props.config.RegionCRM;\r\n\r\n const [birthDate, setBirthDate] = React.useState('');\r\n const [formatDateState, setFormatDateState] = React.useState(true);\r\n const pattern = /^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^((16|[248][048]|[3579][26])00)|(1[6789]|[2-9][0-9])(0[48]|[13579][26]|[2468][048])\\/02\\/(0[1-9]|1[0-9]|2[0-9])$|^(1[6789]|[2-9][0-9])[0-9]{2}\\/02\\/(0[1-9]|1[0-9]|2[0-8])$/gm;\r\n const patternUS = /^((0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^02\\/(0[1-9]|1[0-9]|2[0-9])$/gm;\r\n\r\n const checkDate = (event: React.KeyboardEvent) => {\r\n const value = event.currentTarget.value;\r\n const today = new Date();\r\n if (value !== '' && (!value.match(locale !== 'en-US' ? pattern : patternUS) || today < new Date(value))) {\r\n setFormatDateState(false);\r\n } else {\r\n setFormatDateState(true);\r\n }\r\n if (locale === 'en-US') {\r\n setBirthDate(`1900/${value}`);\r\n }\r\n };\r\n if (typeof window !== 'undefined') {\r\n const signUpButton: HTMLElement = document.getElementById('continue') as HTMLElement;\r\n\r\n if (signUpButton !== undefined) {\r\n signUpButton.onclick = e => {\r\n if (!formatDateState) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n }\r\n }\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n
\r\n \r\n {formatDateState === false ? (\r\n

{props.resources.birthdayErrorText}

\r\n ) : (\r\n ''\r\n )}\r\n {locale !== 'en-US' ? (\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n ) : (\r\n <>\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n \r\n \r\n )}\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {props.config.renderThirdPartyPrivacy && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n
\r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount, props)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\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 const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\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 onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\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 {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\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\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\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 IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\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 IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\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 IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

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

{props.resources.loyaltyTermsHeading}

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

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
    {error}
    ;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
    \n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
    \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress,\n note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
    \n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n \n {errorMessage}\n {products}\n \n {pagination}\n
    \n
    \n
    \n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

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

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

    \n {message}\n

    \n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\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\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: 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.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.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('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\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, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\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 !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\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 } 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 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 !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\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, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\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 this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\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 multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\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\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 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 private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = 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 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 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 private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !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 {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 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 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 NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\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 mobileViewLabelText: '',\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 * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\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 return (\n \n );\n }\n return null;\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 { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
    \n

    {props.resources.headingForEmptyRequestStatus}

    \n

    {props.resources.textForEmptyRequestStatus}

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

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n
    \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\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 private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\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 private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\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 private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\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 { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\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 private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\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 private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\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 private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n 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 {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n
    \n {orderInfomation.placedBy && {orderInfomation.placedBy}}\n
    {orderInfomation && }
    \n
    \n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n
    \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
    \n
    \n or\n
    \n {B2BAccount(signInB2BAccount)}\n
    \n
    \n
    \n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
    {renderProductImage(props)}
    \n
    \n
    {product?.Name}
    \n
    {product?.ItemId}
    \n
    \n
    \n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
    {resources.selectRatingLabel}
    \n {reviewModal.rating}\n
    \n
    \n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
    \n
    \n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
    \n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["GenericPopup","React","constructor","state","popupVisible","recallVisible","_onDismissRecall","this","createCookieRecall","setState","_onDismissPopup","props","config","recallEnabled","recallShowAfterPopup","setTimeout","_displayRecallNow","_displayPopupNow","cookieCheckbox","createCookie","render","className","viewProps","_objectSpread","classNamePopup","classnames","classNameRecall","onDismissRecall","onDismissPopup","handleTextRecall","renderView","async","cookie","Cookies","hidePopupIfCookieIsSet","get","modalId","delayRecall","delayPopup","expireDays","date","Date","setDate","getDate","options","expires","set","recallDismissableForDays","slots","recallDismissable","modalHeader","recallText","closeButtonAriaLabel","closeButtonLabel","resources","_window$dataLayer","_window$dataLayer$pus","label","modalName","window","dataLayer","push","call","event","eventCategory","eventAction","eventLabel","handleClose","popupElement","document","querySelector","form","getElementsByTagName","length","_window$dataLayer2","_window$dataLayer2$pu","Modal","id","isOpen","onClosed","ModalHeader","toggle","ModalBody","Object","assign","renderModuleAttributes","content","onClick","_root$props","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","context","telemetry","error","localizedRoot","text","backToOrderHistory","ariaLabel","Module","Node","map","link","index","key","DeliveryOptionList","_ref","DeliveryOptionsList","list","deliveryOptions","sortedDeliveryOptions","sort","a","b","deliveryOption","sortedDeliveryOption","find","deliveryOptionEdit","code","Code","undefined","DeliveryOption","radioButton","description","price","DeliveryOptionSelected","_ref2","CheckoutDeliveryOptions","checkoutErrorRef","viewState","deliveryOptionsData","deliveryOptionSelected","alert","waiting","saveButton","editButton","cancelButton","extraTextField","paragraph","extraText","Msdyn365","ref","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","IFrameView","Heading","IframeContainer","IFrame","cookieConsentAccepted","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","heading","processing","address","trackingInfo","OrderHistoryGroup","_ref3","groupProps","delivery","salesLinesProps","salesLines","salesLine","data","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","dataPrice","CustomerContextualPrice","orderType","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","header","loading","emptyMessage","backToShoppingLink","moreButton","_props$config$reassur","_props$config","_props$config$product","_props$config2","_props$data$product$r","_props$data$product$r2","ProductSpecification","productSpecificationResult","tags","specificationsList","ingredientsAllAttributesList","pTags","pSpecifications","ingredientsArray","reassuranceItems","reassurance","title","reassuranceTitle","reassuranceDescription","image","reassuranceImage","isProductAccordionOpened","productDescriptionAccordionOpened","accordionsState","setAccordionsState","row","itemHtml","cellData","dangerouslySetInnerHTML","includes","productName","__html","product","result","ItemId","PrimaryImageUrl","SignUpItem","wrapper","errorMessage","input","SignUpEmailVerification","email","buttonWrapper","buttons","successMessage","message","button","SignUpLoading","modal","modalBody","icon","signUp","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","LocalAccount","_props$context","_props$context2","localAccount","items","emailVerification","disclaimer","locale","request","uiLocales","query","ui_locales","regionCRM","RegionCRM","birthDate","setBirthDate","formatDateState","setFormatDateState","pattern","patternUS","checkDate","value","currentTarget","today","match","signUpButton","getElementById","onclick","e","preventDefault","stopPropagation","item","isRequired","verificationControlWrapper","htmlFor","birthdayLabelText","birthdayErrorText","type","name","maxLength","onKeyUp","onPaste","BirthdayText","renderThirdPartyPrivacy","defaultChecked","textGenericMarketing","required","textThirdParty","AccountCustomerBalanceTile","super","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","_initState","reaction","hasError","ErrorComponent","apiGenericErrorMessage","isCustomerAccountPaymentEnabled","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","moduleProps","headingTag","tag","isDetailsLinkDisplayed","LinksComponent","onTextChange","requestContext","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","__decorate","computed","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","forEach","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","editProps","AccountProfileEdit","moduleClassName","handleHeadingChange","target","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","componentDidMount","componentDidUpdate","accountProfileEdit","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","style","display","onEdit","accountProfileEditLocalAccount","_renderLocalAccount","str","createElement","innerHTML","childNodes","nodeValue","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","labelText","AccountProfileEditLabelComponent","forId","AccountProfileEditInputComponent","onChange","observable","observer","AccountProfileEditItem","AccountProfileEditLoading","disabled","Button","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","apiSettings","issueLoyalty","actionContext","then","MsDyn365","isBrowser","location","catch","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","onToggle","applicationNode","returnFocusRef","returnRef","modalFooter","ModalFooter","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","BusinessPartnerPromotionTermsParagraph","titleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","horizontalPosition","verticalPosition","autoFocus","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","onTelemetryClick","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","Content","ArrayExtensions","hasElements","acceptButton","setConsentCookie","reload","renderCustomerName","accountInformation","customer","FirstName","Name","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","src","altText","promotionalContent","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","OrderInfomation","channelAddress","note","SalesLine","salesLineProps","buyAgainButton","errors","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderSummary","payment","help","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","recommendation","Iframe","iframeRef","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createHeading","_createIframe","_renderAlert","cookieConsentRequiredMessage","targetURL","height","iframeAriaLabel","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","static","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","_this$menuItemRef$cur","children","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","RecordId","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","onClickHandler","isDisabled","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","TileList","_telemetryContent","isNullOrWhitespace","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","tileListView","tileItem","keyIndex","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","callbacks","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","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","cart","totalItemsInCart","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","channel","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","placeholder","_removePromotion","_event$currentTarget$","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","promoCodeHeadingText","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","customResizeThrottledEventHandler","hamburgerAriaLabel","entries","parentMenuId","menu","one","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","timeout","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","expandProductsButton","SignInLoading","SignInButton","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","signInButton","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","B2BAccount","renderProductDescription","primaryImageSource","imageUrl","fallBackSrc","cropFocalRegion","renderProductImage","signInMessage","RichTextComponent","reviewModal","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","createReviewModal"],"sourceRoot":""}