{"version":3,"file":"static/js/5a25b3fe046e8b05b6ef.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/rda-custom/views/navigation-menu.view.tsx?7618","webpack://Msdyn365.Commerce.Online/./lib/navigation-menu/module-registration.js?7039","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","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/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","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/does-not-exceed-safe-integer.js?9e9d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/internals/flatten-into-array.js?a994","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.array.flat.js?316c","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.array.unscopables.flat.js?5ec5"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\n\r\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n ICollapseProps,\r\n IDrawerState,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n//these import added by Roman\r\n//import 'jquery';\r\n//import 'popper.js';\r\n//import 'bootstrap/dist/js/bootstrap.min.js';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n activeSubmenu?: number | null; \r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n}\r\n\r\n//interface MenuItem {\r\n// id: number;\r\n// title: string;\r\n// link?: string;\r\n// submenu?: MenuItem[];\r\n//}\r\n//interface IState {\r\n// activeMenu: number | null;\r\n// activeSubMenu: number | null;\r\n//}\r\n/**\r\n *\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n \r\n private currentLevel: number = 0;\r\n\r\n private readonly _positionInSetOffset: number = 1;\r\n\r\n private readonly escapeKey: number = 27;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n \r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {\r\n activeMenu: undefined, // This one tracks the active menu item\r\n activeSubmenu: undefined, // This tracks the active submenu\r\n parentMenu: undefined,\r\n categoryImageAltText: '',\r\n drawerKeyValue: {}\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n //this._toggleDropdown = this._toggleDropdown.bind(this);\r\n //this._toggleSubmenu.bind(this);\r\n }\r\n\r\n private _toggleMenu(menuId: number): void {\r\n this.setState((prevState) => ({\r\n activeMenu: prevState.activeMenu === menuId ? undefined : menuId\r\n }));\r\n }\r\n\r\n private _toggleSubMenu(event: React.MouseEvent, index: number): void {\r\n //event.preventDefault(); // Prevent the default dropdown close behavior\r\n //event.stopPropagation();\r\n this.setState((prevState) => ({\r\n activeSubmenu: prevState.activeSubmenu === index ? null : index\r\n }));\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n document.body.addEventListener('focusout', this._handleFocusOutside);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n /**\r\n * Method to render mobile menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\r\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render desktop menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n\r\n return (\r\n /*Changed by Roman*/\r\n // \r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer menu.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return this._renderDrawer(menuItem, setSize, posinset);\r\n }\r\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const keyValue = this.state.drawerKeyValue;\r\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\r\n const keys = keyValue !== undefined ? keyValue : {};\r\n const { isMobileView } = this.props;\r\n\r\n let isDrawerOpen = false;\r\n if (keys[buttonText]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\r\n }\r\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link.\r\n * @param linkText -Text on Menu link.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to generate menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu} = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n //Added by Roman to flatten the menu\r\n const extractedSubMenu = menuItemData.map((obj) => obj.subMenu);\r\n\r\n // Flatten the extracted subMenu arrays into a single array\r\n const flattenedSubMenu = extractedSubMenu.flat();\r\n\r\n // Now you have the desired result without the top-level \"Equipment\"\r\n \r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n this.setState({ parentMenu: undefined });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n 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 //Created by Roman \r\n //Generates bootstrap inline navigation menu\r\n const desktopMenu = (\r\n\r\n \r\n\r\n );\r\n\r\n // Return the desktop menu inside an array to satisfy the JSX.Element[] return type\r\n return [desktopMenu];\r\n\r\n //menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n // console.log(`menu item -> ${JSON.stringify(item)}`);\r\n // { console.log(\" This is the LIST ITEM -> \" + JSON.stringify(ListItem)) }\r\n // menuItemList.push(\r\n // <> {this._createMenuItemList(item)} \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 /**\r\n * Method to get data for submenu.\r\n * @param item -Single Menuitem.\r\n * @returns IMenuItemData.\r\n */\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item?.id });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to create item list.\r\n * @param menuItemData -Single Menuitem.\r\n * @returns Jsx element.\r\n */\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\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 && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const subMenuLevel = 3;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.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 =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n }\r\n //Created By Roman\r\n private _renderMenuItem(item: IMenuItemData, index: number, level: number): JSX.Element {\r\n const isActive = this.state.activeMenu === item.id;\r\n const hasSubMenu = item.subMenu && item.subMenu.length > 0;\r\n\r\n return (\r\n
  • \r\n {/* Main menu item */}\r\n {\r\n if (hasSubMenu) {\r\n e.preventDefault(); // Prevent navigation if there are submenus\r\n this.setState({ activeMenu: isActive ? undefined : item.id });\r\n }\r\n }}\r\n aria-expanded={isActive ? 'true' : 'false'}\r\n >\r\n {item.linkText}\r\n \r\n\r\n {/* Submenu */}\r\n {hasSubMenu && (\r\n
    0 ? 'dropdown-submenu' : ''} ${isActive ? 'show' : ''}`}>\r\n \r\n {\r\n item.subMenu && \r\n item.subMenu.map((subItem: IMenuItemData, subIndex: number) =>\r\n this._renderMenuItem(subItem, subIndex, level + 1)\r\n )}\r\n
    \r\n )}\r\n
  • \r\n );\r\n }\r\n\r\n /**\r\n * Method to render button menu item.\r\n * @param option -Single Menuitem.\r\n * @param activeMenu -Active menu number.\r\n * @param index -Active menu index.\r\n * @returns Jsx element.\r\n */\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link menu item.\r\n * @param option -Single Menuitem.\r\n * @param index -Active menu index.\r\n * @param hoverEffect -Active menu effect.\r\n * @param isParent -Is parent menu.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _renderLinkMenuItem(\r\n option: IMenuItemData,\r\n index?: number,\r\n hoverEffect: boolean = true,\r\n isParent: boolean = false,\r\n setSize?: number,\r\n posinset?: number\r\n ): JSX.Element | null {\r\n const { Link, isMobileView } = this.props;\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 /**\r\n * Method to render promotional link.\r\n * @param linkText -Link text.\r\n * @param linkUrl -Link url.\r\n * @returns Jsx element.\r\n */\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\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 * Method to render span menu item.\r\n * @param option -Single Menu Item.\r\n * @param index -Index.\r\n * @param isParent -Is parent menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render menu.\r\n * @param level -Menu level.\r\n * @param menuOptions -Menu lists.\r\n * @param currentItem -Menu current.\r\n * @param submenu -Mneu has submenu or not.\r\n * @returns Jsx element.\r\n */\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n
    \r\n {categoryImageDisplay &&\r\n this.state.categoryImage &&\r\n this.state.categoryImage.map(item => (\r\n \r\n {this.state.categoryImage && this._getCategoryImage(item)}\r\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
    \r\n \r\n );\r\n }\r\n\r\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n const promotionalItemImageSettings = item.image.imageSettings;\r\n promotionalImage.push({\r\n src: imageSrc,\r\n altText: item.text,\r\n imageSettings: promotionalItemImageSettings,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n\r\n /**\r\n * Method to handle dropdwon change.\r\n * @param data -Menuitem data.\r\n * @param parentId -Menu parent.\r\n * @returns Jsx element.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n /**\r\n * Method to call when focus lost from menu.\r\n */\r\n private readonly _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\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 this.setState({\r\n activeMenu: undefined,\r\n categoryImage: null\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleFocusOutside = (event: FocusEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle close submenu event.\r\n */\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined });\r\n }\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param event -HTML event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n if (!this.props.isMobileView) {\r\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\r\n for (const item of navDrawerList) {\r\n const navDrawerButton = item.firstChild as HTMLButtonElement;\r\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\r\n navDrawerButton.focus();\r\n }\r\n }\r\n }\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n if (!categoryImage || !categoryImage.src) {\r\n return null;\r\n }\r\n\r\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param drawerState -HTML event.\r\n */\r\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\r\n const { drawerKeyValue } = this.state;\r\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\r\n const newPair = { [drawerText]: drawerState.isOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['navigation-menu'] = {\n c: () => require('@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'navigation-menu',\n p: 'navigation-menu',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|rda-custom|views|navigation-menu'] = {\n c: () => require('partner/themes/rda-custom/views/navigation-menu.view.tsx'),\n cn: '__local__-__local__-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|navigation-menu'] = {\n c: () => require('@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|navigation-menu|modules|navigation-menu|navigation-menu'] = {\n c: () => require('@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-navigation-menu-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|navigation-menu'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-navigation-menu'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\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. 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 * 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","module.exports = React;","module.exports = ReactDOM;","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\n// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n"],"names":["NavigationMenuView","React","constructor","props","super","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","linkText","promotionalImage","src","altText","ArrayExtensions","hasElements","promotionalContent","map","item","image","imageSrc","promotionalItemImageSettings","imageSettings","push","text","additionalProperties","linkUrl","destinationUrl","this","setState","categoryImage","length","categoryImageAltText","_handleDropdownToggle","data","parentId","isMobileView","activeMenu","id","parentMenu","state","undefined","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","context","actionContext","requestContext","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_ref","_categoryImage$imageS","ImageData","Image","Object","assign","className","gridSettings","request","config","categoryImageSettings","loadFailureBehavior","role","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","isOpen","_objectSpread","activeSubmenu","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","_toggleMenu","menuId","prevState","_toggleSubMenu","index","componentDidMount","MsDyn365","isBrowser","document","body","addEventListener","componentWillUnmount","removeEventListener","render","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","Module","classnames","menuItem","posinset","_renderDrawerMenu","MenuList","Node","ref","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","keyValue","keys","isDrawerOpen","colProps","Drawer","toggleButtonProps","ariaLabel","key","openGlyph","onToggle","collapseProps","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","flattenedSubMenu","obj","flat","hasSubMenu","isActiveMenu","isRentalEquipment","href","onClick","e","subItem","subIndex","_item$subMenu","hasNestedSubMenu","isActiveSubMenu","nestedSubItem","nestedSubIndex","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","error","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","_renderMenuItem","level","isActive","preventDefault","Button","onFocus","hoverEffect","arguments","isParent","Link","imagesource","contentAction","etext","attributes","getTelemetryAttributes","shouldOpenNewTab","onMouseOver","onTelemetryClick","_renderPromotionalLink","Span","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","binding","modules","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","window","__bindings__","viewDictionary","cn","forEach","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","locale","nameTranslations","nameTranslation","find","Language","toLowerCase","Text","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","viewProps","xl","moduleProps","tag","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","resources","backButtonAriaLabel","MobileDescriptionLabel","renderView","mergedData","categories","result","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","openInNewTab","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","_getViewport","innerWidth","__decorate","observable","computed","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","Msdyn365","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_this$menuNode$curren2","_customUpdateViewport","variant","VariantType","Browser","customResizeThrottledEventHandler","title","hamburgerAriaLabel","_renderCollapseMenu","Collapse","StringExtensions","isNullOrWhitespace","entries","parentMenuId","menu","one","Number","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","timeout","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","module","exports","ReactDOM","$TypeError","TypeError","it","isArray","lengthOfArrayLike","doesNotExceedSafeInteger","flattenIntoArray","original","source","sourceLen","start","depth","mapper","thisArg","element","elementLen","targetIndex","sourceIndex","mapFn","$","toObject","toIntegerOrInfinity","arraySpeciesCreate","proto","depthArg","O","A","addToUnscopables"],"sourceRoot":""}