{"version":3,"file":"static/js/11.b9f51ee5abecd83541a7.chunk.js","mappings":"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","sources":["webpack://nile.commerce.online/./src/modules/eve-site-picker/eve-site-picker.tsx?c378","webpack://nile.commerce.online/./src/modules/eve-site-picker/eve-site-picker.view.tsx?e215","webpack://nile.commerce.online/./src/themes/nile-theme/views/cart.view.tsx?3584","webpack://nile.commerce.online/./src/themes/nile-theme/views/order-details.view.tsx?7b47","webpack://nile.commerce.online/./src/modules/account-loyalty/account-loyalty.tsx?3672","webpack://nile.commerce.online/./src/modules/account-loyalty/account-loyalty.view.tsx?4d8b","webpack://nile.commerce.online/./src/modules/account-loyalty/components/account-loyalty-small-components.tsx?c12b","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-button.tsx?8d59","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-description.tsx?54a5","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-error.tsx?a75a","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-input.tsx?d840","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-label.tsx?4560","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-link.tsx?2078","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-loading-icon.tsx?1d7f","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-loading-message.tsx?84ee","webpack://nile.commerce.online/./src/modules/sign-in/components/sign-in-text.tsx?76b9","webpack://nile.commerce.online/./src/modules/sign-in/sign-in.tsx?259c","webpack://nile.commerce.online/./src/modules/sign-in/sign-in.view.tsx?2b3e","webpack://nile.commerce.online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://nile.commerce.online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://nile.commerce.online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://nile.commerce.online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://nile.commerce.online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://nile.commerce.online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://nile.commerce.online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://nile.commerce.online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://nile.commerce.online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://nile.commerce.online/./src/modules/order-history-with-search-and-filters/components/order-history-with-search-and-filters-view-mode-selector.component.tsx?6452","webpack://nile.commerce.online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://nile.commerce.online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://nile.commerce.online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://nile.commerce.online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://nile.commerce.online/./src/modules/tab/tab.tsx?9ac6","webpack://nile.commerce.online/./src/modules/tab/tab.view.tsx?a99d","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://nile.commerce.online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://nile.commerce.online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304"],"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\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport React from 'react';\r\n\r\nimport { IEveSitePickerConfig, IEveSitePickerProps } from './eve-site-picker.props.autogenerated';\r\n\r\nexport interface ISitePickerViewProps extends IEveSitePickerProps {\r\n SitePicker: IModuleProps;\r\n SitePickerMenu: INodeProps;\r\n SitePickerMenuSpan: INodeProps;\r\n SitePickerMenuList: INodeProps;\r\n SitePickerMenuListItem: INodeProps;\r\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\r\n siteOptionsState: boolean;\r\n SitePickerMobileContainer: INodeProps;\r\n isMobileView: boolean;\r\n renderSiteOptions(): void;\r\n resetSiteOptionsState(): void;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\ninterface ISitePickerState {\r\n expandSiteOptions: boolean;\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * SitePicker component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass SitePicker extends React.PureComponent, ISitePickerState> {\r\n private readonly _cookieName: string = '_msdyn365___site_';\r\n\r\n //private readonly _cookieExpirationInSeconds: number = 5650000;\r\n\r\n private readonly _sitePickerMenuNode: React.RefObject;\r\n\r\n private readonly _sitePickerMenuButton: React.RefObject;\r\n\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n @observable\r\n private viewport: GridSize;\r\n\r\n public constructor(props: ISitePickerViewProps) {\r\n super(props);\r\n this._handleChange = this._handleChange.bind(this);\r\n this._sitePickerMenuNode = React.createRef();\r\n this._sitePickerMenuButton = React.createRef();\r\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\r\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = {\r\n expandSiteOptions: false,\r\n isMobile: this.isMobile\r\n };\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ISitePickerViewProps = {\r\n ...(this.props as IEveSitePickerProps),\r\n SitePicker: {\r\n moduleProps: this.props,\r\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\r\n tag: 'div'\r\n },\r\n SitePickerMenu: {\r\n tag: 'button' as NodeTag,\r\n className: 'ms-site-picker__button',\r\n 'aria-label': this.props.config.heading?.text,\r\n 'aria-expanded': this.state.expandSiteOptions,\r\n onClick: this.props,\r\n ref: this._sitePickerMenuButton\r\n },\r\n SitePickerMenuSpan: {\r\n className: 'ms-site-picker__span',\r\n tag: 'span'\r\n },\r\n SitePickerMenuList: {\r\n className: 'ms-site-picker__list',\r\n role: 'menu',\r\n tag: 'ul',\r\n ref: this._sitePickerMenuNode\r\n },\r\n SitePickerMenuListItem: {\r\n className: 'ms-site-picker__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n SitePickerMobileContainer: {\r\n tag: Drawer,\r\n className: 'ms-site-picker__drawer',\r\n toggleButtonText: this.props.config.heading?.text,\r\n openGlyph: 'ms-site-picker__drawer-open',\r\n closeGlyph: 'ms-site-picker__drawer-close',\r\n glyphPlacement: 'end'\r\n },\r\n isMobileView: this.state.isMobile,\r\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\r\n renderSiteOptions: this._renderSiteOptions,\r\n resetSiteOptionsState: this._resetSiteOptionsState,\r\n siteOptionsState: this.state.expandSiteOptions\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _renderSiteOptions(): void {\r\n const expandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !expandSiteOptionsState\r\n });\r\n }\r\n\r\n private _resetSiteOptionsState(): void {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _escFunction = (event: any) => {\r\n const key = event.keyCode;\r\n if (this.state.expandSiteOptions) {\r\n switch (key) {\r\n case KeyCodes.Escape: {\r\n setTimeout(() => {\r\n const nextFocus = document && document.activeElement;\r\n if (\r\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\r\n this._sitePickerMenuNode?.current?.contains(nextFocus)\r\n ) {\r\n this._resetSiteOptionsState();\r\n this._sitePickerMenuButton?.current?.focus();\r\n }\r\n }, 50);\r\n break;\r\n }\r\n case KeyCodes.Tab: {\r\n setTimeout(() => {\r\n const nextFocus = document && document.activeElement;\r\n if (\r\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\r\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\r\n ) {\r\n this._resetSiteOptionsState();\r\n }\r\n }, 50);\r\n break;\r\n }\r\n default:\r\n return;\r\n }\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _handleOutsideClick = (event: any) => {\r\n if (\r\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\r\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\r\n ) {\r\n return;\r\n }\r\n this._resetSiteOptionsState();\r\n };\r\n\r\n private _handleChange(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\r\n if (this.props.context.request.cookies.isConsentGiven()) {\r\n const cookieConfig = { maxAge: this.props.config.cookieLifetime };\r\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\r\n }\r\n const goToString =\r\n this._stripTrailingSlashes(\r\n `${e.currentTarget.href}${this.stripLocale(this.props.context.request.url.requestUrl.pathname.toString())}`\r\n ) + this.props.context.request.url.requestUrl.search ?? '';\r\n window.location.assign(goToString);\r\n }\r\n }\r\n\r\n private _stripTrailingSlashes(path: string): string {\r\n return path.replace(/\\/+$/, '');\r\n }\r\n\r\n private stripLocale(input: string): string {\r\n var result = input;\r\n if (input.includes('/eu-en') || input.includes('/fr-ch')) {\r\n result = input.slice(6);\r\n } else if (input.includes('/en') || input.includes('/eu') || input.includes('/fr')) {\r\n result = input.slice(3);\r\n } else if (input.length > 0) {\r\n result = input.slice(0);\r\n }\r\n return result;\r\n }\r\n\r\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\r\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\r\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\r\n\r\n return (\r\n siteOptions &&\r\n siteOptions.map((item, index) => {\r\n const image = item?.siteImage;\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings!,\r\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\r\n };\r\n return (\r\n \r\n {item?.siteName}\r\n \r\n \r\n );\r\n })\r\n );\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default SitePicker;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ISitePickerViewProps } from './eve-site-picker';\r\n\r\nexport default (props: ISitePickerViewProps) => {\r\n return <>{_renderSitePicker(props)};\r\n};\r\n\r\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\r\n const { SitePickerMenu, SitePickerMenuSpan } = props;\r\n return (\r\n <>\r\n \r\n {props.config.heading?.text}\r\n \r\n \r\n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\r\n \r\n );\r\n};\r\n\r\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\r\n const options = SitePickerMenuListItemArray!.map((item, index) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n });\r\n return (\r\n \r\n {options}\r\n \r\n );\r\n};\r\n\r\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { SitePickerMobileContainer } = props;\r\n return (\r\n \r\n
\r\n {props.SitePickerMenuListItemArray?.map((item, index) => {\r\n return
{item}
;\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { isMobileView, SitePicker } = props;\r\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ICartlinesViewProps, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n Node,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICartProps as ICartExtentionProps, ICartResources } from '../definition-extensions/cart.ext.props.autogenerated';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst CartView: React.FC> = props => {\r\n const [checkoutChanged, setCheckoutChanged] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!checkoutChanged) {\r\n const doc = document.getElementsByClassName('msc-cart__btn-checkout msc-btn');\r\n if (doc.length > 0) {\r\n if (!props.context.actionContext.requestContext.user.isAuthenticated) {\r\n doc[0].innerHTML = props.resources.loggedOutCheckoutButtonText;\r\n }\r\n setCheckoutChanged(true);\r\n }\r\n }\r\n });\r\n\r\n return (\r\n
\r\n {props.title}\r\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n _renderCartLinesGroup(props, props.resources)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult,\r\n props.telemetryContent,\r\n props.multiplePickUpEnabled,\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n );\r\n};\r\n\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean,\r\n telemetryContent?: ITelemetryContent,\r\n mulitplePickUp?: boolean,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element[] | JSX.Element => {\r\n const { emptyCartText } = resources;\r\n\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n const header_content = (\r\n
\r\n
{resources.productHeading}
\r\n
{resources.quantityHeading}
\r\n
{resources.priceHeading}
\r\n
\r\n );\r\n const cart_line = cartLines.map((cartLine, index) => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {mulitplePickUp ? (\r\n \r\n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n ) : cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n ) : (\r\n <>\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n return (\r\n <>\r\n {header_content}\r\n {cart_line}\r\n \r\n );\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{emptyCartText}

\r\n {backToShoppingButton}\r\n
\r\n ) : (\r\n <>{waitingComponent}\r\n );\r\n};\r\n\r\n/**\r\n * On Toggle function.\r\n * @param cartLine -Cartline.\r\n * @param isBopisSelected -Boolean.\r\n * @returns Set state of button.\r\n */\r\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\r\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\r\n};\r\n\r\n/**\r\n * On change store function.\r\n * @param cartLine -CartLine items prop.\r\n * @returns Set state of button.\r\n */\r\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\r\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\r\n};\r\n\r\nconst _renderBOPISBlock = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for BOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const {\r\n shipInsteadDisplayText,\r\n shipToAddressDisplayText,\r\n pickItUpDisplayText,\r\n pickUpAtStoreWithLocationText,\r\n changeStoreDisplayText\r\n } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n \r\n
\r\n {isBopisSelected ? (\r\n {pickUpAtStoreWithLocationText}\r\n ) : (\r\n {shipToAddressDisplayText}\r\n )}\r\n
\r\n {isBopisSelected && (\r\n
\r\n {cartLine.pickUpInStore.orgUnitName}\r\n \r\n
\r\n )}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\r\n if (!errorData || errorData.errors.length === 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n {errorData.header}\r\n {errorData.errors}\r\n \r\n );\r\n};\r\n\r\nconst _renderOrderSummarylines = (\r\n orderSummaryLines: IOrderSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps\r\n): JSX.Element | null => {\r\n if (!orderSummaryLines) {\r\n return null;\r\n }\r\n return (\r\n \r\n {React.cloneElement(orderSummaryLines.subtotal as React.ReactElement, { price: props.data.cart.result?.cart.NetPrice })}\r\n {/* {orderSummaryLines.subtotal} */}\r\n {orderSummaryLines.shipping}\r\n {orderSummaryLines.otherCharge}\r\n {orderSummaryLines.tax}\r\n {props.promoCode}\r\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\r\n {orderSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\nconst _renderInvoiceSummarylines = (\r\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\r\n OrderSummaryItems: INodeProps,\r\n props: ICartViewProps & ICartExtentionProps<{}>\r\n): JSX.Element | null => {\r\n if (!invoiceSummaryLines) {\r\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n {invoiceSummaryLines.invoices}\r\n {invoiceSummaryLines.giftCard}\r\n {invoiceSummaryLines.loyalty}\r\n {invoiceSummaryLines.orderTotal}\r\n \r\n );\r\n};\r\n\r\nconst _renderCartLinesGroup = (props: ICartViewProps & ICartExtentionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\r\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\r\n return (\r\n
\r\n {props.cartLinesGroup.map(cartlines => {\r\n return (\r\n
\r\n {_renderCartLinesGroupHeader(\r\n cartlines[0],\r\n props.storeSelector,\r\n resources,\r\n _countItems(cartlines),\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n {_renderCartlines(\r\n cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult,\r\n props.telemetryContent,\r\n props.multiplePickUpEnabled,\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return props.cartDataResult ? (\r\n
\r\n
\r\n

{props.resources.emptyCartText}

\r\n {props.backToShoppingButton}\r\n
\r\n
\r\n ) : (\r\n <>{props.waitingComponent}\r\n );\r\n};\r\nconst _renderCartLinesGroupHeader = (\r\n cartLine: ICartlinesViewProps,\r\n storeSelector: React.ReactNode | undefined,\r\n resources: ICartResources,\r\n count: number,\r\n emailDeliveryModeCode?: string\r\n) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { pickUpText, shippingText, emailshippingText } = resources;\r\n let groupTitle: string;\r\n\r\n groupTitle = isBopisSelected ? pickUpText : shippingText;\r\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\r\n\r\n return (\r\n <>\r\n
\r\n

\r\n

{groupTitle}

\r\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\r\n
\r\n \r\n );\r\n};\r\n\r\nconst _renderGroupBOPISBlock = (\r\n cartLine: ICartlinesViewProps,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n telemetryContent?: ITelemetryContent,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element | null => {\r\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\r\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\r\n return null;\r\n }\r\n\r\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\r\n\r\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n <>\r\n {isBopisSelected ? (\r\n \r\n {changeStoreDisplayText}\r\n \r\n ) : null}\r\n \r\n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\r\n let countItem = 0;\r\n countItem = cartLine.reduce((count, item) => {\r\n return count + (item.data?.cartline.Quantity || 0);\r\n }, 0);\r\n return countItem;\r\n};\r\n\r\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\r\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\r\n const { itemLabel, itemsLabel } = resources;\r\n const suffix = count > 1 ? itemsLabel : itemLabel;\r\n return (\r\n <>\r\n \r\n {isBopisSelected ? (\r\n

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

\r\n ) : null}\r\n

\r\n ({count} {suffix})\r\n

\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CartView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\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 OrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n channelName,\r\n channelAddress\r\n}) => (\r\n \r\n {channelName}\r\n {channelAddress}\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 SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\r\n \r\n {salesLine}\r\n {buyAgainButton}\r\n {salesLineProps.happymadw}\r\n {salesLineProps.salesStatus}\r\n {errors}\r\n \r\n);\r\n\r\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\r\n \r\n {heading}\r\n {count}\r\n \r\n);\r\n\r\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\r\n \r\n {/*!isCashAndCarryTransaction && salesLine.salesStatus*/}\r\n \r\n ))}\r\n \r\n )}\r\n {!delivery.showTimeslot && address}\r\n {delivery.showTimeslot && (\r\n \r\n {address}\r\n {delivery.pickupDateTimeslot}\r\n \r\n )}\r\n \r\n \r\n);\r\n\r\nexport const Groups: 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 OrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n moduleProps,\r\n viewModes,\r\n tableViewActions,\r\n table,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {tableViewActions}\r\n {viewModes}\r\n {table}\r\n {groups && }\r\n \r\n {orderSummary && }\r\n {payment && }\r\n \r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 { LoyaltyCard, LoyaltyRewardPoint, LoyaltyRewardPointActivity } from '@msdyn365-commerce/retail-proxy';\nimport {\n getLoyaltyRewardPointActivityTimelineAsync,\n getLoyaltyRewardPointsExpiringSoonAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyData } from './account-loyalty.data';\nimport { IAccountLoyaltyProps } from './account-loyalty.props.autogenerated';\nimport { AccountLoyaltyLabel, AccountLoyaltyModalLabel } from './components';\n\nexport interface IAccountLoyaltyViewProps extends IAccountLoyaltyProps<{}> {\n AccountLoyalty: IModuleProps;\n className: string;\n totalPoints: number;\n heading?: React.ReactNode;\n Info: INodeProps;\n infoLabel: React.ReactNode;\n cardNumber: React.ReactNode;\n joinDate: React.ReactNode;\n Points: INodeProps;\n pointsLabel: React.ReactNode;\n points: React.ReactNode;\n Breakdown: INodeProps;\n RewardPoints: INodeProps;\n PointsBreakdown: INodeProps;\n rewardPoints?: IAccountLoyaltyRewardPointProps[];\n Button: INodeProps;\n homeButton: React.ReactNode;\n pointsModal: IAccountLoyaltyModalProps;\n}\n\nexport interface IAccountLoyaltyState {\n isModalOpen: boolean;\n currentModalData?: LoyaltyRewardPoint;\n isModalExpiring: boolean;\n modalID: string;\n currentFocus?: React.RefObject;\n pointsActivity: LoyaltyRewardPointActivity[] | undefined;\n}\n\nexport interface IAccountLoyaltyRewardPointProps {\n label: React.ReactNode;\n availableModalLabel: React.ReactNode;\n availableModalTrigger: React.ReactNode;\n expiringModalLabel: React.ReactNode;\n expiringModalTrigger: React.ReactNode;\n}\n\nexport type horizontalModalPosition = 'left' | 'center' | 'right';\nexport type verticalModalPosition = 'top' | 'center' | 'bottom';\n\nexport interface IAccountLoyaltyModalProps {\n isOpen: boolean;\n horizontalPosition?: horizontalModalPosition;\n verticalPosition?: verticalModalPosition;\n modalClassName?: string;\n modalHeaderClassName?: string;\n modalHeader?: string;\n modalBodyClassName?: string;\n ModalBodyTop: INodeProps;\n pointsDescription?: React.ReactNode;\n totalPoints?: React.ReactNode;\n ModalBodyHeaders: INodeProps;\n date?: React.ReactNode;\n balanceLabel?: React.ReactNode;\n rewardPointsActivity?: IAccountLoyaltyActivityProps[];\n returnFocusRef?: React.RefObject;\n onClose(): void;\n onOpened?(): void;\n}\n\nexport interface IAccountLoyaltyActivityProps {\n Activity: INodeProps;\n activityType: React.ReactNode;\n activityDate: React.ReactNode;\n activityPoints: React.ReactNode;\n}\n\nexport interface IProps extends IAccountLoyaltyProps {}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountLoyalty extends React.PureComponent {\n private readonly _buttonAvailableRef: React.RefObject;\n\n private readonly _buttonExpireRef: React.RefObject;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly decimalPrecision = 2;\n\n constructor(props: IAccountLoyaltyProps) {\n super(props);\n this._buttonAvailableRef = React.createRef();\n this._buttonExpireRef = React.createRef();\n this.state = {\n isModalOpen: false,\n currentModalData: undefined,\n isModalExpiring: false,\n modalID: '',\n pointsActivity: undefined\n };\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, TelemetryConstant.BackToShopping);\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n const { loyaltyCard } = this.props.data;\n const { loyaltyCardLabel, totalAvailablePointsLabel, backToShoppingText } = this.props.resources;\n const { actionContext } = this.props.context;\n const { isModalOpen } = this.state;\n const backToShopAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n if (!loyaltyCard || !loyaltyCard.result || !loyaltyCard.result.CardNumber) {\n this.props.context.telemetry.error('Loyalty card content is empty, module wont render');\n return null;\n }\n\n const loyaltyCardData = loyaltyCard.result;\n const rewardPoints = loyaltyCard && loyaltyCardData.RewardPoints;\n const homeLink = Msdyn365.getUrlSync('home', actionContext) ?? '';\n\n const viewProps = {\n ...this.props,\n AccountLoyalty: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty', className),\n modalTransition: {\n /**\n * On Entered in Modal function.\n * @param node - The current node element.\n * @param isAppearing - The Boolean value.\n */\n onEntered: (node: HTMLElement, isAppearing: boolean) => {\n const childNode = node.firstChild as HTMLElement;\n if (isAppearing) {\n childNode.focus();\n }\n }\n }\n },\n totalPoints: rewardPoints && this._getTotalPoints(),\n className: classnames('msc-account-loyalty', className),\n rewardPoints:\n loyaltyCardData.RewardPoints && loyaltyCardData.RewardPoints.length > 0 && this._renderRewardPoints(loyaltyCardData),\n pointsModal: (isModalOpen && this._renderModal()) || {\n isOpen: false,\n returnFocusRef: this.state.currentFocus,\n onOpened: this._onOpenModal\n },\n Info: { className: 'ms-account-loyalty__info' },\n Points: { className: 'ms-account-loyalty__points' },\n Breakdown: { className: 'ms-account-loyalty__breakdown' },\n RewardPoints: { className: 'ms-account-loyalty__reward-points' },\n PointsBreakdown: { className: 'ms-account-loyalty__point-breakdown' },\n Button: { className: 'ms-account-loyalty__link' },\n heading: heading && (\n \n ),\n\n // Account info\n infoLabel: ,\n cardNumber: ,\n joinDate: (\n \n ),\n\n // Points\n pointsLabel: ,\n points: rewardPoints && (\n \n ),\n\n homeButton: rewardPoints && (\n \n {backToShoppingText}\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 private _formatJoinDate(date: Date): string {\n return format(\n this.props.resources.joinDateFormatted,\n new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n }).format(new Date(date))\n );\n }\n\n private _renderRewardPoints(loyaltyCard: LoyaltyCard): IAccountLoyaltyRewardPointProps[] {\n return loyaltyCard.RewardPoints!.map((loyaltyPoints, index) => {\n const availableId = (loyaltyPoints.RewardPointId && `${loyaltyPoints.RewardPointId}-available-${index}`) || 'available-points';\n const expiringId = (loyaltyPoints.RewardPointId && `${loyaltyPoints.RewardPointId}-expiring-${index}`) || 'expiring-points';\n const {\n availablePointsLabel,\n availablePointsAriaLabel,\n expiringPointsFormatLabel,\n expiringPointsFormatAriaLabel\n } = this.props.resources;\n this.payLoad.contentAction.etext = TelemetryConstant.AvailablePoints;\n const availablePointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.ExpiringPoints;\n const expiringPointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const expireDaysDefaultValue = 30;\n\n return {\n label: ,\n availableModalLabel: loyaltyPoints.ActivePoints !== undefined && (\n \n ),\n availableModalTrigger: loyaltyPoints.ActivePoints !== undefined && (\n \n {loyaltyPoints.ActivePoints.toFixed(this.decimalPrecision)}\n \n ),\n expiringModalLabel: loyaltyPoints.PointsExpiringSoon !== undefined && (\n \n ),\n expiringModalTrigger: loyaltyPoints.PointsExpiringSoon !== undefined && (\n \n {loyaltyPoints.PointsExpiringSoon.toFixed(this.decimalPrecision)}\n \n )\n };\n });\n }\n\n private _renderModal(): IAccountLoyaltyModalProps | null {\n const { totalAvailablePointsLabel, loyaltyActivityDateLabel, loyaltyActivityBalanceLabel } = this.props.resources;\n const { isModalOpen, currentModalData } = this.state;\n\n if (!isModalOpen || !currentModalData) {\n // Return empty modal\n this.props.context.telemetry.error('Account loyalty modal content is empty, module wont render');\n return null;\n }\n\n return {\n isOpen: isModalOpen,\n returnFocusRef: this.state.currentFocus,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n modalClassName: 'ms-account-loyalty__points-modal',\n modalHeaderClassName: 'ms-account-loyalty__points-modal-header',\n modalHeader: currentModalData.Description ?? '',\n modalBodyClassName: 'ms-account-loyalty__points-modal-body',\n ModalBodyTop: { className: 'ms-account-loyalty__points-modal-body-top' },\n ModalBodyHeaders: { className: 'ms-account-loyalty__points-modal-body-header' },\n rewardPointsActivity: this._renderPointsActivity(),\n pointsDescription: ,\n totalPoints: ,\n date: ,\n balanceLabel: ,\n onClose: this._closeModal,\n onOpened: this._onOpenModal\n };\n }\n\n private _getTotalPoints(): number {\n const rewardPoints = this.props.data.loyaltyCard.result && this.props.data.loyaltyCard.result.RewardPoints;\n\n let total = 0;\n rewardPoints &&\n rewardPoints.forEach(loyaltyPoints => {\n total += loyaltyPoints.ActivePoints ?? 0;\n });\n\n return total;\n }\n\n private _getPoints(): string {\n const { currentModalData, isModalExpiring } = this.state;\n const rewardPoints: number = (isModalExpiring ? currentModalData!.PointsExpiringSoon : currentModalData!.ActivePoints) ?? 0;\n\n return `${rewardPoints.toFixed(this.decimalPrecision)}`;\n }\n\n private _renderPointsActivity(): IAccountLoyaltyActivityProps[] | undefined {\n const { pointsActivity } = this.state;\n\n if (!pointsActivity) {\n this.props.context.telemetry.error('Points activity content is empty, module wont render');\n return undefined;\n }\n\n return pointsActivity.map(activity => {\n return {\n Activity: { className: 'ms-account-loyalty__points-modal-activity' },\n activityType: (\n \n ),\n activityDate: (\n \n ),\n activityPoints: (\n \n )\n };\n });\n }\n\n private _parseDate(date: Date | string): Date {\n /* Dates for loyalty are coming as formatted strings yyyy-mm-ddT:00:00.000z\n Javascript was interpreting this as an iso format, thus causing the wrong date to be rendered */\n if (typeof date === 'string') {\n let dateString = date.toString();\n dateString = dateString.replace(/-/g, '/');\n dateString = dateString.substring(0, 10);\n return new Date(dateString);\n }\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n }\n\n private _getTimelineType(pointActivity: LoyaltyRewardPointActivity): string {\n if (pointActivity.LoyaltyRewardPointTimelineEntryType) {\n return pointActivity.LoyaltyRewardPointTimelineEntryType;\n }\n\n const { earnedPointsLabel, redeemedPointsLabel, adjustedPointsLabel, refundedPointsLabel } = this.props.resources;\n switch (pointActivity.ExtensibleLoyaltyRewardPointActivityEntryTypeValue) {\n case 1:\n return earnedPointsLabel;\n case 2:\n return refundedPointsLabel;\n case 3:\n return redeemedPointsLabel;\n case 5:\n return adjustedPointsLabel;\n default:\n return '';\n }\n }\n\n private readonly _populateModalData = (\n focusRef: React.RefObject,\n loyaltyCard: LoyaltyCard,\n currentLoyaltyPoints: LoyaltyRewardPoint,\n expiring: boolean\n ) => () => {\n if (!loyaltyCard || !loyaltyCard.CardNumber || !currentLoyaltyPoints.RewardPointId) {\n this.props.context.telemetry.error('Modal data is empty, module wont render');\n return null;\n }\n\n const { actionContext } = this.props.context;\n\n // Open modal\n this.setState({\n isModalOpen: true,\n currentModalData: currentLoyaltyPoints,\n isModalExpiring: expiring,\n modalID: '',\n currentFocus: focusRef\n });\n\n if (expiring) {\n getLoyaltyRewardPointsExpiringSoonAsync(\n { callerContext: actionContext, queryResultSettings: {} },\n loyaltyCard.CardNumber,\n currentLoyaltyPoints.RewardPointId,\n 30\n )\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({ pointsActivity: points });\n })\n .catch((error: Error) => {\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n } else {\n getLoyaltyRewardPointActivityTimelineAsync(\n { callerContext: actionContext, queryResultSettings: {} },\n loyaltyCard.CardNumber,\n currentLoyaltyPoints.RewardPointId\n )\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({ pointsActivity: points });\n })\n .catch((error: Error) => {\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n }\n // eslint-disable-next-line no-useless-return, consistent-return -- Auto-suppressed.\n return;\n };\n\n private readonly _closeModal = () => {\n this.setState({\n isModalOpen: false,\n currentModalData: undefined,\n pointsActivity: undefined\n });\n };\n\n /**\n * On open modal function.\n */\n private readonly _onOpenModal = () => {\n if (this.state.currentFocus?.current) {\n this.state.currentFocus.current.focus();\n }\n };\n}\n\nexport default AccountLoyalty;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyViewProps } from './account-loyalty';\n\nconst AccountLoyaltyView: React.FC = props => {\n const {\n AccountLoyalty,\n Info,\n Points,\n Breakdown,\n RewardPoints,\n PointsBreakdown,\n Button,\n heading,\n infoLabel,\n cardNumber,\n joinDate,\n pointsLabel,\n points,\n rewardPoints,\n homeButton,\n pointsModal\n } = props;\n const { ModalBodyTop, ModalBodyHeaders } = pointsModal;\n return (\n \n {heading}\n \n {infoLabel}\n {cardNumber}\n {joinDate}\n \n \n {pointsLabel}\n {points}\n\n \n {rewardPoints &&\n rewardPoints.map((activity, index) => {\n return (\n \n {activity.label}\n \n {activity.availableModalLabel}\n {activity.availableModalTrigger}\n \n\n \n {activity.expiringModalLabel}\n {activity.expiringModalTrigger}\n \n \n );\n })}\n \n \n\n {homeButton}\n\n {(!pointsModal.isOpen && ) || (\n \n \n {pointsModal.modalHeader}\n \n \n \n {pointsModal.pointsDescription}\n {pointsModal.totalPoints}\n \n \n {pointsModal.date}\n {pointsModal.balanceLabel}\n \n {pointsModal.rewardPointsActivity &&\n pointsModal.rewardPointsActivity.map((activity, index) => {\n const { Activity, activityType, activityDate, activityPoints } = activity;\n return (\n \n {activityType}\n {activityDate}\n {activityPoints}\n \n );\n })}\n \n \n )}\n \n );\n};\n\nexport default AccountLoyaltyView;\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 IAccountLoyaltyLabel {\n className?: string;\n text?: string | number;\n}\n\nexport const AccountLoyaltyLabel: React.FC = ({ className, text }) =>

{text}

;\n\nexport interface IAccountLoyaltyModalLabel {\n className?: string;\n text?: string | number;\n labelFor?: string;\n}\n\nexport const AccountLoyaltyModalLabel: React.FC = ({ className, text, labelFor }) => (\n \n);\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 ISignInButton {\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 SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default SignInButton;\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 ISignInDescription {\n className: string;\n description: string;\n}\n\nconst SignInDescription: React.FC = ({ className, description }) =>

{description}

;\n\nexport default SignInDescription;\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 ISignInErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignInError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignInError;\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 ISignInInputProps {\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 ariaLabel?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignInInput {\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 SignInInput: React.FC = ({ id, type, value, pattern, className, maxLength, ariaLabel, onChange }) => (\n \n);\n\nexport default SignInInput;\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 ISignInLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignInLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignInLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInLink {\n id?: string;\n className: string;\n href: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInLink;\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 ISignInLoadingIcon {\n className: string;\n}\n\nconst SignInLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignInLoadingIcon;\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 ISignInLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignInLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignInLoadingMessage;\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 ISignInText {\n className: string;\n text: string;\n}\n\nconst SignInText: React.FC = ({ className, text }) => {text};\n\nexport default SignInText;\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 SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n key: string;\n button: INodeProps;\n image: React.ReactNode;\n text: React.ReactNode;\n}\n\nexport interface ISignInB2BItem {\n key: string;\n button: INodeProps;\n text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n socialAccounts: INodeProps;\n items: ISignInSocialItem[];\n}\n\nexport interface ISignInB2BAccount {\n socialAccounts: INodeProps;\n items: ISignInB2BItem[];\n}\nexport interface ISignInLocalAccount {\n localAccount: INodeProps;\n items: ISignInItem[];\n forgetPassword: React.ReactNode;\n disclaimer: React.ReactNode;\n error: React.ReactNode;\n signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n className: string;\n viewState: ISignInViewState;\n signIn: IModuleProps;\n loading: ISignInLoading;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n signInSection: INodeProps;\n signInSectionHeading: React.ReactNode;\n signInLocalAccount: ISignInLocalAccount;\n signInSocialAccount: ISignInSocialAccount;\n signInB2BAccount: ISignInB2BAccount;\n signUpSection: INodeProps;\n signUpSectionHeading: React.ReactNode;\n signUpDescription: React.ReactNode;\n signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn 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 SignIn extends React.Component> {\n private readonly moduleClassName: string = 'ms-sign-in';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private emailId: 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: ISignInProps) {\n super(props);\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 this.emailId = 'logonIdentifier';\n }\n\n public componentDidMount(): void {\n this._prePopulateData();\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(nextProps: ISignInProps, nextState: ISignInViewState): 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: ISignInConfig = this.props.config || {};\n const resources: ISignInResources = this.props.resources || {};\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signIn: {\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 signInSection: {\n className: `${this.moduleClassName}__sign-in-section`\n },\n signInSectionHeading: (\n \n ),\n signInLocalAccount: {\n localAccount: {\n className: `${this.moduleClassName}__account-items localAccount`\n },\n items: [\n this._renderInput(\n this.emailId,\n 'email',\n resources.emailAddressLabelText,\n resources.emailAddressAriaLabel,\n this.emailRegex\n ),\n this._renderInput('password', 'password', resources.passwordLabelText)\n ],\n forgetPassword: (\n \n ),\n disclaimer: config.signInDisclaimer && (\n \n ),\n error: ,\n signInButton: (\n \n )\n },\n signInSocialAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__social-accounts`\n },\n items: [\n this._renderSocialAccount(\n 'FacebookExchange',\n resources.facebookButtonText,\n resources.facebookButtonAriaLabel,\n config.facebookIcon\n ),\n this._renderSocialAccount(\n 'MicrosoftAccountExchange',\n resources.microsoftButtonText,\n resources.microsoftButtonAriaLabel,\n config.microsoftIcon\n )\n ]\n },\n signInB2BAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__b2b-social-accounts`\n },\n items: [\n this._renderB2BSocialAccount(\n 'StoreManagerB2BSignin',\n resources.b2bButtonText,\n resources.b2bButtonAriaLabel,\n config.displayB2bAccountManagerSignin\n )\n ]\n },\n signUpSection: {\n className: `${this.moduleClassName}__sign-up-section`\n },\n signUpSectionHeading: (\n \n ),\n signUpDescription: (\n \n ),\n signUpLink: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.signInDisclaimer = event.target.value);\n\n public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signInHeading.text = event.target.value);\n\n public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signUpHeading.text = event.target.value);\n\n private readonly _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 // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n this.emailRegex = window['CONTENT']['email_pattern'];\n }\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 // @ts-expect-error\n this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignInResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n requiredField_email: resources.requriedEmailError,\n requiredField_password: resources.requriedPasswordError,\n invalid_email: resources.invalidEmailError,\n invalid_password: resources.invalidPasswordError,\n unknown_error: resources.unknownError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private _renderInput(id: string, type: string, labelText: string, ariaLabel?: string, pattern?: string): ISignInItem {\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 error: (\n \n ),\n input: (\n \n )\n };\n }\n\n private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n image: this._createImageMarkup(iconImage),\n text: \n };\n }\n\n private _renderB2BSocialAccount(\n id: string,\n text: string,\n ariaLabel: string,\n _displayB2bAccountManagerSignin: boolean | undefined\n ): ISignInB2BItem | null {\n if (_displayB2bAccountManagerSignin) {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n text: \n };\n }\n return null;\n }\n\n private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n if (iconImage) {\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: iconImage && iconImage.imageSettings\n };\n const pictureClassName = `${this.moduleClassName}__social-account-picture`;\n return (\n
\n \n
\n );\n }\n return null;\n }\n}\n\nexport default SignIn;\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 ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps\n} from './sign-in';\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};\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 signUpLink\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n {B2BAccount(signInB2BAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpLink}\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 * 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 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 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\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 { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n Button,\n ITelemetryContent,\n TelemetryConstant,\n getPayloadObject,\n getTelemetryAttributes\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-view-mode-selector';\nconst detailsViewClassName = `${componentClassName}__detailed-view`;\nconst listViewClassName = `${componentClassName}__list-view`;\nconst viewSelectedClassName = `${componentClassName}__selected`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeResources {\n listViewOptionAriaLabel?: string;\n detailedViewOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewModeState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersViewModeState {\n DetailedView,\n ListView\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersViewModeProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersViewModeProps extends IComponentProps<{}> {\n className?: string;\n resources?: IOrderHistoryWithSearchAndFiltersViewModeResources;\n currentViewModeState: OrderHistoryWithSearchAndFiltersViewModeState;\n telemetryContent?: ITelemetryContent;\n onClick(state: OrderHistoryWithSearchAndFiltersViewModeState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersViewModeProps\n) => {\n const [viewModeState, setViewModeState] = React.useState(props.currentViewModeState);\n\n const onClickHandler = (newViewModeState: OrderHistoryWithSearchAndFiltersViewModeState) => {\n setViewModeState(newViewModeState);\n props.onClick(newViewModeState);\n };\n\n // define telemetry attributes\n const viewModeDetailedViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - Detailed view`)\n );\n const viewModeListViewAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, `${TelemetryConstant.ViewMode} - List view`)\n );\n\n return (\n
    \n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.DetailedView)}\n {...viewModeDetailedViewAttributes}\n />\n onClickHandler(OrderHistoryWithSearchAndFiltersViewModeState.ListView)}\n {...viewModeListViewAttributes}\n />\n
    \n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersViewMode component.\n */\nexport const OrderHistoryWithSearchAndFiltersViewModeComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersViewModeProps\n>('OrderHistoryWithSearchAndFiltersViewModeComponent', { component: OrderHistoryWithSearchAndFiltersViewModeFunctionalComponent });\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 { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\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 { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\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 { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): 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 { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n if (!this.props.context.request.params.isEditor) {\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\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 { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
    \n
    \n {qtyLabel}\n
    \n
    \n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\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 { 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"],"names":["SitePicker","React","constructor","props","super","_cookieName","_escFunction","event","key","keyCode","this","state","expandSiteOptions","KeyCodes","Escape","setTimeout","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","document","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","current","contains","_sitePickerMenuNode","_resetSiteOptionsState","focus","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","target","_handleChange","bind","_renderSiteOptions","_updateViewport","viewport","context","request","device","Type","isMobile","componentDidMount","_document","_document2","MsDyn365","isBrowser","addEventListener","body","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","_document3","_document4","removeEventListener","render","_this$props$config$he","_this$props$config$he2","viewProps","_objectSpread","moduleProps","className","classnames","config","tag","SitePickerMenu","heading","text","onClick","ref","SitePickerMenuSpan","SitePickerMenuList","role","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","isMobileView","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","renderView","expandSiteOptionsState","setState","e","preventDefault","currentTarget","href","length","_ref","cookies","isConsentGiven","cookieConfig","maxAge","cookieLifetime","set","goToString","_stripTrailingSlashes","stripLocale","url","requestUrl","pathname","toString","search","location","assign","path","replace","input","result","includes","slice","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","siteOptions","map","item","index","_image$imageSettings","_item$siteRedirectUrl","image","siteImage","imageProps","gridSettings","imageSettings","tabIndex","siteRedirectUrl","destinationUrl","siteName","Image","requestContext","src","altText","loadFailureBehavior","shouldSkipToMainImage","_getViewport","undefined","innerWidth","__decorate","observable","computed","_renderSitePicker","_renderSiteOptionsList","options","Node","Object","onMouseLeave","Module","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","resources","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","telemetryContent","mulitplePickUp","emailDeliveryModeCode","emptyCartText","header_content","productHeading","quantityHeading","priceHeading","cart_line","cartLine","_cartLine$data","_cartLine$data2","_cartLine$data3","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","data","product","ItemId","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data4","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","getTelemetryAttributes","ContainerProps","orgUnitName","Button","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","_props$data$cart$resu","subtotal","price","cart","NetPrice","shipping","otherCharge","tax","promoCode","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","telemetry","error","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","_renderCartLinesGroupHeader","_countItems","actionContext","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","groupTitle","toLowerCase","_renderCartLinesGroupTitle","_cartLine$data5","_cartLine$data6","_cartLine$data7","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","_props$context$action","_props$cart","checkoutChanged","setCheckoutChanged","useState","useEffect","doc","getElementsByClassName","user","isAuthenticated","innerHTML","loggedOutCheckoutButtonText","id","renderModuleAttributes","title","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","amount","channelReferenceId","channelName","channelAddress","SalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","happymadw","salesStatus","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","LineId","deliveryType","shipment","trackingInfo","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","alert","loading","orderInfomation","orderSummary","payment","help","AccountLoyalty","decimalPrecision","handleHeadingChange","value","_populateModalData","focusRef","loyaltyCard","currentLoyaltyPoints","expiring","CardNumber","RewardPointId","isModalOpen","currentModalData","isModalExpiring","modalID","currentFocus","getLoyaltyRewardPointsExpiringSoonAsync","callerContext","queryResultSettings","then","points","pointsActivity","catch","exception","debug","getLoyaltyRewardPointActivityTimelineAsync","message","_closeModal","_onOpenModal","_this$state$currentFo","_buttonAvailableRef","_buttonExpireRef","getTelemetryObject","telemetryPageName","friendlyName","BackToShopping","_Msdyn365$getUrlSync","_heading$tag","loyaltyCardLabel","totalAvailablePointsLabel","backToShoppingText","backToShopAttributes","loyaltyCardData","rewardPoints","RewardPoints","homeLink","Msdyn365","modalTransition","onEntered","node","isAppearing","childNode","firstChild","totalPoints","_getTotalPoints","_renderRewardPoints","pointsModal","_renderModal","isOpen","returnFocusRef","onOpened","Info","Points","Breakdown","PointsBreakdown","editProps","onEdit","infoLabel","AccountLoyaltyLabel","cardNumber","joinDate","_formatJoinDate","_parseDate","LoyaltyEnrollmentDateLocal","pointsLabel","toFixed","homeButton","date","format","joinDateFormatted","Intl","DateTimeFormat","locale","month","day","year","Date","loyaltyPoints","availableId","expiringId","availablePointsLabel","availablePointsAriaLabel","expiringPointsFormatLabel","expiringPointsFormatAriaLabel","contentAction","etext","AvailablePoints","availablePointsAttributes","ExpiringPoints","expiringPointsAttributes","label","AccountLoyaltyModalLabel","Description","availableModalLabel","ActivePoints","labelFor","availableModalTrigger","color","innerRef","expiringModalLabel","PointsExpiringSoon","expiringModalTrigger","_currentModalData$Des","loyaltyActivityDateLabel","loyaltyActivityBalanceLabel","horizontalPosition","verticalPosition","modalClassName","modalHeaderClassName","modalHeader","modalBodyClassName","ModalBodyTop","ModalBodyHeaders","rewardPointsActivity","_renderPointsActivity","pointsDescription","_getPoints","balanceLabel","onClose","total","forEach","_loyaltyPoints$Active","activity","_toFixed","Activity","activityType","_getTimelineType","activityDate","cultureFormatter","formatDate","ActivityDate","activityPoints","LoyaltyPoints","dateString","substring","getUTCFullYear","getUTCMonth","getUTCDate","pointActivity","LoyaltyRewardPointTimelineEntryType","earnedPointsLabel","redeemedPointsLabel","adjustedPointsLabel","refundedPointsLabel","ExtensibleLoyaltyRewardPointActivityEntryTypeValue","observer","Modal","autoFocus","fade","zIndex","onClosed","toggle","ModalHeader","ModalBody","htmlFor","ariaLabel","disabled","attributes","description","type","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","pattern","onChange","forId","SignIn","moduleClassName","handleParagraphChange","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","emailRegex","emailId","SA_FIELDS","AttributeFields","ID","errorMessages","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalidEmailError","invalid_password","invalidPasswordError","unknown_error","unknownError","EmailRegex","defaultRegex","source","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","viewState","isShowLoading","signIn","modal","modalBody","icon","SignInLoadingIconComponent","SignInLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","signInSection","signInSectionHeading","signInLocalAccount","localAccount","items","_renderInput","emailAddressLabelText","emailAddressAriaLabel","passwordLabelText","forgetPassword","SignInLinkComponent","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","disclaimer","SignInErrorComponent","signInButton","SignInButtonComponent","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signInB2BAccount","_renderB2BSocialAccount","b2bButtonText","b2bButtonAriaLabel","displayB2bAccountManagerSignin","signUpSection","signUpSectionHeading","signUpDescription","SignInDescriptionComponent","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","signUpButtonText","labelText","wrapper","SignInLabelComponent","SignInInputComponent","iconImage","button","_createImageMarkup","SignInTextComponent","_displayB2bAccountManagerSignin","pictureClassName","SignInLoading","LocalAccount","SocialAccount","B2BAccount","BusinessPartnerPromotionTermsParagraph","titleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","checked","onToggleTermOfServiceModal","termsOfServiceModalOpened","onSubmit","async","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","termsOfServiceModalHeading","submitButton","submitRequestLabel","notificationBar","Alert","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","ObjectExtensions","isNullOrUndefined","StringExtensions","isNullOrEmpty","IsAdmin","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","linkText","promotionalImage","ArrayExtensions","hasElements","promotionalContent","imageSrc","promotionalItemImageSettings","push","additionalProperties","linkUrl","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","_handleClickOutside","_handleFocusOutside","relatedTarget","_closeSubmenu","navDrawerList","Array","from","childNodes","navDrawerButton","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","apiSettings","_categoryImage$imageS","ImageData","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","isDrawerOpen","colProps","toggleButtonProps","onToggle","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","arguments","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","BackTopFooter","backtoTopText","destination","BackToTop","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","navigationMenuSource","nameTranslations","nameTranslation","find","Language","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","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","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","openInNewTab","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","_this$menuItemRef$cur","children","componentClassName","detailsViewClassName","listViewClassName","viewSelectedClassName","OrderHistoryWithSearchAndFiltersViewModeState","OrderHistoryWithSearchAndFiltersViewModeComponent","msdyn365Commerce","createComponent","component","_props$resources$deta","_props$resources","_props$resources$deta2","_props$resources2","_props$resources$list","_props$resources3","_props$resources$list2","_props$resources4","viewModeState","setViewModeState","currentViewModeState","onClickHandler","newViewModeState","viewModeDetailedViewAttributes","ViewMode","viewModeListViewAttributes","DetailedView","detailedViewOptionAriaLabel","ListView","listViewOptionAriaLabel","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","RecordId","catalogId","ProductComparisonState","instance","accountInformation","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","slots","productComparisonPreview","isDisabled","content","_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","app","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","isSelected","itemIndex","contentID","getContentID","tabId","activeContentIDResult","activeTabState","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","tabSlots","tabItemTitle","_renderTabItemContent","tabItemType","TabContent","tabItemContent","TabHeader","tabIndexQuery","_refHandler","link","activeLink","_onClick","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","_onKeyDown","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","activeTab","queryTabIndex","indexOf","arr","split","_getTabHeader","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","params","isEditor","dataActionTabId","selected","onKeyDown","paramName","paramValue","URL","URLSearchParams","decodeURIComponent","CartIcon","cartLabel","cartQtyLabel","cartItem","totalItemsInCart","qtyLabel","visibility","CartIconComponent","createComponentOverride","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","placeholder","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","ApplyPromoCode","promoCodeHeadingText","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","_renderCollapseMenu","Collapse","isNullOrWhitespace","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"],"sourceRoot":""}