{"version":3,"file":"static/js/34.c481d13df7b6d92805c4.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-navigation-menu/citta-navigation-menu.props.autogenerated.ts?fa94","webpack://Citta2.0/./src/modules/citta-navigation-menu/citta-navigation-menu.tsx?fb75","webpack://Citta2.0/./src/modules/citta-navigation-menu/citta-navigation-menu.view.tsx?c465","webpack://Citta2.0/./src/modules/citta-tile-list-item/components/links.tsx?7aff","webpack://Citta2.0/./src/modules/citta-tile-list-item/citta-tile-list-item.tsx?6ea4","webpack://Citta2.0/./src/modules/citta-tile-list-item/citta-tile-list-item.view.tsx?7f62","webpack://Citta2.0/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Citta2.0/./src/modules/content-block/components/links.tsx?abbf","webpack://Citta2.0/./src/modules/content-block/content-block.tsx?3084","webpack://Citta2.0/./src/modules/content-block/content-block.view.tsx?1773"],"sourcesContent":["/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICittaNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface ICittaNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n categoryImageSettings?: Msdyn365.IImageSettings;\r\n displayCategoryImage?: boolean;\r\n navigationMenuSource?: navigationMenuSource;\r\n enableMultilevelMenu?: boolean;\r\n menuLevelSupport?: number;\r\n enabletopMenu?: boolean;\r\n rootMenuNavigation?: string;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface ICittaNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface ICittaNavigationMenuProps extends Msdyn365.IModule {\r\n resources: ICittaNavigationMenuResources;\r\n config: ICittaNavigationMenuConfig;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject} from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, ICittaNavigationMenuData } from './citta-navigation-menu.data';\r\nimport { ICmsNavItemsData, ICittaNavigationMenuProps, ISubMenusData, navigationMenuSource } from './citta-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends ICittaNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer:INodeProps;\r\n MobileDescriptionContainer:INodeProps;\r\n MobileBackButton:INodeProps;\r\n MobileDescriptionLabel:INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n DivContainer?:INodeProps;\r\n ImageDivContainer?:INodeProps;\r\n showCategoryImage?:boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: ICittaNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = {isMobile: this.isMobile};\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return (this.viewport === 'xs' || this.viewport === 'sm');\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag:'nav',\r\n role:'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag:'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag:'li'\r\n },\r\n showCategoryImage:this.props.config.displayCategoryImage||false,\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n DivContainer:\r\n {\r\n tag: 'div',\r\n className:'ms-nav__feature',\r\n role:'menuitem'\r\n },\r\n ImageDivContainer:\r\n {\r\n tag:'div',\r\n className:'category-image',\r\n role:'tabpanel'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag:'button',\r\n role:'menuitem',\r\n onClick:this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag:'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag:'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick:this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag:'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy,index) => (\r\n mergedData.push(this._constructMenuItemData(item, undefined, true,index,true))\r\n ));\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) => (\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx+1))\r\n ));\r\n }\r\n return this._constructTopMenuItemData(mergedData);\r\n }\r\n private _constructTopMenuItemData(mergedData:IMenuItemData[]):IMenuItemData[] {\r\n const enableTopLevelMenu = this.props.config.enabletopMenu||false;\r\n if(!enableTopLevelMenu) {\r\n return mergedData;\r\n }\r\n const mergedRootMenuData: IMenuItemData[] = [];\r\n const topMenu = {\r\n id:1,\r\n linkText:this.props.config.rootMenuNavigation||'...',\r\n linkURL:'#',\r\n imageSource:undefined,\r\n subMenu: mergedData\r\n } as IMenuItemData;\r\n mergedRootMenuData.push(topMenu);\r\n\r\n return mergedRootMenuData;\r\n }\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructMenuItemData(retailItem?: CategoryHierarchy, cmsItem?: ICmsNavItemsData, isRetail?: boolean, idx?: number,addedAllMenu?:boolean): IMenuItemData {\r\n const locale = this.props.context && this.props.context.request && this.props.context.request.locale ? this.props.context.request.locale : 'en-us';\r\n const imageSouce = retailItem && retailItem.Images && retailItem.Images[0].Uri ? retailItem.Images[0].Uri: 'empty';\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n imageSource: imageSouce,\r\n subMenu: this._getNestedChildren(retailItem,imageSouce,addedAllMenu)\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: cmsItem && cmsItem.linkText || '',\r\n linkURL: cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl || '',\r\n imageDestinationURL: cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl || '',\r\n imageSource: cmsItem && cmsItem.image && cmsItem.image.src || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n private _getNestedChildren(category?: CategoryHierarchy,imageSourceUrl?:string,addedAllMenu:boolean=false): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n if(!this.props.config.enabletopMenu && addedAllMenu) {\r\n nestedChildren.push({linkText: this.props.resources.allCategoryMenuText,imageSource:imageSourceUrl,linkURL: getCategoryUrl(category, this.props.context as unknown as IActionContext, {}) });\r\n }\r\n category.Children.map((item: CategoryHierarchy,index) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true,index,false));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch(sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData, IImageSettings, Image} from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './citta-navigation-menu';\r\nimport { IMenuItemData } from './citta-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?:string|null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText:string;\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 static isBackTrack: boolean = false;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined,categoryImageAltText:''};\r\n this._closeSubmenu =this._closeSubmenu.bind(this);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation} = this.props;\r\n\r\n this.currentLevel = 1;\r\n return(\r\n \r\n \r\n {isMobileView && this.state.activeMenu !== undefined &&\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n }\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\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(let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack ? this.setState({parentMenu: undefined}) : this.setState({parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText});\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push (\r\n {this._createMenuItemList(menuItem)} \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 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 !NavigationMenuView.isBackTrack ? this.setState({parentMenu: item && item.id}) : this.setState({parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText});\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 this.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n return null;\r\n }\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,false));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id,false)}\r\n \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));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\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 multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\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 = subMenus && 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\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\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 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 private _renderLinkMenuItem(option: IMenuItemData, index?: number,hoverEffect:boolean=true): 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 private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const {Span} = this.props;\r\n return (\r\n { option.linkText }\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number,submenu?:boolean): JSX.Element | null {\r\n\r\n const {DivContainer, MenuList,ImageDivContainer,showCategoryImage,isMobileView} = this.props;\r\n const categoryImageDisplay = !isMobileView && showCategoryImage && this.state.categoryImage !==null && this.state.categoryImage !==undefined && !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 && 'navmenu-multi-level') }>\r\n { menuOptions }\r\n \r\n {\r\n categoryImageDisplay && this.state.categoryImage && (\r\n \r\n { this.state.categoryImage && this._getCategoryImage(this.state.categoryImage,this.state.categoryImageAltText) }\r\n )\r\n }\r\n \r\n );\r\n }\r\n private _updateCategoryImage=(categoryImageSrc:string,linkText:string) => ()=> {\r\n this.setState({\r\n categoryImage: categoryImageSrc !==''? categoryImageSrc :'empty',\r\n categoryImageAltText:linkText\r\n });\r\n }\r\n private _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.linkText!)();\r\n }\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu});\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _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 // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState(\r\n {\r\n activeMenu:undefined,\r\n mobileViewLabelText: '',\r\n categoryImage:null\r\n }\r\n );\r\n }\r\n };\r\n\r\n private _closeSubmenu():void {\r\n if (!this.props.isMobileView) {\r\n this.setState({activeMenu:undefined,categoryImage:null,mobileViewLabelText: ''});\r\n }\r\n }\r\n private _getCategoryImage=(categoryImage:string,alttext:string):React.ReactNode|null => {\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, 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\nexport default NavigationMenuView;","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILinksData } from '../citta-tile-list-item.props.autogenerated';\r\n\r\n/**\r\n * Tile List links.\r\n */\r\nexport interface ITileListLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ITileListLinks component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class TileListLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * ITileListLinks component.\r\n * @param linkdata - Link data.\r\n * @returns Editable links.\r\n */\r\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!ArrayExtensions.hasElements(linkdata)) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n for (const link of linkdata) {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-tile-list__link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n }\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default TileListLinks;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { TileListLinks } from './components';\r\nimport { IHeadingData, ICittaTileListItemProps } from './citta-tile-list-item.props.autogenerated';\r\n\r\n/**\r\n * Tile-list-item view props.\r\n */\r\nexport interface ITileListItemViewProps extends ICittaTileListItemProps<{}> {\r\n heading?: React.ReactNode;\r\n paragraph?: React.ReactNode;\r\n links?: React.ReactNode;\r\n backgroundImage?: React.ReactNode;\r\n thumbnailImage?: React.ReactNode;\r\n tileListItem: IModuleProps;\r\n tileListContainer: INodeProps;\r\n tileListImageContainer: INodeProps;\r\n tileListThumbnailImageContainer: INodeProps;\r\n tileListHeadingContainer: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * TileListItem component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class TileListItem extends React.PureComponent> {\r\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n\r\n public constructor(props: ICittaTileListItemProps<{}>) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { heading, paragraph, backgroundImage, thumbnailImage, redirectionUrl, links } = this.props.config;\r\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\r\n \r\n );\r\n const tileListLinkContainer = {\r\n tag: 'a' as NodeTag,\r\n className: 'ms-tile-list-container',\r\n role: 'link',\r\n href: redirectionUrl?.linkUrl.destinationUrl,\r\n 'aria-label': redirectionUrl?.ariaLabel\r\n };\r\n\r\n const tileListButtonContainer = {\r\n tag: 'button' as NodeTag,\r\n className: 'ms-tile-list-container'\r\n };\r\n const viewProps: ITileListItemViewProps = {\r\n ...this.props,\r\n heading: this._createHeading(heading),\r\n paragraph: this._createParagraph(paragraph),\r\n backgroundImage: this._renderBackgroundImage(backgroundImage),\r\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\r\n links: tileListLinks,\r\n tileListItem: {\r\n moduleProps: this.props,\r\n className: ''\r\n },\r\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\r\n tileListImageContainer: {\r\n className: 'ms-tile-list__image'\r\n },\r\n tileListThumbnailImageContainer: {\r\n className: 'ms-tile-list__thumbnail_image',\r\n 'aria-hidden': 'true'\r\n },\r\n tileListHeadingContainer: {\r\n className: 'ms-tile-list__heading'\r\n }\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handles heading content change event.\r\n * @param event - Content editable event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param event - Content editable event.\r\n */\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.paragraph = event.target.value;\r\n };\r\n\r\n /**\r\n * Handles paragraph content change event.\r\n * @param linkIndex - Index of link in linkarray.\r\n * @returns Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\r\n if (this.props.config.links?.[Number(linkIndex)]) {\r\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\r\n }\r\n };\r\n\r\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\r\n if (!heading) {\r\n return null;\r\n }\r\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderBackgroundImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\r\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\r\n\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=500&h=500&m=6', w: 500, h: 500 },\r\n sm: { q: 'w=600&h=600&m=6', w: 600, h: 600 },\r\n md: { q: 'w=700&h=700&m=6', w: 700, h: 700 },\r\n lg: { q: 'w=800&h=800&m=6', w: 800, h: 800 },\r\n xl: { q: 'w=900&h=900&m=6', w: 900, h: 900 }\r\n },\r\n lazyload: true\r\n };\r\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderThumbnailImage(\r\n item?: Msdyn365.IImageData,\r\n itemImageSettings?: Msdyn365.IImageSettings,\r\n isAriaHiddenAttribute?: boolean\r\n ): React.ReactNode | null {\r\n if (!item) {\r\n return null;\r\n }\r\n if (StringExtensions.isNullOrWhitespace(item.src)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default TileListItem;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ITileListItemViewProps } from './citta-tile-list-item';\r\n\r\n/**\r\n *\r\n * ITileListItemViewProps component.\r\n * @param props - Component props.\r\n * @returns TileListView.\r\n */\r\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\r\n const {\r\n heading,\r\n paragraph,\r\n backgroundImage,\r\n links,\r\n thumbnailImage,\r\n tileListContainer,\r\n tileListImageContainer,\r\n tileListThumbnailImageContainer,\r\n tileListHeadingContainer\r\n } = props;\r\n\r\n return (\r\n \r\n {backgroundImage}\r\n \r\n {heading}\r\n {paragraph}\r\n {links}\r\n \r\n {thumbnailImage}\r\n \r\n );\r\n};\r\n\r\n/**\r\n *\r\n * TileListItemViewProps component.\r\n * @param props - Component props.\r\n * @returns TileListView.\r\n */\r\nexport const TileListItemViewComponent: React.FC = props => {\r\n const { tileListItem } = props;\r\n return {renderTileListItemContent(props)};\r\n};\r\n\r\nexport default TileListItemViewComponent;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\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 { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n"],"names":["navigationMenuSource","NavigationMenu","React","constructor","props","super","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","this","cmsOnly","all","_updateViewport","bind","viewport","context","request","device","Type","config","state","isMobile","menuItemList","static","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","error","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","_objectSpread","imageSettings","gridSettings","Navigation","moduleProps","className","classnames","tag","role","resources","menuAriaLabel","MenuList","ListItem","showCategoryImage","displayCategoryImage","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","renderView","mergedData","categories","result","map","index","push","_constructMenuItemData","undefined","cmsNavItems","idx","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","id","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","imageSouce","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","image","src","_getCMSNestedChildren","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","sm","md","lg","__decorate","observable","computed","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","_handleGoBack","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_getCategoryImage","alttext","categoryImageUrl","generateImageUrl","actionContext","requestContext","apiSettings","ImageData","Image","Object","assign","categoryImageSettings","loadFailureBehavior","altText","_closeSubmenu","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","document","body","addEventListener","Module","Node","ref","tabIndex","_renderDisplay","menuItem","i","_getFromSubMenu","key","_createMenuItemList","forEach","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","option","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","onFocus","hoverEffect","imagesource","contentAction","etext","attributes","getTelemetryAttributes","onMouseOver","href","onTelemetryClick","level","currentItem","submenu","categoryImageDisplay","DivContainerClass","TileListLinks","_mapEditableLinks","linkdata","ArrayExtensions","hasElements","editableLinks","link","editableLink","ariaLabel","openInNewTab","additionalProperties","links","Msdyn365","editProps","onTextChange","TileListItem","_telemetryContent","handleHeadingChange","heading","text","value","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","_this$props$config$li","Number","backgroundImage","thumbnailImage","redirectionUrl","tileListLinks","tileListLinkContainer","_createHeading","_createParagraph","_renderBackgroundImage","_renderThumbnailImage","tileListItem","tileListContainer","tileListImageContainer","tileListThumbnailImageContainer","tileListHeadingContainer","onEdit","_heading$tag","StringExtensions","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$ba","verifiedImageSettings","moduleType","typeName","imagePropertyName","itemImageSettings","_this$props$config$th","layout","msdyn365__moduleLayout","TileListItemViewComponent","renderTileListItemContent","assembleNode","itemIndex","_item$links","headingNode","renderHeading","additionalContentHeading","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","btnClass","ContentBlock","handleTextChange","_this$props$context$r","_this$props$config$im","imageAriaLabel","contentBlockTitle","imageProps","contentBlockLinks","LinksComponent","contentBlockText","contentBlockImage","preserveImageSpace","moduleId","shouldSkipToMainImage","contentBlockviewProps","title","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad"],"sourceRoot":""}