{"version":3,"file":"static/js/35.9cd9363366ae13f48d51.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/dyn-script-injector/dyn-script-injector.tsx?191d","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-script-injector/dyn-script-injector.view.tsx?6919","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/navigation-menu.view.tsx?a9f7"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDynScriptInjectorData } from './dyn-script-injector.data';\r\nimport { IDynScriptInjectorProps } from './dyn-script-injector.props.autogenerated';\r\n\r\nexport interface IDynScriptInjectorViewProps extends IDynScriptInjectorProps {}\r\n\r\n/**\r\n *\r\n * DynScriptInjector component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynScriptInjector extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default DynScriptInjector;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n//import { HtmlHeadInclude } from '@msdyn365-commerce/core-internal';\r\nimport * as React from 'react';\r\nimport { IDynScriptInjectorViewProps } from './dyn-script-injector';\r\n\r\nexport const useScript = (url: string, position: string, async: boolean) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n const script: HTMLScriptElement = document.createElement('script');\r\n\r\n script.src = url;\r\n script.async = typeof async === 'undefined' ? false : async;\r\n\r\n placement?.appendChild(script);\r\n\r\n return () => {\r\n placement?.removeChild(script);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IDynScriptInjectorViewProps) => {\r\n return (\r\n <>\r\n {props.config.scriptSource1 && useScript(props.config.scriptSource1, 'body', true)}\r\n {props.config.scriptSource2 && useScript(props.config.scriptSource2, 'body', true)}\r\n {props.config.scriptSource3 && useScript(props.config.scriptSource3, 'body', true)}\r\n {props.config.scriptSource4 && useScript(props.config.scriptSource4, 'body', true)}\r\n {props.config.scriptSource5 && useScript(props.config.scriptSource5, 'body', true)}\r\n {props.config.scriptSource6 && useScript(props.config.scriptSource6, 'body', true)}\r\n {props.config.scriptSource7 && useScript(props.config.scriptSource7, 'body', true)}\r\n {props.config.scriptSource8 && useScript(props.config.scriptSource8, 'body', true)}\r\n {props.config.scriptSource9 && useScript(props.config.scriptSource9, 'body', true)}\r\n {props.config.scriptSource10 && useScript(props.config.scriptSource10, 'body', true)}\r\n {props.config.scriptSource11 && useScript(props.config.scriptSource11, 'body', true)}\r\n {props.config.scriptSource12 && useScript(props.config.scriptSource12, 'body', true)}\r\n {props.config.scriptSource13 && useScript(props.config.scriptSource13, 'body', true)}\r\n {props.config.scriptSource14 && useScript(props.config.scriptSource14, 'body', true)}\r\n {props.config.scriptSource15 && useScript(props.config.scriptSource15, 'body', true)}\r\n {props.config.scriptSource16 && useScript(props.config.scriptSource16, 'body', true)}\r\n {props.config.scriptSource17 && useScript(props.config.scriptSource17, 'body', true)}\r\n {props.config.scriptSource18 && useScript(props.config.scriptSource18, 'body', true)}\r\n {props.config.scriptSource19 && useScript(props.config.scriptSource19, 'body', true)}\r\n {props.config.scriptSource20 && useScript(props.config.scriptSource20, 'body', true)}\r\n {props.config.scriptSource21 && useScript(props.config.scriptSource21, 'body', true)}\r\n {props.config.scriptSource22 && useScript(props.config.scriptSource22, 'body', true)}\r\n {props.config.scriptSource23 && useScript(props.config.scriptSource23, 'body', true)}\r\n {props.config.scriptSource24 && useScript(props.config.scriptSource24, 'body', true)}\r\n {props.config.scriptSource25 && useScript(props.config.scriptSource25, 'body', true)}\r\n {props.config.scriptSource26 && useScript(props.config.scriptSource26, 'body', true)}\r\n {props.config.scriptSource27 && useScript(props.config.scriptSource27, 'body', true)}\r\n {props.config.scriptSource28 && useScript(props.config.scriptSource28, 'body', true)}\r\n {props.config.scriptSource29 && useScript(props.config.scriptSource29, 'body', true)}\r\n {props.config.scriptSource30 && useScript(props.config.scriptSource30, 'body', true)}\r\n {props.config.scriptSource31 && useScript(props.config.scriptSource31, 'body', true)}\r\n {props.config.scriptSource32 && useScript(props.config.scriptSource32, 'body', true)}\r\n {props.config.scriptSource33 && useScript(props.config.scriptSource33, 'body', true)}\r\n {props.config.scriptSource34 && useScript(props.config.scriptSource34, 'body', true)}\r\n {props.config.scriptSource35 && useScript(props.config.scriptSource35, 'body', true)}\r\n {props.config.scriptSource36 && useScript(props.config.scriptSource36, 'body', true)}\r\n {props.config.scriptSource37 && useScript(props.config.scriptSource37, 'body', true)}\r\n {props.config.scriptSource38 && useScript(props.config.scriptSource38, 'body', true)}\r\n {props.config.scriptSource39 && useScript(props.config.scriptSource39, 'body', true)}\r\n {props.config.scriptSource40 && useScript(props.config.scriptSource40, 'body', true)}\r\n {props.config.scriptSource41 && useScript(props.config.scriptSource41, 'body', true)}\r\n {props.config.scriptSource42 && useScript(props.config.scriptSource42, 'body', true)}\r\n {props.config.scriptSource43 && useScript(props.config.scriptSource43, 'body', true)}\r\n {props.config.scriptSource44 && useScript(props.config.scriptSource44, 'body', true)}\r\n {props.config.scriptSource45 && useScript(props.config.scriptSource45, 'body', true)}\r\n {props.config.scriptSource46 && useScript(props.config.scriptSource46, 'body', true)}\r\n {props.config.scriptSource47 && useScript(props.config.scriptSource47, 'body', true)}\r\n {props.config.scriptSource48 && useScript(props.config.scriptSource48, 'body', true)}\r\n {props.config.scriptSource49 && useScript(props.config.scriptSource49, 'body', true)}\r\n {props.config.scriptSource50 && useScript(props.config.scriptSource50, 'body', true)}\r\n \r\n // \r\n // {props.renderModuleAttributes}\r\n // {props.config.scriptSource1 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource2 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource3 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource4 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource5 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource6 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource7 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource8 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource9 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource10 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource11 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource12 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource13 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource14 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource15 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource16 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource17 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource18 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource19 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource20 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource21 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource22 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource23 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource24 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource25 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource26 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource27 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource28 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource29 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource30 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource31 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource32 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource33 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource34 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource35 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource36 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource37 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource38 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource39 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource40 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource41 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource42 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource43 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource44 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource45 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource46 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource47 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource48 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource49 && (\r\n // \r\n // )}\r\n // {props.config.scriptSource50 && (\r\n // \r\n // )}\r\n // \r\n );\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IDictionary, IImageData } from '@msdyn365-commerce/core'; //Image, IImageSettings\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\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n}\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 private currentLevel: number = 0;\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 = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\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 }\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) => {\r\n return this._renderDrawerMenu(menuItem);\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 return (\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 * @returns Jsx element.\r\n */\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return this._renderDrawer(menuItem);\r\n }\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawer(menuItem: IMenuItemData): 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\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) => {\r\n return this._renderDrawerLink(menuSubItem);\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 * @returns Jsx element.\r\n */\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return <>{linkText};\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @returns Jsx element.\r\n */\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\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\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 } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n /**\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, false, menuItemData)}\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(\r\n subMenus?: IMenuItemData[],\r\n activeMenu?: number,\r\n IsSubMenu?: boolean,\r\n parentMenu?: IMenuItemData\r\n ): 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, parentMenu);\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 * @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 ): JSX.Element | null {\r\n const { Link } = 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(\r\n level: string,\r\n menuOptions: JSX.Element[],\r\n currentItem?: number,\r\n submenu?: boolean,\r\n parentMenu?: IMenuItemData\r\n ): 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 //const labelledParentMenu = Object.assign({}, parentMenu, {linkText: 'View all ' + parentMenu?.linkText});\r\n\r\n return (\r\n \r\n
\r\n
{parentMenu?.linkText}
\r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n
\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 &&\r\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n \r\n View all {parentMenu?.linkText} \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\r\n if (categoryImageUrl !== undefined) {\r\n //const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \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"],"names":["DynScriptInjector","React","render","this","props","renderView","useScript","url","position","async","placement","document","querySelector","script","createElement","src","appendChild","removeChild","config","scriptSource1","scriptSource2","scriptSource3","scriptSource4","scriptSource5","scriptSource6","scriptSource7","scriptSource8","scriptSource9","scriptSource10","scriptSource11","scriptSource12","scriptSource13","scriptSource14","scriptSource15","scriptSource16","scriptSource17","scriptSource18","scriptSource19","scriptSource20","scriptSource21","scriptSource22","scriptSource23","scriptSource24","scriptSource25","scriptSource26","scriptSource27","scriptSource28","scriptSource29","scriptSource30","scriptSource31","scriptSource32","scriptSource33","scriptSource34","scriptSource35","scriptSource36","scriptSource37","scriptSource38","scriptSource39","scriptSource40","scriptSource41","scriptSource42","scriptSource43","scriptSource44","scriptSource45","scriptSource46","scriptSource47","scriptSource48","scriptSource49","scriptSource50","NavigationMenuView","constructor","super","currentLevel","escapeKey","_updateCategoryImage","categoryImageSrc","option","linkText","promotionalImage","altText","ArrayExtensions","promotionalContent","map","item","image","imageSrc","promotionalItemImageSettings","imageSettings","push","text","additionalProperties","linkUrl","destinationUrl","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","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_closeSubmenu","_getCategoryImage","generateImageUrl","context","actionContext","requestContext","apiSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","isOpen","bind","telemetryContent","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","componentDidMount","MsDyn365","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","Module","Object","className","classnames","menuItem","_renderDrawerMenu","MenuList","Node","ref","tabIndex","_renderDisplay","subMenu","_renderDrawer","_renderLinkMenuItem","toggleButtonText","keyValue","isDrawerOpen","colProps","Drawer","key","openGlyph","onToggle","collapseProps","closeGlyph","glyphPlacement","_renderLinkText","menuSubItem","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","forEach","index","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","error","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","Button","onClick","onFocus","hoverEffect","isParent","Link","imagesource","contentAction","etext","attributes","getTelemetryAttributes","onMouseOver","href","onTelemetryClick","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass"],"sourceRoot":""}