{"version":3,"file":"static/js/17.21d48cb90260f497dec1.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/invoices-list.view.tsx?38e4","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/navigation-menu-utilities.tsx?091e","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/navigation-menu-root-disabled.tsx?1d9a","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/navigation-menu-root-enabled.tsx?c6ea","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/navigation-menu.view.tsx?fbed","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-confirmation.view.tsx?6e38","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/checkout-section-container.view.tsx?8c27","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/invoices-list.view.tsx?e526","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/navigation-menu-utilities.tsx?fc24","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/navigation-menu-root-disabled.tsx?6af5","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/navigation-menu-root-enabled.tsx?2139","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/navigation-menu.view.tsx?15d9","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-confirmation.view.tsx?4222","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n if (MsDyn365.isBrowser) {\r\n const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n console.log(linksElements);\r\n linksElements.forEach(l => l.setAttribute('href', '#'));\r\n }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\n/**\r\n * INavigationMenuViewRootProps.\r\n */\r\nexport interface INavigationMenuViewRootProps {\r\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\r\n}\r\n\r\n/**\r\n * Represent navigation menu state interface.\r\n */\r\nexport interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: Msdyn365.IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n isDrawerOpen: boolean;\r\n desktopCategoryId: number;\r\n isOnlyMobile: boolean;\r\n isNavOpen: boolean;\r\n}\r\n\r\n/**\r\n * NavMenuConstants enum.\r\n */\r\nexport enum NavMenuConstants {\r\n zero = 0,\r\n one = 1,\r\n two = 2,\r\n three = 3,\r\n four = 4,\r\n escapeKey = 27,\r\n rootMenu = 1\r\n}\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Get category image.\r\n * @param props - Navigation menu props.\r\n * @param categoryImage - Category Image.\r\n * @param alttext - AltText String.\r\n * @returns Returns Node.\r\n */\r\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\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\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n Collapse, Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n isMobile,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\r\n\r\n/**\r\n *\r\n * NavigationMenuRootDisabled component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuRootDisabled extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n private currentLevel: number = NavMenuConstants.zero;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n private customResizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n public constructor(props: INavigationMenuViewRootProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n const { menuItemData } = this.props.navProps;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({ src: imageSource, altText: item.text, additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n return null;\r\n });\r\n }\r\n }\r\n this.state = {\r\n activeMenu: 1,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n isDrawerOpen: false,\r\n desktopCategoryId: -1,\r\n isOnlyMobile: this.isOnlyMobile,\r\n categoryImage: this.promotionalImage,\r\n isNavOpen: false\r\n };\r\n this.telemetryContent = getTelemetryObject(this.props.navProps.context.request.telemetryPageName!,\r\n this.props.navProps.friendlyName,\r\n this.props.navProps.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n }\r\n\r\n @computed public get isOnlyMobile(): boolean {\r\n return (isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n this._customUpdateViewport();\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.currentLevel = 1;\r\n const navbarKey = 'header-nav-mobile';\r\n return (\r\n \r\n {\r\n this.state.isOnlyMobile ? this._renderMobileMenu() : (<>\r\n \r\n {this._renderCollapseMenu()}\r\n )\r\n }\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to handle nav bar toggle.\r\n */\r\n private readonly _toggleNavBar = (): void => {\r\n this.setState(previousState => ({\r\n activeMenu: 1,\r\n isNavOpen: !previousState.isNavOpen\r\n }));\r\n };\r\n\r\n private _renderCollapseMenu(): JSX.Element | null {\r\n return (\r\n \r\n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {this.state.isOnlyMobile && this.state.activeMenu !== undefined &&\r\n \r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props.navProps;\r\n\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\r\n return (\r\n this._renderLinkMenuItem(item)\r\n );\r\n } else if (!item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem } = this.props.navProps;\r\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (ArrayExtensions.hasElements(menuItemData)) {\r\n menuItemData[0].id = 1;\r\n }\r\n\r\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\r\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\r\n\r\n if (menuItem) {\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}\r\n {' '}\r\n \r\n );\r\n }\r\n } else {\r\n\r\n for (const [index, item] of menuItemData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n
\r\n );\r\n }\r\n\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\r\n if (!menu) {\r\n return null;\r\n }\r\n\r\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\r\n const item: IMenuItemData = menu[Number(index)];\r\n\r\n if (item.id === this.state.activeMenu) {\r\n if (!NavigationMenuRootDisabled.isBackTrack) {\r\n this.setState({ parentMenu: parentMenuId });\r\n } else {\r\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\r\n }\r\n return item;\r\n }\r\n const found = this._getFromSubMenu(item.id, item.subMenu);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\r\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false));\r\n }\r\n\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n\r\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\r\n return (this._renderLinkMenuItem(menuItemData, menuItemData.id));\r\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\r\n\r\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\r\n if (activeMenu === NavMenuConstants.rootMenu) {\r\n subMenus = subMenuArray!.filter(subMenuItem => (subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail));\r\n }\r\n\r\n const { ListItem } = this.props.navProps;\r\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\r\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\r\n const hasOptions = (option.subMenu && ArrayExtensions.hasElements(option.subMenu));\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && this.state.isOnlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\r\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\r\n menuItem = this.getMenuItem(option, index);\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n const isHavingSubmenu = hasOptions && isEnableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one);\r\n\r\n if (hasOptions && !this.state.isOnlyMobile) {\r\n\r\n if (this.currentLevel >= NavMenuConstants.two) {\r\n levelClassName = 'level-3';\r\n subMenu = this._renderSubMenuDrawer(levelClassName, option);\r\n } else if (this.currentLevel <= this.supportedLevel) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\r\n }\r\n }\r\n\r\n if (isHavingSubmenu && this.state.isOnlyMobile) {\r\n this.currentLevel++;\r\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n return (\r\n \r\n { menuItem}\r\n { subMenu}\r\n \r\n );\r\n });\r\n return (this._renderMenu(levelClassName, menuOptions, isSubMenu));\r\n }\r\n\r\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\r\n let menuItem: JSX.Element | null;\r\n if (this.currentLevel === NavMenuConstants.one) {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option));\r\n } else {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option));\r\n }\r\n return menuItem;\r\n }\r\n\r\n private _renderSubMenuDrawer(levelClassName: string, menuItem: IMenuItemData): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle desktop category click.\r\n * @param desktopCategoryId - Desktop category id used to identify the index of the category.\r\n * @returns Returns void.\r\n */\r\n private readonly _bindDesktopCategoryClick = (desktopCategoryId: number) => (): void => {\r\n if (this.state.desktopCategoryId !== desktopCategoryId) {\r\n this.setState({ desktopCategoryId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ desktopCategoryId: -1, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n { linkText}\r\n \r\n );\r\n }\r\n return null;\r\n\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props.navProps;\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\r\n const isCategoryImageDisplay =\r\n !this.state.isOnlyMobile && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !isSubmenu;\r\n const isPromotionalContentDisplay =\r\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\r\n const divContainerClass = this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const menuLevelSupportClassName = isCategoryImageDisplay && this.props.navProps.config.menuLevelSupport &&\r\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two && 'navmenu-multi-level';\r\n\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n
\r\n {\r\n isCategoryImageDisplay && ArrayExtensions.hasElements(categoryImages) && categoryImages.map(item => (\r\n \r\n { getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n { isPromotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n ))\r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({ src: imageSource, altText: item.text, additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n /**\r\n * Handle dropdown toggle.\r\n * @param data - Menu Item data.\r\n * @param parentId - Number.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n if (this.props.navProps.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuRootDisabled.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n };\r\n\r\n /**\r\n * Handle back navigation for menu items for mobile view.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuRootDisabled.isBackTrack = true;\r\n this.setState((previousState) => ({ activeMenu: previousState.parentMenu }));\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on click on body.\r\n * @param event - MouseEvent.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current &&\r\n !this.menuNode.current.contains(event.target as Node)) {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Mobile view label text.\r\n * @param optionLinkText -Sub menu item link text.\r\n * @returns Boolean.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n const firstIndex: number = 0;\r\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n /**\r\n * Function to handle nav menu close.\r\n */\r\n private readonly _closeNavMenu = (): void => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on esc key.\r\n * @param event - Event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Custom update viewport.\r\n */\r\n private readonly _customUpdateViewport = (): void => {\r\n this.setState({ isOnlyMobile: this.isOnlyMobile });\r\n };\r\n}\r\n\r\nexport default NavigationMenuRootDisabled;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n Collapse, Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n isMobile,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\r\n\r\n/**\r\n *\r\n * NavigationMenuRootEnabled component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuRootEnabled extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n private currentLevel: number = NavMenuConstants.zero;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\r\n\r\n private menuItemData: IMenuItemData[] = [];\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n private customResizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n public constructor(props: INavigationMenuViewRootProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n const { menuItemData } = this.props.navProps;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({ src: imageSource, altText: item.text, additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n return null;\r\n });\r\n }\r\n }\r\n this.state = {\r\n activeMenu: NavMenuConstants.rootMenu,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n isDrawerOpen: false,\r\n desktopCategoryId: -1,\r\n isOnlyMobile: this.isOnlyMobile,\r\n categoryImage: this.promotionalImage,\r\n isNavOpen: false\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(this.props.navProps.context.request.telemetryPageName!,\r\n this.props.navProps.friendlyName,\r\n this.props.navProps.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n }\r\n\r\n @computed public get isOnlyMobile(): boolean {\r\n return (isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n this._customUpdateViewport();\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n this._addShopAllLink();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.currentLevel = NavMenuConstants.one;\r\n const navbarKey = 'header-nav-mobile';\r\n return (\r\n \r\n {\r\n this.state.isOnlyMobile ? this._renderMobileMenu() : (<>\r\n {this.props.navProps.config.rootMenuNavigation}\r\n {this._renderCollapseMenu()}\r\n )\r\n }\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to handle nav bar toggle.\r\n */\r\n private readonly _toggleNavBar = (): void => {\r\n this.setState(previousState => ({\r\n activeMenu: NavMenuConstants.rootMenu,\r\n isNavOpen: !previousState.isNavOpen\r\n }));\r\n };\r\n\r\n private _renderCollapseMenu(): JSX.Element | null {\r\n return (\r\n \r\n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\r\n\r\n this.currentLevel = NavMenuConstants.one;\r\n return (\r\n \r\n \r\n {this.state.isOnlyMobile && this.state.activeMenu !== undefined &&\r\n \r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { Navigation } = this.props.navProps;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\r\n return (\r\n this._renderLinkMenuItem(item)\r\n );\r\n } else if (!item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem } = this.props.navProps;\r\n let menuItemData: IMenuItemData[] = [];\r\n if (this.state.isOnlyMobile) {\r\n menuItemData = this.menuItemData;\r\n } else {\r\n menuItemData = this.props.navProps.menuItemData;\r\n }\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n let cmsMenuData: IMenuItemData[] | undefined = [];\r\n let retailMenuItemData: IMenuItemData[] | undefined = [];\r\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\r\n\r\n for (const item of retailMenuData) {\r\n retailMenuItemData = item.subMenu!.filter(subMenuItem => (subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail));\r\n item.subMenu = retailMenuItemData;\r\n }\r\n\r\n for (const item of menuItemData) {\r\n cmsMenuData = item.subMenu!.filter(subMenuItem => (subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail));\r\n }\r\n\r\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\r\n let menuItem: IMenuItemData | null = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n if (!NavigationMenuRootEnabled.isBackTrack) {\r\n this.setState({\r\n parentMenu: undefined\r\n });\r\n } else {\r\n this.setState({\r\n parentMenu: undefined,\r\n mobileViewLabelText: menuItemDatum.linkText\r\n });\r\n }\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum);\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n if (menuItem) {\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}\r\n {' '}\r\n \r\n );\r\n }\r\n\r\n } else {\r\n for (const [index, item] of retailMenuData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n
\r\n );\r\n }\r\n\r\n for (const [index, item] of cmsMenuData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n }\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item?.subMenu;\r\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\r\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\r\n const subMenu: IMenuItemData = subMenus[Number(index)];\r\n let parentMenuId = item?.id;\r\n\r\n if (subMenu.id === this.state.activeMenu) {\r\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\r\n parentMenuId = undefined;\r\n }\r\n\r\n if (!NavigationMenuRootEnabled.isBackTrack) {\r\n this.setState({ parentMenu: parentMenuId });\r\n } else {\r\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\r\n }\r\n return subMenu;\r\n }\r\n const found = this._getFromSubMenu(subMenu);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\r\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false));\r\n }\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n\r\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\r\n return (this._renderLinkMenuItem(menuItemData, menuItemData.id));\r\n } else if (!menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\r\n\r\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\r\n if (activeMenu === NavMenuConstants.rootMenu) {\r\n subMenus = subMenuArray!.filter(subMenuItem => (subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail));\r\n }\r\n\r\n const { ListItem } = this.props.navProps;\r\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\r\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\r\n const hasOptions = (option.subMenu && ArrayExtensions.hasElements(option.subMenu));\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && this.state.isOnlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\r\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\r\n menuItem = this.getMenuItem(option, index);\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n const isHavingSubmenu = hasOptions && isEnableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one);\r\n\r\n if (hasOptions && !this.state.isOnlyMobile) {\r\n if (this.currentLevel >= NavMenuConstants.two) {\r\n levelClassName = 'level-3';\r\n subMenu = this._renderSubMenuDrawer(levelClassName, option);\r\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\r\n }\r\n }\r\n if (isHavingSubmenu && this.state.isOnlyMobile) {\r\n this.currentLevel++;\r\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n return (\r\n \r\n { menuItem}\r\n { subMenu}\r\n \r\n );\r\n });\r\n return (this._renderMenu(levelClassName, menuOptions, isSubMenu));\r\n }\r\n\r\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\r\n let menuItem: JSX.Element | null;\r\n if (this.currentLevel === NavMenuConstants.one) {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option));\r\n } else {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option));\r\n }\r\n return menuItem;\r\n }\r\n\r\n private _renderSubMenuDrawer(levelClassName: string, menuItem: IMenuItemData): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle desktop category click.\r\n * @param desktopCategoryId - Desktop category id used to identify the index of the category.\r\n * @returns Returns void.\r\n */\r\n private readonly _bindDesktopCategoryClick = (desktopCategoryId: number) => (): void => {\r\n if (this.state.desktopCategoryId !== desktopCategoryId) {\r\n this.setState({ desktopCategoryId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ desktopCategoryId: -1, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n { linkText}\r\n \r\n );\r\n }\r\n return null;\r\n\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props.navProps;\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\r\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\r\n const isCategoryImageDisplay =\r\n !this.state.isOnlyMobile && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !isSubmenu;\r\n const isPromotionalContentDisplay =\r\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\r\n const divContainerClass = this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const menuLevelSupportClassName =\r\n isCategoryImageDisplay && this.props.navProps.config.menuLevelSupport &&\r\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two && 'navmenu-multi-level';\r\n\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n
\r\n {\r\n isCategoryImageDisplay && ArrayExtensions.hasElements(categoryImages) && categoryImages.map(item => (\r\n \r\n { getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n { isPromotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n ))\r\n }\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({ src: imageSource, altText: item.text, additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n /**\r\n * Handle dropdown toggle.\r\n * @param data - Menu Item data.\r\n * @param parentId - Number.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n if (this.props.navProps.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuRootEnabled.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n };\r\n\r\n /**\r\n * Handle back navigation for menu items for mobile view.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuRootEnabled.isBackTrack = true;\r\n this.setState((previousState) => ({ activeMenu: previousState.parentMenu }));\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on click on body.\r\n * @param event - MouseEvent.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current &&\r\n !this.menuNode.current.contains(event.target as Node)) {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Add shop all link for Mobile submenu.\r\n */\r\n private readonly _addShopAllLink = (): void => {\r\n const { menuItemData } = this.props.navProps;\r\n this.menuItemData = menuItemData;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n this.menuItemData[0].subMenu?.map(item => {\r\n const shopAllObject = {};\r\n Object.assign(shopAllObject, { imageSource: item.imageSource });\r\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\r\n Object.assign(shopAllObject, { linkURL: item.linkURL });\r\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\r\n item.subMenu.unshift(shopAllObject);\r\n }\r\n return item;\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Mobile view label text.\r\n * @param optionLinkText -Sub menu item link text.\r\n * @returns Boolean.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n const firstIndex: number = 0;\r\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n /**\r\n * Function to handle nav menu close.\r\n */\r\n private readonly _closeNavMenu = (): void => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on esc key.\r\n * @param event - Event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Custom update viewport.\r\n */\r\n private readonly _customUpdateViewport = (): void => {\r\n this.setState({ isOnlyMobile: this.isOnlyMobile });\r\n };\r\n\r\n}\r\n\r\nexport default NavigationMenuRootEnabled;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\r\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\r\n\r\n/**\r\n * Render the Navigation menu.\r\n * @param props - The navigation menu view props.\r\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\r\n */\r\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\r\n\r\n if (props.config.enabletopMenu) {\r\n return ;\r\n }\r\n\r\n return ;\r\n\r\n};\r\n\r\nexport default navigationMenuView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IModuleProps, INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nimport {\r\n IHelp,\r\n IOrderSummary,\r\n IPaymentMethods\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\n// import { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationData } from '@msdyn365-commerce-modules/order-management';\r\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\r\nimport { IOrderConfirmationProps } from '../definition-extensions/order-confirmation.ext.props.autogenerated';\r\nimport _ from 'lodash';\r\n\r\nexport interface IOrderConfirmationViewProps extends IOrderConfirmationProps {\r\n moduleProps: IModuleProps;\r\n salesOrder?: SalesOrder;\r\n footerProps?: INodeProps;\r\n alert?: React.ReactNode;\r\n loading?: React.ReactNode;\r\n heading: React.ReactNode;\r\n backToShoppingLink?: React.ReactNode;\r\n orderInfomation?: IOrderInformation;\r\n salesLines?: ISalesLine[];\r\n groups?: IGroups;\r\n orderSummary?: IOrderSummary;\r\n payment?: IPaymentMethods;\r\n help?: IHelp;\r\n IChargeLinesBreakdownData?: IChargeLinesBreakdownData;\r\n}\r\n\r\nexport interface IOrderInformation {\r\n orderInformationProps: INodeProps;\r\n channelName: React.ReactNode;\r\n channelAddress: React.ReactNode;\r\n placedBy?: React.ReactNode;\r\n salesId: React.ReactNode;\r\n receiptId: React.ReactNode;\r\n receiptEmail: React.ReactNode;\r\n createdDate: React.ReactNode;\r\n count: React.ReactNode;\r\n amount: React.ReactNode;\r\n channelReferenceId: React.ReactNode;\r\n note?: React.ReactNode;\r\n props: IOrderConfirmationViewProps;\r\n}\r\n\r\ninterface IPaymentMethodsExt extends IPaymentMethods {\r\n totalOnAccount?: string;\r\n}\r\n\r\nexport interface IChargeLinesBreakdownData {\r\n chargeLineLabel?: string;\r\n chargeCode?: string;\r\n}\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n // receiptEmail,\r\n createdDate,\r\n channelReferenceId,\r\n props\r\n}) => {\r\n return (\r\n \r\n {createdDate}\r\n {channelReferenceId}\r\n {renderEmailMessage(props)}\r\n \r\n );\r\n};\r\n\r\nexport const renderEmailMessage = (props: IOrderConfirmationViewProps) => {\r\n const {\r\n resources: { receiptMessageWithEmail, receiptMessageNoEmail },\r\n data: { orderHydration }\r\n } = props;\r\n const email = orderHydration.result?.salesOrder.ReceiptEmail;\r\n let emailMessage = receiptMessageNoEmail;\r\n if (email) {\r\n emailMessage = receiptMessageWithEmail.replace('{email}', email);\r\n }\r\n\r\n // const email = _.get(receiptEmail as object, 'props.children[1].props.children');\r\n // const messageParts = receiptMessage.split('{email}');\r\n return (\r\n \r\n \r\n {/* {messageParts[0]} */}\r\n {/* {email} */}\r\n {/* {messageParts[1]} */}\r\n \r\n );\r\n};\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n {salesLine}\r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n // count,\r\n // processing,\r\n address,\r\n // trackingInfo,\r\n pickupDateTimeslot\r\n}) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {delivery && delivery.shippingItemsToYou}\r\n {salesLines && (\r\n \r\n {salesLines.map((salesLine: ISalesLine) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group: IGroup, index: number) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const otherChargesLines = (props: IOrderConfirmationViewProps) => {\r\n const [chargeLines, setChargeLines] = React.useState([]);\r\n const [loading, setLoading] = React.useState(true);\r\n\r\n React.useEffect(() => {\r\n const fetchOtherChargesLines = async () => {\r\n const chargeCodes: IChargeLinesBreakdownData[] = props.context.app.config.chargeLinesBreakdown;\r\n\r\n let lines = props.data.orderHydration.result?.salesOrder.ChargeLines;\r\n let linesNode: React.ReactNode[] = [];\r\n let otherChargeTotal = props.data.orderHydration.result?.salesOrder.ChargeAmount || 0;\r\n let currencyFormatter = props.context.cultureFormatter.formatCurrency;\r\n\r\n chargeCodes?.map(c => {\r\n const node = lines\r\n ?.filter(line => line.ChargeCode === c.chargeCode)\r\n .map(r => {\r\n otherChargeTotal -= r.CalculatedAmount || 0;\r\n return renderLineChargeNode(c.chargeLineLabel || '', currencyFormatter(r.CalculatedAmount?.toString() ?? ''));\r\n });\r\n linesNode.push(node);\r\n });\r\n\r\n if (otherChargeTotal >= 0.01) {\r\n const otherChargesNode = renderLineChargeNode(\r\n props.resources.otherChargeLabel,\r\n currencyFormatter(otherChargeTotal.toString() ?? '')\r\n );\r\n linesNode.push(otherChargesNode);\r\n }\r\n\r\n setChargeLines(linesNode);\r\n setLoading(false);\r\n };\r\n\r\n fetchOtherChargesLines();\r\n }, [props.context.actionContext, props.config.chargeLinesBreakdown, props.context.cultureFormatter]);\r\n\r\n if (loading) {\r\n return
Loading...
;\r\n }\r\n\r\n return <>{chargeLines};\r\n};\r\n\r\nexport const renderLineChargeNode = (chargeName: string, chargeAmount: string): React.ReactNode => {\r\n return (\r\n

\r\n {chargeName}\r\n \r\n {chargeAmount}\r\n \r\n

\r\n );\r\n};\r\n\r\nexport const renderTaxLine = (props: IOrderConfirmationViewProps): React.ReactNode => {\r\n const taxAmount = props.data.orderHydration.result?.salesOrder.TaxAmount;\r\n let currencyFormatter = props.context.cultureFormatter.formatCurrency;\r\n return renderLineChargeNode(props.resources.taxLabel, currencyFormatter(taxAmount!.toString() ?? ''));\r\n};\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = props => {\r\n const orderSummary = props.orderSummary;\r\n\r\n return (\r\n \r\n {orderSummary?.heading}\r\n {orderSummary?.subtotal}\r\n {props.config.displayShippingline && orderSummary?.shipping}\r\n {otherChargesLines(props)}\r\n {props.config.displayTaxNote ? (\r\n

{props.resources.taxAmountNote}

\r\n ) : (\r\n renderTaxLine(props)\r\n )}\r\n\r\n {orderSummary?.totalAmount}\r\n {orderSummary?.earnedPoints}\r\n
\r\n );\r\n};\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods, totalOnAccount }) => (\r\n \r\n {title}\r\n {totalOnAccount ?

On Account: {totalOnAccount}

: null}\r\n {methods}\r\n
\r\n);\r\n\r\nexport const OrderConfirmationHelp: 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 OrderConfirmationView: React.FC = props => {\r\n const {\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n context: {\r\n cultureFormatter: { formatCurrency }\r\n }\r\n } = props;\r\n\r\n const tenderLines = props.data.orderHydration.result?.salesOrder?.TenderLines;\r\n let totalOnAccount = 0;\r\n if (tenderLines) {\r\n totalOnAccount = tenderLines.map(tl => tl.AmountInCompanyCurrency || 0).reduce((num, total) => num + total, 0);\r\n }\r\n console.log(totalOnAccount);\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {backToShoppingLink}\r\n {groups && }\r\n {payment && (\r\n 0 ? formatCurrency(totalOnAccount) : undefined} />\r\n )}\r\n {orderSummary && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-section-container/./checkout-section-container';\r\n\r\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\r\n <>\r\n {loading}\r\n \r\n {item}\r\n \r\n \r\n);\r\n\r\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => {\r\n return(\r\n \r\n {items.map(item => {\r\n // remove the hidden classname that is given in the checkout-section-container\r\n item.itemProps = { ...item.itemProps,\r\n className: 'ms-checkout-section-container__item'\r\n }\r\n return \r\n })}\r\n \r\n )\r\n};\r\n\r\nexport default CheckoutSectionContainerView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n// import MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n // if (MsDyn365.isBrowser) {\r\n // const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n // console.log(linksElements);\r\n // linksElements.forEach(l => l.setAttribute('href', '#'));\r\n // }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\n/**\r\n * INavigationMenuViewRootProps.\r\n */\r\nexport interface INavigationMenuViewRootProps {\r\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\r\n}\r\n\r\n/**\r\n * Represent navigation menu state interface.\r\n */\r\nexport interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: Msdyn365.IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n isDrawerOpen: boolean;\r\n desktopCategoryId: number;\r\n isOnlyMobile: boolean;\r\n isNavOpen: boolean;\r\n}\r\n\r\n/**\r\n * NavMenuConstants enum.\r\n */\r\nexport enum NavMenuConstants {\r\n zero = 0,\r\n one = 1,\r\n two = 2,\r\n three = 3,\r\n four = 4,\r\n escapeKey = 27,\r\n rootMenu = 1\r\n}\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Get category image.\r\n * @param props - Navigation menu props.\r\n * @param categoryImage - Category Image.\r\n * @param alttext - AltText String.\r\n * @returns Returns Node.\r\n */\r\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\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\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n Collapse, Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n isMobile,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\r\n\r\n/**\r\n *\r\n * NavigationMenuRootDisabled component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuRootDisabled extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n private currentLevel: number = NavMenuConstants.zero;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n private customResizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n public constructor(props: INavigationMenuViewRootProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n const { menuItemData } = this.props.navProps;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({ src: imageSource, altText: item.text, additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n return null;\r\n });\r\n }\r\n }\r\n this.state = {\r\n activeMenu: 1,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n isDrawerOpen: false,\r\n desktopCategoryId: -1,\r\n isOnlyMobile: this.isOnlyMobile,\r\n categoryImage: this.promotionalImage,\r\n isNavOpen: false\r\n };\r\n this.telemetryContent = getTelemetryObject(this.props.navProps.context.request.telemetryPageName!,\r\n this.props.navProps.friendlyName,\r\n this.props.navProps.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n }\r\n\r\n @computed public get isOnlyMobile(): boolean {\r\n return (isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n this._customUpdateViewport();\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.currentLevel = 1;\r\n const navbarKey = 'header-nav-mobile';\r\n return (\r\n \r\n {\r\n this.state.isOnlyMobile ? this._renderMobileMenu() : (<>\r\n \r\n {this._renderCollapseMenu()}\r\n )\r\n }\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to handle nav bar toggle.\r\n */\r\n private readonly _toggleNavBar = (): void => {\r\n this.setState(previousState => ({\r\n activeMenu: 1,\r\n isNavOpen: !previousState.isNavOpen\r\n }));\r\n };\r\n\r\n private _renderCollapseMenu(): JSX.Element | null {\r\n return (\r\n \r\n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {this.state.isOnlyMobile && this.state.activeMenu !== undefined &&\r\n \r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props.navProps;\r\n\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\r\n return (\r\n this._renderLinkMenuItem(item)\r\n );\r\n } else if (!item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem } = this.props.navProps;\r\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (ArrayExtensions.hasElements(menuItemData)) {\r\n menuItemData[0].id = 1;\r\n }\r\n\r\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\r\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\r\n\r\n if (menuItem) {\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}\r\n {' '}\r\n \r\n );\r\n }\r\n } else {\r\n\r\n for (const [index, item] of menuItemData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n
\r\n );\r\n }\r\n\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\r\n if (!menu) {\r\n return null;\r\n }\r\n\r\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\r\n const item: IMenuItemData = menu[Number(index)];\r\n\r\n if (item.id === this.state.activeMenu) {\r\n if (!NavigationMenuRootDisabled.isBackTrack) {\r\n this.setState({ parentMenu: parentMenuId });\r\n } else {\r\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\r\n }\r\n return item;\r\n }\r\n const found = this._getFromSubMenu(item.id, item.subMenu);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\r\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false));\r\n }\r\n\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n\r\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\r\n return (this._renderLinkMenuItem(menuItemData, menuItemData.id));\r\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\r\n\r\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\r\n if (activeMenu === NavMenuConstants.rootMenu) {\r\n subMenus = subMenuArray!.filter(subMenuItem => (subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail));\r\n }\r\n\r\n const { ListItem } = this.props.navProps;\r\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\r\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\r\n const hasOptions = (option.subMenu && ArrayExtensions.hasElements(option.subMenu));\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && this.state.isOnlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\r\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\r\n menuItem = this.getMenuItem(option, index);\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n const isHavingSubmenu = hasOptions && isEnableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one);\r\n\r\n if (hasOptions && !this.state.isOnlyMobile) {\r\n\r\n if (this.currentLevel >= NavMenuConstants.two) {\r\n levelClassName = 'level-3';\r\n subMenu = this._renderSubMenuDrawer(levelClassName, option);\r\n } else if (this.currentLevel <= this.supportedLevel) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\r\n }\r\n }\r\n\r\n if (isHavingSubmenu && this.state.isOnlyMobile) {\r\n this.currentLevel++;\r\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n return (\r\n \r\n { menuItem}\r\n { subMenu}\r\n \r\n );\r\n });\r\n return (this._renderMenu(levelClassName, menuOptions, isSubMenu));\r\n }\r\n\r\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\r\n let menuItem: JSX.Element | null;\r\n if (this.currentLevel === NavMenuConstants.one) {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option));\r\n } else {\r\n menuItem = (option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option));\r\n }\r\n return menuItem;\r\n }\r\n\r\n private _renderSubMenuDrawer(levelClassName: string, menuItem: IMenuItemData): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle desktop category click.\r\n * @param desktopCategoryId - Desktop category id used to identify the index of the category.\r\n * @returns Returns void.\r\n */\r\n private readonly _bindDesktopCategoryClick = (desktopCategoryId: number) => (): void => {\r\n if (this.state.desktopCategoryId !== desktopCategoryId) {\r\n this.setState({ desktopCategoryId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ desktopCategoryId: -1, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n { linkText}\r\n \r\n );\r\n }\r\n return null;\r\n\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props.navProps;\r\n return (\r\n \r\n { option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\r\n const isCategoryImageDisplay =\r\n !this.state.isOnlyMobile && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !isSubmenu;\r\n const isPromotionalContentDisplay =\r\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\r\n const divContainerClass = this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const menuLevelSupportClassName = isCategoryImageDisplay && this.props.navProps.config.menuLevelSupport &&\r\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two && 'navmenu-multi-level';\r\n\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n
\r\n {\r\n isCategoryImageDisplay && ArrayExtensions.hasElements(categoryImages) && categoryImages.map(item => (\r\n \r\n { getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n { isPromotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n ))\r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({ src: imageSource, altText: item.text, additionalProperties: { linkUrl: item.linkUrl.destinationUrl } });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n /**\r\n * Handle dropdown toggle.\r\n * @param data - Menu Item data.\r\n * @param parentId - Number.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n if (this.props.navProps.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuRootDisabled.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n };\r\n\r\n /**\r\n * Handle back navigation for menu items for mobile view.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuRootDisabled.isBackTrack = true;\r\n this.setState((previousState) => ({ activeMenu: previousState.parentMenu }));\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on click on body.\r\n * @param event - MouseEvent.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current &&\r\n !this.menuNode.current.contains(event.target as Node)) {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Mobile view label text.\r\n * @param optionLinkText -Sub menu item link text.\r\n * @returns Boolean.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n const firstIndex: number = 0;\r\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n /**\r\n * Function to handle nav menu close.\r\n */\r\n private readonly _closeNavMenu = (): void => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on esc key.\r\n * @param event - Event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Custom update viewport.\r\n */\r\n private readonly _customUpdateViewport = (): void => {\r\n this.setState({ isOnlyMobile: this.isOnlyMobile });\r\n };\r\n}\r\n\r\nexport default NavigationMenuRootDisabled;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n Collapse,\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n isMobile,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\r\n\r\n/**\r\n *\r\n * NavigationMenuRootEnabled component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuRootEnabled extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n private currentLevel: number = NavMenuConstants.zero;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\r\n\r\n private menuItemData: IMenuItemData[] = [];\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n private customResizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n public constructor(props: INavigationMenuViewRootProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n const { menuItemData } = this.props.navProps;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n return null;\r\n });\r\n }\r\n }\r\n this.state = {\r\n activeMenu: NavMenuConstants.rootMenu,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n isDrawerOpen: false,\r\n desktopCategoryId: -1,\r\n isOnlyMobile: this.isOnlyMobile,\r\n categoryImage: this.promotionalImage,\r\n isNavOpen: false\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.navProps.context.request.telemetryPageName!,\r\n this.props.navProps.friendlyName,\r\n this.props.navProps.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n }\r\n\r\n @computed public get isOnlyMobile(): boolean {\r\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n this._customUpdateViewport();\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n this._addShopAllLink();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.currentLevel = NavMenuConstants.one;\r\n const navbarKey = 'header-nav-mobile';\r\n return (\r\n \r\n {this.state.isOnlyMobile ? (\r\n this._renderMobileMenu()\r\n ) : (\r\n <>\r\n \r\n {this.props.navProps.config.rootMenuNavigation}\r\n \r\n {this._renderCollapseMenu()}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to handle nav bar toggle.\r\n */\r\n private readonly _toggleNavBar = (): void => {\r\n this.setState(previousState => ({\r\n activeMenu: NavMenuConstants.rootMenu,\r\n isNavOpen: !previousState.isNavOpen\r\n }));\r\n };\r\n\r\n private _renderCollapseMenu(): JSX.Element | null {\r\n return (\r\n \r\n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\r\n\r\n this.currentLevel = NavMenuConstants.one;\r\n return (\r\n \r\n \r\n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { Navigation } = this.props.navProps;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (!item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem } = this.props.navProps;\r\n let menuItemData: IMenuItemData[] = [];\r\n if (this.state.isOnlyMobile) {\r\n menuItemData = this.menuItemData;\r\n } else {\r\n menuItemData = this.props.navProps.menuItemData;\r\n }\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n let cmsMenuData: IMenuItemData[] | undefined = [];\r\n let retailMenuItemData: IMenuItemData[] | undefined = [];\r\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\r\n\r\n for (const item of retailMenuData) {\r\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\r\n item.subMenu = retailMenuItemData;\r\n }\r\n\r\n for (const item of menuItemData) {\r\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\r\n }\r\n\r\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\r\n let menuItem: IMenuItemData | null = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n if (!NavigationMenuRootEnabled.isBackTrack) {\r\n this.setState({\r\n parentMenu: undefined\r\n });\r\n } else {\r\n this.setState({\r\n parentMenu: undefined,\r\n mobileViewLabelText: menuItemDatum.linkText\r\n });\r\n }\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum);\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n if (menuItem) {\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n }\r\n } else {\r\n for (const [index, item] of retailMenuData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n
\r\n );\r\n }\r\n\r\n for (const [index, item] of cmsMenuData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n }\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item?.subMenu;\r\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\r\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\r\n const subMenu: IMenuItemData = subMenus[Number(index)];\r\n let parentMenuId = item?.id;\r\n\r\n if (subMenu.id === this.state.activeMenu) {\r\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\r\n parentMenuId = undefined;\r\n }\r\n\r\n if (!NavigationMenuRootEnabled.isBackTrack) {\r\n this.setState({ parentMenu: parentMenuId });\r\n } else {\r\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\r\n }\r\n return subMenu;\r\n }\r\n const found = this._getFromSubMenu(subMenu);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\r\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\r\n }\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\r\n } else if (!menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\r\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\r\n if (activeMenu === NavMenuConstants.rootMenu) {\r\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\r\n }\r\n\r\n const { ListItem } = this.props.navProps;\r\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\r\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\r\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && this.state.isOnlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\r\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\r\n menuItem = this.getMenuItem(option, index);\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n const isHavingSubmenu =\r\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\r\n\r\n if (hasOptions && !this.state.isOnlyMobile) {\r\n if (this.currentLevel >= NavMenuConstants.two) {\r\n levelClassName = 'level-3';\r\n subMenu = this._renderSubMenuDrawer(levelClassName, option);\r\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\r\n }\r\n }\r\n if (isHavingSubmenu && this.state.isOnlyMobile) {\r\n this.currentLevel++;\r\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\r\n }\r\n\r\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\r\n let menuItem: JSX.Element | null;\r\n if (this.currentLevel === NavMenuConstants.one) {\r\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\r\n }\r\n return menuItem;\r\n }\r\n\r\n private _renderSubMenuDrawer(levelClassName: string, menuItem: IMenuItemData): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle desktop category click.\r\n * @param desktopCategoryId - Desktop category id used to identify the index of the category.\r\n * @returns Returns void.\r\n */\r\n private readonly _bindDesktopCategoryClick = (desktopCategoryId: number) => (): void => {\r\n if (this.state.desktopCategoryId !== desktopCategoryId) {\r\n this.setState({ desktopCategoryId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ desktopCategoryId: -1, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n return this.state.isOnlyMobile ? (\r\n \r\n {option.linkText}\r\n \r\n ) : (\r\n <>\r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props.navProps;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\r\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\r\n const isCategoryImageDisplay =\r\n !this.state.isOnlyMobile &&\r\n showCategoryImage &&\r\n this.state.categoryImage !== null &&\r\n this.state.categoryImage !== undefined &&\r\n !isSubmenu;\r\n const isPromotionalContentDisplay =\r\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\r\n const divContainerClass =\r\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const menuLevelSupportClassName =\r\n isCategoryImageDisplay &&\r\n this.props.navProps.config.menuLevelSupport &&\r\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\r\n 'navmenu-multi-level';\r\n\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n
\r\n {isCategoryImageDisplay &&\r\n ArrayExtensions.hasElements(categoryImages) &&\r\n categoryImages.map(item => (\r\n \r\n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n {isPromotionalContentDisplay &&\r\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n /**\r\n * Handle dropdown toggle.\r\n * @param data - Menu Item data.\r\n * @param parentId - Number.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n if (this.props.navProps.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuRootEnabled.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Handle back navigation for menu items for mobile view.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuRootEnabled.isBackTrack = true;\r\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on click on body.\r\n * @param event - MouseEvent.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Add shop all link for Mobile submenu.\r\n */\r\n private readonly _addShopAllLink = (): void => {\r\n const { menuItemData } = this.props.navProps;\r\n this.menuItemData = menuItemData;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n this.menuItemData[0].subMenu?.map(item => {\r\n const shopAllObject = {};\r\n Object.assign(shopAllObject, { imageSource: item.imageSource });\r\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\r\n Object.assign(shopAllObject, { linkURL: item.linkURL });\r\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\r\n item.subMenu.unshift(shopAllObject);\r\n }\r\n return item;\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Mobile view label text.\r\n * @param optionLinkText -Sub menu item link text.\r\n * @returns Boolean.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n const firstIndex: number = 0;\r\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n /**\r\n * Function to handle nav menu close.\r\n */\r\n private readonly _closeNavMenu = (): void => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on esc key.\r\n * @param event - Event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Custom update viewport.\r\n */\r\n private readonly _customUpdateViewport = (): void => {\r\n this.setState({ isOnlyMobile: this.isOnlyMobile });\r\n };\r\n}\r\n\r\nexport default NavigationMenuRootEnabled;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\r\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\r\n\r\n/**\r\n * Render the Navigation menu.\r\n * @param props - The navigation menu view props.\r\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\r\n */\r\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\r\n\r\n if (props.config.enabletopMenu) {\r\n return ;\r\n }\r\n\r\n return ;\r\n\r\n};\r\n\r\nexport default navigationMenuView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHelp, IOrderSummary, IPaymentMethods } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport { IGroup, IGroupDelivery, IGroups } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/./order-confirmation';\r\nimport { SalesOrder } from \"@msdyn365-commerce/retail-proxy\";\r\n\r\ninterface IPaymentMethodsExt extends IPaymentMethods {\r\n totalOnAccount?: string;\r\n}\r\n\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps\r\n // receiptEmail,\r\n // createdDate\r\n // channelReferenceId\r\n}) => (\r\n \r\n {/* {createdDate} */}\r\n {/* {channelReferenceId} */}\r\n {/* {receiptEmail} */}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo, pickupDateTimeslot }) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {delivery && delivery.shippingItemsToYou}\r\n {salesLines && (\r\n \r\n {salesLines.map((salesLine: ISalesLine) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group: IGroup, index: number) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderConfirmationOrderSummary: 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 OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods, totalOnAccount }) => \r\n {title}\r\n {totalOnAccount ?

On Account: {totalOnAccount}

: null}\r\n {methods}\r\n
;\r\n\r\nexport const OrderConfirmationHelp: 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 _renderOrderTable = (salesOrder: SalesOrder) => {\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {salesOrder.SalesLines?.map(so => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
Item IdDescriptionPriceQuantityTotal
{so.ItemId}{so.Description}{so.Price}{so.Quantity}{so.TotalAmount}
\r\n )\r\n}\r\n\r\n\r\nconst OrderConfirmationView: React.FC = (props) => {\r\n const {\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n data: { orderHydration },\r\n context: { cultureFormatter: { formatCurrency }}\r\n } = props;\r\n const tenderLines = props.data.orderHydration.result?.salesOrder.TenderLines;\r\n let totalOnAccount = 0;\r\n if (tenderLines) {\r\n totalOnAccount = tenderLines.map(tl => tl.AmountInCompanyCurrency || 0).reduce((num, total) => num + total, 0);\r\n }\r\n\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {orderHydration?.result?.salesOrder && _renderOrderTable(orderHydration?.result?.salesOrder)}\r\n {backToShoppingLink}\r\n {groups && }\r\n {payment && 0 ? formatCurrency(totalOnAccount) : undefined}\r\n />}\r\n {orderSummary && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as 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 { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
    \n
    {this.props.promoCodeHeadingText}
    \n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

    \n {this.state.error}\n

    \n {this._renderAppliedPromoCode(this.props)}\n
    \n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
    \n
    \n \n \n
    \n
    \n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
    \n
    \n {'Code '}\n {coupon.Code}\n {'Applied '}\n
    \n \n
    \n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n
    \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n"],"names":["InvoiceListView","props","header","filter","content","invoiceRequestModal","pagination","MsDyn365","isBrowser","linksElements","document","querySelectorAll","console","log","forEach","l","setAttribute","React","Module","Object","assign","moduleProps","NavMenuConstants","getCategoryImage","categoryImage","alttext","categoryImageUrl","generateImageUrl","navProps","context","actionContext","requestContext","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","undefined","_props$navProps$confi","imageData","src","Msdyn365","className","gridSettings","request","imageSettings","config","categoryImageSettings","loadFailureBehavior","role","altText","NavigationMenuRootDisabled","constructor","super","supportedLevel","four","currentLevel","zero","escapeKey","promotionalImage","_toggleNavBar","this","setState","previousState","activeMenu","isNavOpen","_bindDesktopCategoryClick","desktopCategoryId","state","isDrawerOpen","_updateCategoryImage","categoryImageSource","option","linkText","ArrayExtensions","hasElements","promotionalContent","item","imageSource","image","push","text","additionalProperties","linkUrl","destinationUrl","_handleDropdownToggle","data","parentId","isOnlyMobile","isBackTrack","id","mobileViewLabelText","parentMenu","showCategoryImage","_handleGoBack","_handleClickOutside","event","menuNode","current","contains","target","_shouldAddFocusMenuRef","index","optionLinkText","_closeNavMenu","_escFunction","keyCode","_customUpdateViewport","menuItemRef","menuItemData","subMenu","imagesource","map","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","attributes","getTelemetryAttributes","isMobile","variant","VariantType","Browser","componentDidMount","customResizeThrottledEventHandler","addThrottledEvent","window","addEventListener","body","componentDidUpdate","_this$menuItemRef$cur","children","isMobileView","focus","componentWillUnmount","removeEventListener","render","Node","ref","_renderMobileMenu","Button","onClick","title","resources","hamburgerAriaLabel","_renderCollapseMenu","Collapse","isOpen","_renderDesktopMenu","MenuList","MobileBackButton","MobileDescriptionContainer","MobileDescriptionLabel","Navigation","classnames","tabIndex","_renderDisplay","_renderDrawerLink","linkURL","StringExtensions","isNullOrWhitespace","_renderLinkMenuItem","_renderSpanMenuItem","ListItem","menuItemList","menuItem","_getFromSubMenu","key","_createMenuItemList","entries","parentMenuId","menu","length","one","Number","found","_renderSubMenu","_renderButtonMenuItem","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","subMenus","rootMenu","subMenuItem","MenuTypeIndexId","Retail","isEnableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","three","error","levelClassName","menuOptions","hasOptions","getMenuItem","isHavingSubmenu","Math","round","two","_renderSubMenuDrawer","toString","onMouseOver","_renderMenu","_renderLinkMenuItemLevelOne","_menuItem$linkText","Drawer","collapseProps","timeout","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","menuSubItem","Link","contentAction","etext","href","shouldOpenNewTab","onTelemetryClick","isHoverEffect","arguments","_renderPromotionalLink","Span","level","isSubmenu","_this$state$categoryI","DivContainer","ImageDivContainer","showPromotionalContent","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","_item$additionalPrope","__decorate","computed","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","allCategoryMenuText","menuSource","MenuSource","unshift","rootMenuNavigation","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","menuItemDatum","enabletopMenu","OrderConfirmationOrderInfomation","_ref","orderInformationProps","createdDate","channelReferenceId","renderEmailMessage","_orderHydration$resul","receiptMessageWithEmail","receiptMessageNoEmail","orderHydration","email","result","salesOrder","ReceiptEmail","emailMessage","replace","OrderConfirmationSalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","_ref3","deliveryProps","heading","address","pickupDateTimeslot","OrderConfirmationGroup","_ref4","groupProps","delivery","salesLinesProps","salesLines","shippingItemsToYou","LineId","OrderConfirmationGroups","_ref5","groupsProps","groups","group","otherChargesLines","chargeLines","setChargeLines","loading","setLoading","async","_props$data$orderHydr","_props$data$orderHydr2","chargeCodes","app","chargeLinesBreakdown","lines","ChargeLines","linesNode","otherChargeTotal","ChargeAmount","currencyFormatter","cultureFormatter","formatCurrency","c","node","line","ChargeCode","chargeCode","r","_r$CalculatedAmount$t","_r$CalculatedAmount","CalculatedAmount","renderLineChargeNode","chargeLineLabel","_otherChargeTotal$toS","otherChargesNode","otherChargeLabel","fetchOtherChargesLines","chargeName","chargeAmount","renderTaxLine","_props$data$orderHydr3","_taxAmount$toString","taxAmount","TaxAmount","taxLabel","OrderConfirmationOrderSummary","orderSummary","orderSummaryProps","subtotal","displayShippingline","shipping","displayTaxNote","taxAmountNote","totalAmount","earnedPoints","OrderConfirmationPayment","_ref6","paymentMethodsProps","methods","totalOnAccount","OrderConfirmationHelp","_ref7","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_props$data$orderHydr4","backToShoppingLink","alert","orderInfomation","payment","help","tenderLines","TenderLines","tl","AmountInCompanyCurrency","reduce","num","total","ItemComponent","itemProps","checkoutPlainContainerProps","items","_objectSpread","count","processing","trackingInfo","tax","_ref8","_orderHydration$resul2","_salesOrder$SalesLine","SalesLines","so","ItemId","Description","Price","Quantity","TotalAmount","AccountCustomerBalanceTile","_initState","reaction","hasError","ErrorComponent","value","apiGenericErrorMessage","get","isCustomerAccountPaymentEnabled","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","links","viewProps","Heading","headingTag","tag","isDetailsLinkDisplayed","LinksComponent","onTextChange","renderView","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","_mapEditableLinks","linkdata","editableLinks","link","editableLink","ariaLabel","openInNewTab","editProps","BusinessPartnerPromotionTermsParagraph","description","titleClassName","moduleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","checked","onToggleTermOfServiceModal","termsOfServiceModalOpened","onSubmit","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","callerContext","showSubmitButton","showTermsOfService","errorMessage","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","status","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","type","termsOfServiceLinkText","onChange","termsOfServiceAgreementText","termsOfServiceModal","Modal","horizontalPosition","verticalPosition","autoFocus","fade","toggle","ModalHeader","termsOfServiceModalHeading","ModalBody","submitButton","submitRequestLabel","disabled","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","label","user","ObjectExtensions","isNullOrUndefined","isNullOrEmpty","IsAdmin","NavigationMenuView","_positionInSetOffset","categoryImageSrc","imageSrc","promotionalItemImageSettings","categoryImageAltText","_resetFocus","setTimeout","_handleFocusOutside","relatedTarget","_closeSubmenu","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","_categoryImage$imageS","ImageData","Image","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","bind","posinset","_renderDrawerMenu","setSize","_renderDrawer","keyValue","keys","colProps","toggleButtonProps","_renderLinkText","currentPos","_menuItem$subMenu2","_menuItem$subMenu","i","IsSubMenu","enableMultiSupportMenu","idx","haveSubmenu","onFocus","hoverEffect","isParent","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","BackTopFooter","onEdit","backtoTopText","destination","BackToTop","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","static","locale","nameTranslations","nameTranslation","find","Language","toLowerCase","resizeThrottledEventHandler","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","backButtonAriaLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","mergedRootMenuData","topMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","imageSourceUrl","nestedChildren","Children","getCategoryUrl","_getViewport","innerWidth","observable","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","then","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","catch","failedToAddPromoCodeErrorText","_onSubmitHandler","preventDefault","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","placeholder","_removePromotion","_event$currentTarget$","code","currentTarget","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","Code","TelemetryConstant","ApplyPromoCode","promoCodeHeadingText","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","menuId","_this$menuNode$curren","_this$menuNode$curren2","_this$props$navProps$3"],"sourceRoot":""}