{"version":3,"file":"static/js/14.61919cf6290db3cdc466.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/dyn-body-inline-script/dyn-body-inline-script.tsx?87ce","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-body-inline-script/dyn-body-inline-script.view.tsx?f4fb","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-chatbot-script/dyn-chatbot-script.tsx?3913","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-chatbot-script/dyn-chatbot-script.view.tsx?e331","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-cookiebot-declaration/dyn-cookiebot-declaration.tsx?bbb1","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-cookiebot-declaration/dyn-cookiebot-declaration.view.tsx?7208","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/navigation-menu.view.tsx?a9f7","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.tsx?78b1","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://Msdyn365.Commerce.Online/./src/modules/default-metatags/default-metatags.tsx?97a7","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52"],"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 { IDynBodyInlineScriptData } from './dyn-body-inline-script.data';\r\nimport { IDynBodyInlineScriptProps } from './dyn-body-inline-script.props.autogenerated';\r\n\r\nexport interface IDynBodyInlineScriptViewProps extends IDynBodyInlineScriptProps {}\r\n\r\n/**\r\n *\r\n * DynBodyInlineScript component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynBodyInlineScript 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 DynBodyInlineScript;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IDynBodyInlineScriptViewProps } from './dyn-body-inline-script';\r\n\r\nexport const useScript = (props: IDynBodyInlineScriptViewProps, position: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n\r\n const inlineScript: HTMLScriptElement = document.createElement('script');\r\n inlineScript.type = 'text/javascript';\r\n inlineScript.innerHTML = props.config.script;\r\n\r\n placement?.appendChild(inlineScript);\r\n\r\n return () => {\r\n placement?.removeChild(inlineScript);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IDynBodyInlineScriptViewProps) => {\r\n return <>{props.config.script && useScript(props, 'body')};\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDynChatbotScriptData } from './dyn-chatbot-script.data';\r\nimport { IDynChatbotScriptProps } from './dyn-chatbot-script.props.autogenerated';\r\n\r\nexport interface IDynChatbotScriptViewProps extends IDynChatbotScriptProps {}\r\n\r\n/**\r\n *\r\n * DynChatbotScript component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynChatbotScript 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 DynChatbotScript;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IDynChatbotScriptViewProps } from './dyn-chatbot-script';\r\n\r\nexport const useScript = (props: IDynChatbotScriptViewProps, position: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n\r\n const inlineScript: HTMLScriptElement = document.createElement('script');\r\n inlineScript.type = 'text/javascript';\r\n inlineScript.setAttribute('id', props.config.scriptId);\r\n inlineScript.innerHTML = props.config.script;\r\n\r\n placement?.appendChild(inlineScript);\r\n\r\n return () => {\r\n placement?.removeChild(inlineScript);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IDynChatbotScriptViewProps) => {\r\n return <>{props.config.script && useScript(props, 'body')};\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDynCookiebotDeclarationData } from './dyn-cookiebot-declaration.data';\r\nimport { IDynCookiebotDeclarationProps } from './dyn-cookiebot-declaration.props.autogenerated';\r\n\r\nexport interface IDynCookiebotDeclarationViewProps extends IDynCookiebotDeclarationProps {}\r\n\r\n/**\r\n *\r\n * DynCookiebotDeclaration component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynCookiebotDeclaration 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 DynCookiebotDeclaration;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IDynCookiebotDeclarationViewProps } from './dyn-cookiebot-declaration';\r\n\r\nexport const useScript = (props: IDynCookiebotDeclarationViewProps, position: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n\r\n const script: HTMLScriptElement = document.createElement('script');\r\n script.src = props.config.scriptUrl;\r\n script.type = 'text/javascript';\r\n script.id = 'CookieDeclaration';\r\n script.async = true;\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: IDynCookiebotDeclarationViewProps) => {\r\n return <>{props.config.scriptUrl && useScript(props, '.cookiebot-declaration')};\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","/*!\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 { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.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 this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { isNonceEnabled, SDK_FRAGMENT_NAME } from '@msdyn365-commerce/core-internal';\nimport { IDefaultMetatagsData } from './default-metatags.data';\nimport { IDefaultMetatagsProps } from './default-metatags.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component\n * @extends {React.PureComponent>}\n */\nclass DefaultMetaTags extends React.PureComponent> {\n public render(): JSX.Element {\n const { data, config } = this.props;\n const nonceToken = this.props.context && isNonceEnabled(this.props.context.request);\n let metaTagsHtml: string = '';\n let metaTags;\n if (config.metaTags) {\n metaTags = nonceToken ? this._addNonceToInlineScript(config.metaTags, nonceToken) : config.metaTags;\n metaTagsHtml = metaTags && metaTags.join('\\n');\n } else if (data.metaTags) {\n metaTags = data.metaTags;\n let metaTagsText = metaTags.map(simpleText => simpleText.text);\n metaTagsText = nonceToken ? this._addNonceToInlineScript(metaTagsText, nonceToken) : metaTagsText;\n metaTagsHtml = metaTagsText && metaTagsText.join('\\n');\n }\n return React.createElement(SDK_FRAGMENT_NAME, { key: this.props.id, dangerouslySetInnerHTML: { __html: metaTagsHtml } });\n }\n\n private _addNonceToInlineScript(metaTags: string[], nonceToken: string): string[] {\n const inlineScripRegex = /(.*?)<\\/script>/g;\n return metaTags\n .map(metaTag => {\n if (inlineScripRegex.test(metaTag)) {\n return metaTag.replace(/