{"version":3,"file":"static/js/16.2cdedb03b68169a98651.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/navigation-menu-utilities.tsx?b3ad","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/navigation-menu-root-disabled.tsx?ab0a","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/navigation-menu-root-enabled.tsx?829a","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/navigation-menu.view.tsx?c83e","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-button.tsx?8d59","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-description.tsx?54a5","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-error.tsx?a75a","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-input.tsx?d840","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-label.tsx?4560","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-link.tsx?2078","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-icon.tsx?1d7f","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-message.tsx?84ee","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-text.tsx?76b9","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.tsx?259c","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.view.tsx?2b3e","webpack://Msdyn365.Commerce.Online/./src/common/address-autosuggest.ts?f5a2","webpack://Msdyn365.Commerce.Online/./src/common/address-common.ts?cf4b","webpack://Msdyn365.Commerce.Online/./src/common/address-format.data.ts?6cbf","webpack://Msdyn365.Commerce.Online/./src/common/address-format.ts?4f04","webpack://Msdyn365.Commerce.Online/./src/common/address-meta-data.ts?c6e6","webpack://Msdyn365.Commerce.Online/./src/common/address-module.data.ts?697a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-checkbox.tsx?eb1a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-add.tsx?e6a6","webpack://Msdyn365.Commerce.Online/./src/common/components/address-alert.tsx?10d1","webpack://Msdyn365.Commerce.Online/./src/common/components/address-button.tsx?7f7b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-detail-item.tsx?5209","webpack://Msdyn365.Commerce.Online/./src/common/components/address-dropdown.tsx?f24b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-message.tsx?89ad","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-title.tsx?3926","webpack://Msdyn365.Commerce.Online/./src/common/components/address-input.tsx?8073","webpack://Msdyn365.Commerce.Online/./src/common/components/address-label.tsx?6864","webpack://Msdyn365.Commerce.Online/./src/common/components/address-list.tsx?a628","webpack://Msdyn365.Commerce.Online/./src/common/components/address-show.tsx?3f60","webpack://Msdyn365.Commerce.Online/./src/modules/account-management-address/account-management-address.tsx?27e7","webpack://Msdyn365.Commerce.Online/./src/modules/account-management-address/account-management-address.view.tsx?8c9f","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.tsx?299e","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.view.tsx?5078","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/components/terms-paragraph.tsx?1a9a","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.tsx?df24","webpack://Msdyn365.Commerce.Online/./src/modules/business-partner-promotion/business-partner-promotion.view.tsx?1ff2","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu/src/modules/navigation-menu/./navigation-menu';\r\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\r\n\r\n/**\r\n * INosNavigationMenuViewRootProps.\r\n */\r\n\r\nexport interface INosNavigationMenuViewRootProps {\r\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\r\n}\r\n\r\n/**\r\n * Represent navigation menu state interface.\r\n */\r\nexport interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: Msdyn365.IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n drawerKeyValue: Msdyn365.IDictionary;\r\n isOnlyMobile: boolean;\r\n isNavOpen: boolean;\r\n menuItemId?: number;\r\n}\r\n\r\n/**\r\n * NavMenuConstants enum.\r\n */\r\nexport enum NavMenuConstants {\r\n zero = 0,\r\n one = 1,\r\n two = 2,\r\n three = 3,\r\n four = 4,\r\n escapeKey = 27,\r\n rootMenu = 1\r\n}\r\n\r\n/**\r\n * GridSizes.\r\n */\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Get category image.\r\n * @param props - Navigation menu props.\r\n * @param categoryImage - Category Image.\r\n * @param alttext - AltText String.\r\n * @returns Returns Node.\r\n */\r\nexport const getCategoryImage = (\r\n props: INosNavigationMenuViewRootProps,\r\n categoryImage: string,\r\n alttext: string\r\n): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\r\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n Collapse,\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n ICollapseProps,\r\n IPayLoad,\r\n isMobile,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { getCategoryImage, INosNavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\r\n\r\n/**\r\n *\r\n * NavigationMenuRootDisabled component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuRootDisabled extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n private currentLevel: number = NavMenuConstants.zero;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n private customResizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n public constructor(props: INosNavigationMenuViewRootProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n const { menuItemData } = this.props.navProps;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n return null;\r\n });\r\n }\r\n }\r\n\r\n this.state = {\r\n activeMenu: 1,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n drawerKeyValue: {},\r\n isOnlyMobile: this.isOnlyMobile,\r\n categoryImage: this.promotionalImage,\r\n isNavOpen: false,\r\n menuItemId: -1\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.navProps.context.request.telemetryPageName!,\r\n this.props.navProps.friendlyName,\r\n this.props.navProps.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n // this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n }\r\n\r\n @computed public get isOnlyMobile(): boolean {\r\n const screenMode = isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request });\r\n return screenMode === 'xs' || screenMode === 'sm' || screenMode === 'md';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n this._customUpdateViewport();\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.currentLevel = 1;\r\n const navbarKey = 'header-nav-mobile';\r\n\r\n return (\r\n \r\n {this.state.isOnlyMobile ? (\r\n <>\r\n \r\n {this._renderCollapseMenu()}\r\n \r\n ) : (\r\n <>\r\n {this._createDesktopHeaderLinks()}\r\n {this._renderCollapseMenu()}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to handle nav bar toggle.\r\n */\r\n private readonly _toggleNavBar = (): void => {\r\n this.setState(previousState => ({\r\n activeMenu: undefined,\r\n isNavOpen: !previousState.isNavOpen\r\n }));\r\n };\r\n\r\n private _createDesktopHeaderLinks = () => {\r\n return this.props.navProps?.menuItemData?.length ? (\r\n
    \r\n {this.props.navProps.menuItemData.map((link, index) => {\r\n return link?.subMenu?.length ? (\r\n
  • \r\n {\r\n this._toggleNavBar();\r\n this.setState({ menuItemId: link.id });\r\n }}\r\n key={index}\r\n className={`${this.state.isNavOpen ? 'open' : ''}`}\r\n >\r\n {link.linkText}\r\n \r\n
  • \r\n ) : (\r\n
  • {this._createLink(link, index)}
  • \r\n );\r\n })}\r\n
\r\n ) : null;\r\n };\r\n\r\n private _createLink = (link: IMenuItemData, index: number) => {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'nos-header__header-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkURL,\r\n openInNewTab: false,\r\n role: 'link'\r\n };\r\n return ;\r\n };\r\n\r\n private _renderCollapseMenu(): JSX.Element | null {\r\n return (\r\n \r\n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\r\n\r\n this.currentLevel = 1;\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props.navProps;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (!item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem } = this.props.navProps;\r\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (ArrayExtensions.hasElements(menuItemData)) {\r\n menuItemData[0].id = 1;\r\n }\r\n\r\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\r\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\r\n\r\n if (menuItem) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(menuItem)} {` `}\r\n \r\n );\r\n }\r\n } else {\r\n if (this.state.isOnlyMobile) {\r\n for (const [index, item] of menuItemData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n
\r\n );\r\n }\r\n } else {\r\n for (const [, menuItem] of menuItemData.entries()) {\r\n if (menuItem.id === this.state.menuItemId && menuItem.subMenu?.length) {\r\n for (const [index, subMenuItem] of menuItem.subMenu.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(subMenuItem)}\r\n \r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\r\n if (!menu) {\r\n return null;\r\n }\r\n\r\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\r\n const item: IMenuItemData = menu[Number(index)];\r\n\r\n if (item.id === this.state.activeMenu) {\r\n if (!NavigationMenuRootDisabled.isBackTrack) {\r\n this.setState({ parentMenu: parentMenuId });\r\n } else {\r\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\r\n }\r\n return item;\r\n }\r\n const found = this._getFromSubMenu(item.id, item.subMenu);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\r\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\r\n }\r\n\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\r\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\r\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\r\n if (activeMenu === NavMenuConstants.rootMenu) {\r\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\r\n }\r\n\r\n const { ListItem } = this.props.navProps;\r\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\r\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\r\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && this.state.isOnlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\r\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\r\n menuItem = this.getMenuItem(option, index);\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n const isHavingSubmenu =\r\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\r\n\r\n if (hasOptions && !this.state.isOnlyMobile) {\r\n if (this.currentLevel >= NavMenuConstants.two) {\r\n subMenu = this._renderSubMenuDrawer(option);\r\n } else if (this.currentLevel <= this.supportedLevel) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\r\n }\r\n }\r\n\r\n if (isHavingSubmenu && this.state.isOnlyMobile) {\r\n this.currentLevel++;\r\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\r\n }\r\n\r\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\r\n let menuItem: JSX.Element | null;\r\n if (this.currentLevel === NavMenuConstants.one) {\r\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\r\n }\r\n return menuItem;\r\n }\r\n\r\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const levelClassName = `level-${this.currentLevel.toString()}`;\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;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n let isDrawerOpen = false;\r\n if (keys[menuItem.id!]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\r\n\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n this.currentLevel++;\r\n if (this.currentLevel < multiLevelSupportedMenu) {\r\n return this._renderSubMenuDrawer(menuSubItem);\r\n }\r\n }\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param menuId -Number.\r\n * @param isDrawerOpen -Boolean.\r\n * @returns Void.\r\n */\r\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\r\n const { drawerKeyValue } = this.state;\r\n const newPair = { [menuId!]: !isDrawerOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props.navProps;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\r\n const isCategoryImageDisplay =\r\n !this.state.isOnlyMobile &&\r\n showCategoryImage &&\r\n this.state.categoryImage !== null &&\r\n this.state.categoryImage !== undefined &&\r\n !isSubmenu;\r\n const isPromotionalContentDisplay =\r\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\r\n const divContainerClass =\r\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const menuLevelSupportClassName =\r\n isCategoryImageDisplay &&\r\n this.props.navProps.config.menuLevelSupport &&\r\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\r\n 'navmenu-multi-level';\r\n\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n
\r\n {isCategoryImageDisplay &&\r\n ArrayExtensions.hasElements(categoryImages) &&\r\n categoryImages.map(item => (\r\n \r\n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n {isPromotionalContentDisplay &&\r\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n /**\r\n * Handle dropdown toggle.\r\n * @param data - Menu Item data.\r\n * @param parentId - Number.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n if (this.props.navProps.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuRootDisabled.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Handle back navigation for menu items for mobile view.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuRootDisabled.isBackTrack = true;\r\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on click on body.\r\n * @param event - MouseEvent.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Mobile view label text.\r\n * @param optionLinkText -Sub menu item link text.\r\n * @returns Boolean.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n const firstIndex: number = 0;\r\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n /**\r\n * Function to handle nav menu close.\r\n */\r\n private readonly _closeNavMenu = (): void => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n (this.menuNode.current?.children[0] as HTMLElement).focus();\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on esc key.\r\n * @param event - Event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\r\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\r\n (this.menuNode.current?.children[0] as HTMLElement).focus();\r\n }\r\n };\r\n\r\n /**\r\n * Custom update viewport.\r\n */\r\n private readonly _customUpdateViewport = (): void => {\r\n this.setState({ isOnlyMobile: this.isOnlyMobile });\r\n };\r\n}\r\n\r\nexport default NavigationMenuRootDisabled;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n Collapse,\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n ICollapseProps,\r\n IPayLoad,\r\n isMobile,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n VariantType\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { getCategoryImage, INosNavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\r\n\r\n/**\r\n *\r\n * NavigationMenuRootEnabled component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuRootEnabled extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n private currentLevel: number = NavMenuConstants.zero;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\r\n\r\n private menuItemData: IMenuItemData[] = [];\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n private customResizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n public constructor(props: INosNavigationMenuViewRootProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n const { menuItemData } = this.props.navProps;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\r\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\r\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\r\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\r\n const imageSource = item.image.src;\r\n this.promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n return null;\r\n });\r\n }\r\n }\r\n this.state = {\r\n activeMenu: NavMenuConstants.rootMenu,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n drawerKeyValue: {},\r\n isOnlyMobile: this.isOnlyMobile,\r\n categoryImage: this.promotionalImage,\r\n isNavOpen: false\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.navProps.context.request.telemetryPageName!,\r\n this.props.navProps.friendlyName,\r\n this.props.navProps.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n }\r\n\r\n @computed public get isOnlyMobile(): boolean {\r\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n this._customUpdateViewport();\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n this._addShopAllLink();\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.currentLevel = NavMenuConstants.one;\r\n const navbarKey = 'header-nav-mobile';\r\n return (\r\n \r\n {this.state.isOnlyMobile ? (\r\n this._renderMobileMenu()\r\n ) : (\r\n <>\r\n \r\n {this._renderCollapseMenu()}\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Function to handle nav bar toggle.\r\n */\r\n private readonly _toggleNavBar = (): void => {\r\n this.setState(previousState => ({\r\n activeMenu: NavMenuConstants.rootMenu,\r\n isNavOpen: !previousState.isNavOpen\r\n }));\r\n };\r\n\r\n private _renderCollapseMenu(): JSX.Element | null {\r\n return (\r\n \r\n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\r\n\r\n this.currentLevel = NavMenuConstants.one;\r\n return (\r\n \r\n \r\n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { Navigation } = this.props.navProps;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (!item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem } = this.props.navProps;\r\n let menuItemData: IMenuItemData[] = [];\r\n if (this.state.isOnlyMobile) {\r\n menuItemData = this.menuItemData;\r\n } else {\r\n menuItemData = this.props.navProps.menuItemData;\r\n }\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n let cmsMenuData: IMenuItemData[] | undefined = [];\r\n let retailMenuItemData: IMenuItemData[] | undefined = [];\r\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\r\n\r\n for (const item of retailMenuData) {\r\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\r\n item.subMenu = retailMenuItemData;\r\n }\r\n\r\n for (const item of menuItemData) {\r\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\r\n }\r\n\r\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\r\n let menuItem: IMenuItemData | null = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n if (!NavigationMenuRootEnabled.isBackTrack) {\r\n this.setState({\r\n parentMenu: undefined\r\n });\r\n } else {\r\n this.setState({\r\n parentMenu: undefined,\r\n mobileViewLabelText: menuItemDatum.linkText\r\n });\r\n }\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum);\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n if (menuItem) {\r\n menuItemList.push(\r\n \r\n {` `}\r\n {this._createMenuItemList(menuItem)} {` `}\r\n \r\n );\r\n }\r\n } else {\r\n for (const [index, item] of retailMenuData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n
\r\n );\r\n }\r\n\r\n for (const [index, item] of cmsMenuData.entries()) {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n }\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item?.subMenu;\r\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\r\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\r\n const subMenu: IMenuItemData = subMenus[Number(index)];\r\n let parentMenuId = item?.id;\r\n\r\n if (subMenu.id === this.state.activeMenu) {\r\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\r\n parentMenuId = undefined;\r\n }\r\n\r\n if (!NavigationMenuRootEnabled.isBackTrack) {\r\n this.setState({ parentMenu: parentMenuId });\r\n } else {\r\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\r\n }\r\n return subMenu;\r\n }\r\n const found = this._getFromSubMenu(subMenu);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\r\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\r\n }\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\r\n } else if (!menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\r\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\r\n if (activeMenu === NavMenuConstants.rootMenu) {\r\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\r\n }\r\n\r\n const { ListItem } = this.props.navProps;\r\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\r\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\r\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && this.state.isOnlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\r\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\r\n menuItem = this.getMenuItem(option, index);\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n const isHavingSubmenu =\r\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\r\n\r\n if (hasOptions && !this.state.isOnlyMobile) {\r\n if (this.currentLevel >= NavMenuConstants.two) {\r\n subMenu = this._renderSubMenuDrawer(option);\r\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\r\n }\r\n }\r\n if (isHavingSubmenu && this.state.isOnlyMobile) {\r\n this.currentLevel++;\r\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\r\n }\r\n\r\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\r\n let menuItem: JSX.Element | null;\r\n if (this.currentLevel === NavMenuConstants.one) {\r\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\r\n }\r\n return menuItem;\r\n }\r\n\r\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const levelClassName = `level-${this.currentLevel.toString()}`;\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;\r\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\r\n\r\n let isDrawerOpen = false;\r\n if (keys[menuItem.id!]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n this.currentLevel++;\r\n if (this.currentLevel < multiLevelSupportedMenu) {\r\n return this._renderSubMenuDrawer(menuSubItem);\r\n }\r\n }\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param menuId -Number.\r\n * @param isDrawerOpen -Boolean.\r\n * @returns Void.\r\n */\r\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\r\n const { drawerKeyValue } = this.state;\r\n const newPair = { [menuId!]: !isDrawerOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props.navProps;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props.navProps;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\r\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\r\n const isCategoryImageDisplay =\r\n !this.state.isOnlyMobile &&\r\n showCategoryImage &&\r\n this.state.categoryImage !== null &&\r\n this.state.categoryImage !== undefined &&\r\n !isSubmenu;\r\n const isPromotionalContentDisplay =\r\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\r\n const divContainerClass =\r\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\r\n const menuLevelSupportClassName =\r\n isCategoryImageDisplay &&\r\n this.props.navProps.config.menuLevelSupport &&\r\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\r\n 'navmenu-multi-level';\r\n\r\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\r\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n
\r\n {isCategoryImageDisplay &&\r\n ArrayExtensions.hasElements(categoryImages) &&\r\n categoryImages.map(item => (\r\n \r\n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n {isPromotionalContentDisplay &&\r\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Handle Category image update.\r\n * @param categoryImageSource - Image source.\r\n * @param option - Menu Item data.\r\n * @returns Returns empty.\r\n */\r\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n for (const item of option.promotionalContent) {\r\n const imageSource = item.image.src;\r\n promotionalImage.push({\r\n src: imageSource,\r\n altText: item.text,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n }\r\n this.setState({\r\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\r\n });\r\n };\r\n\r\n /**\r\n * Handle dropdown toggle.\r\n * @param data - Menu Item data.\r\n * @param parentId - Number.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n if (this.props.navProps.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuRootEnabled.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Handle back navigation for menu items for mobile view.\r\n * @returns Returns empty.\r\n */\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuRootEnabled.isBackTrack = true;\r\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on click on body.\r\n * @param event - MouseEvent.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Add shop all link for Mobile submenu.\r\n */\r\n private readonly _addShopAllLink = (): void => {\r\n const { menuItemData } = this.props.navProps;\r\n this.menuItemData = menuItemData;\r\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\r\n this.menuItemData[0].subMenu?.map(item => {\r\n const shopAllObject = {};\r\n Object.assign(shopAllObject, { imageSource: item.imageSource });\r\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\r\n Object.assign(shopAllObject, { linkURL: item.linkURL });\r\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\r\n item.subMenu.unshift(shopAllObject);\r\n }\r\n return item;\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Checks to assign a ref for focus.\r\n * @param index -Sub menu list index.\r\n * @param mobileViewLabelText -Mobile view label text.\r\n * @param optionLinkText -Sub menu item link text.\r\n * @returns Boolean.\r\n */\r\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n const firstIndex: number = 0;\r\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\r\n return true;\r\n }\r\n if (!optionLinkText || !mobileViewLabelText) {\r\n return false;\r\n }\r\n return mobileViewLabelText === optionLinkText;\r\n };\r\n\r\n /**\r\n * Function to handle nav menu close.\r\n */\r\n private readonly _closeNavMenu = (): void => {\r\n if (!this.state.isOnlyMobile) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n } else {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Function to close the nav menu on esc key.\r\n * @param event - Event.\r\n */\r\n private readonly _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\r\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\r\n }\r\n };\r\n\r\n /**\r\n * Custom update viewport.\r\n */\r\n private readonly _customUpdateViewport = (): void => {\r\n this.setState({ isOnlyMobile: this.isOnlyMobile });\r\n };\r\n}\r\n\r\nexport default NavigationMenuRootEnabled;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\r\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\r\n\r\n/**\r\n * Render the Navigation menu.\r\n * @param props - The navigation menu view props.\r\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\r\n */\r\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\r\n if (props.config.enabletopMenu) {\r\n return ;\r\n }\r\n\r\n return ;\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default SignInButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInDescription {\n className: string;\n description: string;\n}\n\nconst SignInDescription: React.FC = ({ className, description }) =>

{description}

;\n\nexport default SignInDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignInErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignInError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignInError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n ariaLabel?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignInInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst SignInInput: React.FC = ({ id, type, value, pattern, className, maxLength, ariaLabel, onChange }) => (\n \n);\n\nexport default SignInInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignInLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignInLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInLink {\n id?: string;\n className: string;\n href: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignInLink;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLoadingIcon {\n className: string;\n}\n\nconst SignInLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignInLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignInLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignInLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInText {\n className: string;\n text: string;\n}\n\nconst SignInText: React.FC = ({ className, text }) => {text};\n\nexport default SignInText;\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 { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n key: string;\n button: INodeProps;\n image: React.ReactNode;\n text: React.ReactNode;\n}\n\nexport interface ISignInB2BItem {\n key: string;\n button: INodeProps;\n text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n socialAccounts: INodeProps;\n items: ISignInSocialItem[];\n}\n\nexport interface ISignInB2BAccount {\n socialAccounts: INodeProps;\n items: ISignInB2BItem[];\n}\nexport interface ISignInLocalAccount {\n localAccount: INodeProps;\n items: ISignInItem[];\n forgetPassword: React.ReactNode;\n disclaimer: React.ReactNode;\n error: React.ReactNode;\n signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n className: string;\n viewState: ISignInViewState;\n signIn: IModuleProps;\n loading: ISignInLoading;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n signInSection: INodeProps;\n signInSectionHeading: React.ReactNode;\n signInLocalAccount: ISignInLocalAccount;\n signInSocialAccount: ISignInSocialAccount;\n signInB2BAccount: ISignInB2BAccount;\n signUpSection: INodeProps;\n signUpSectionHeading: React.ReactNode;\n signUpDescription: React.ReactNode;\n signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignIn extends React.Component> {\n private readonly moduleClassName: string = 'ms-sign-in';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private emailId: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignInProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.emailId = 'logonIdentifier';\n }\n\n public componentDidMount(): void {\n this._prePopulateData();\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISignInProps, nextState: ISignInViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const config: ISignInConfig = this.props.config || {};\n const resources: ISignInResources = this.props.resources || {};\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signIn: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n signInSection: {\n className: `${this.moduleClassName}__sign-in-section`\n },\n signInSectionHeading: (\n \n ),\n signInLocalAccount: {\n localAccount: {\n className: `${this.moduleClassName}__account-items localAccount`\n },\n items: [\n this._renderInput(\n this.emailId,\n 'email',\n resources.emailAddressLabelText,\n resources.emailAddressAriaLabel,\n this.emailRegex\n ),\n this._renderInput('password', 'password', resources.passwordLabelText)\n ],\n forgetPassword: (\n \n ),\n disclaimer: config.signInDisclaimer && (\n \n ),\n error: ,\n signInButton: (\n \n )\n },\n signInSocialAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__social-accounts`\n },\n items: [\n this._renderSocialAccount(\n 'FacebookExchange',\n resources.facebookButtonText,\n resources.facebookButtonAriaLabel,\n config.facebookIcon\n ),\n this._renderSocialAccount(\n 'MicrosoftAccountExchange',\n resources.microsoftButtonText,\n resources.microsoftButtonAriaLabel,\n config.microsoftIcon\n )\n ]\n },\n signInB2BAccount: {\n socialAccounts: {\n className: `${this.moduleClassName}__b2b-social-accounts`\n },\n items: [\n this._renderB2BSocialAccount(\n 'StoreManagerB2BSignin',\n resources.b2bButtonText,\n resources.b2bButtonAriaLabel,\n config.displayB2bAccountManagerSignin\n )\n ]\n },\n signUpSection: {\n className: `${this.moduleClassName}__sign-up-section`\n },\n signUpSectionHeading: (\n \n ),\n signUpDescription: (\n \n ),\n signUpLink: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.signInDisclaimer = event.target.value);\n\n public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signInHeading.text = event.target.value);\n\n public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.signUpHeading.text = event.target.value);\n\n private readonly _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n this.emailRegex = window['CONTENT']['email_pattern'];\n }\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // @ts-expect-error\n this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignInResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n requiredField_email: resources.requriedEmailError,\n requiredField_password: resources.requriedPasswordError,\n invalid_email: resources.invalidEmailError,\n invalid_password: resources.invalidPasswordError,\n unknown_error: resources.unknownError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private _renderInput(id: string, type: string, labelText: string, ariaLabel?: string, pattern?: string): ISignInItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n error: (\n \n ),\n input: (\n \n )\n };\n }\n\n private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n image: this._createImageMarkup(iconImage),\n text: \n };\n }\n\n private _renderB2BSocialAccount(\n id: string,\n text: string,\n ariaLabel: string,\n _displayB2bAccountManagerSignin: boolean | undefined\n ): ISignInB2BItem | null {\n if (_displayB2bAccountManagerSignin) {\n return {\n key: id,\n button: {\n id,\n tag: 'button',\n className: classnames(\n `${this.moduleClassName}__social-account`,\n `${this.moduleClassName}__social-account-${id}`,\n 'accountButton',\n 'msc-btn'\n ),\n 'aria-label': ariaLabel\n },\n text: \n };\n }\n return null;\n }\n\n private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n if (iconImage) {\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings || {},\n imageSettings: iconImage && iconImage.imageSettings\n };\n const pictureClassName = `${this.moduleClassName}__social-account-picture`;\n return (\n
\n \n
\n );\n }\n return null;\n }\n}\n\nexport default SignIn;\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 {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps\n} from './sign-in';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignInView: React.FC = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription,\n signUpLink\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n {B2BAccount(signInB2BAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpLink}\n \n \n \n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List',\n Multiple = 'Multiple'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressAddNewButtonText?: string;\n addressAddNewButtonAriaLabel?: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n addressProductImage?: string;\n addressProductNumberText?: string;\n addressProductText?: string;\n addressProductUnitPriceText?: string;\n addressProductUOMText?: string;\n addressProductQuantityText?: string;\n addressProductActionsText?: string;\n addressSelectAllRowsText?: string;\n addressProductAddressText?: string;\n addressShipMultipleText?: string;\n addressShipMultipleAriaLabel?: string;\n saveAndContinueBtnLabel?: string;\n addressShipSingleText?: string;\n addressShipSingleAriaLabel?: string;\n clearSelectionButtonText?: string;\n clearSelectionButtonAriaLabel?: string;\n chooseAddressForSelectedItemsText?: string;\n chooseAddressForSelectedItemsAriaLabel?: string;\n noAddressSelectedAriaLabel?: string;\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\n }\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 React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n recordId?: string;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange, recordId } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

;\n};\n\nexport default AddressErrorTitleFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address input.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\n const {\n id: itemId,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus: shouldUseAutoFocus,\n telemetryContent,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressInputFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressLabel {\n id: string;\n text: string;\n}\n\n/**\n * Address label.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\n const { id: itemId, text } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\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 { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\n isAsyncCustomer?: boolean;\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\n isEditAsyncCustomerFeatureEnabled?: boolean;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (\n className: string,\n addresses: Address[],\n showPrimaryButton: boolean,\n props: IAddressListInputProps,\n heading?: HeadingData\n): IAddressList => {\n const {\n resources,\n isUpdating,\n addressActionResponse,\n selectedAddress,\n addressFormat,\n onEditAddress,\n onRemoveAddress,\n onUpdatePrimaryAddress,\n addressPurposes,\n telemetryContent\n } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map(\n (address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\n const isInvalidAsyncState: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: !!isShowError,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n {\n onUpdatePrimaryAddress(address);\n }\n }}\n />\n ),\n editButton: (\n {\n onEditAddress(address);\n },\n role: 'link'\n }}\n />\n ),\n removeButton: (\n {\n onRemoveAddress(address);\n },\n role: 'link'\n }}\n />\n )\n };\n }\n )\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\n const headingComponent = heading?.text && (\n {\n // Required\n },\n requestContext: props.contextRequest\n }}\n />\n );\n\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\n const disableAddButton: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false) &&\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressItemType, IAddressItem } from '../address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map(item => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find(\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\n );\n if (addressType) {\n const addressTypeDescription = addressType.Description || '';\n return {\n key: item.name,\n description: (\n \n )\n };\n }\n }\n return {\n key: item.name,\n description: (\n \n )\n };\n })\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\nimport { IAccountManagementAddressData } from './account-management-address.data';\nimport { IAccountManagementAddressProps } from './account-management-address.props.autogenerated';\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewProps extends React.Component> {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: IAccountManagementAddressViewState;\n AccountAddressManagement: IModuleProps;\n isUpdating: boolean;\n showAddressList: IAddressListProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n screenReaderNotification: React.ReactNode;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountManagementAddress extends React.Component> {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address;\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private removeAddressData?: Address;\n\n private readonly addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[] = [];\n private addressPurposes: AddressPurpose[] = [];\n private readonly resources: IAddressResource;\n private readonly defaultAddressType: number = 6; // Default to Home\n private readonly telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n public constructor(props: IAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n if (this.props.data.countryRegions.result !== undefined) {\n this._setDefaultCountryRegionId();\n }\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => {\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n },\n async () => {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n await this._attachMapAutoSuggest();\n }\n }\n );\n }\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n /**\n * Should component update function.\n * @param nextProps - Account management address props.\n * @param nextState - Next state.\n * @returns - True if component should update, false otherwise.\n */\n public shouldComponentUpdate(\n nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\n\n // Set the feature state value for 'Async Customer Address Creation'.\n this.asyncCustomerAddressCreationFeatureIsEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n !this.isEditAsyncCustomerFeatureEnabled &&\n (customerInformation?.IsAsyncCustomer || false) && (\n \n ),\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddresList: this.currentOperation === AddressOperation.List,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\n },\n AccountAddressManagement: {\n moduleProps: this.props,\n className: classnames('ms-account-management-address', config.className)\n },\n showAddressList: this._renderListAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On Suggestion Selected Function.\n * @param result - Microsoft.Maps.ISuggestionResult.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IAccountManagementAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n };\n\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n /**\n * Render List Address Function.\n * @returns - AddressList.\n */\n private readonly _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n /**\n * Render Address title.\n * @param event - Msdyn365.ContentEditableEvent.\n */\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n config.heading!.text = event.target.value;\n };\n const heading = config.heading && {\n text: config.heading.text,\n headingTag: config.heading.tag\n };\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n addressPurposes: this.addressPurposes,\n resources: this.resources,\n heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n handleLineItemHeadingChange,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress,\n isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\n });\n };\n\n /**\n * Attach Map Auto Suggest Function.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On Address Add Update Function.\n * @param name - String.\n * @param value - String | Boolean | Number.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * On Address Add Update Input Change.\n * @param event - Input Change Event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * On Address Add Update Dropdown Change.\n * @param event - Dropdown Change Event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n this.onAddressAddUpdate(event.target.name, +event.target.value);\n } else {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n }\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * On Address Update Function.\n * @param response - Promise.\n * @param onSuccess - IAddressResponse.\n */\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n this.isUpdating = true;\n response.then(\n (result: IAddressResponse) => {\n if (result.address) {\n this.hasError = false;\n onSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n }\n this.isUpdating = false;\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n }\n );\n };\n\n /**\n * On Address Add Update Submit Function.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * On Country Change Function.\n * @param countryRegionId - String.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\n this._clearAddressFields();\n };\n\n /**\n * Get Address Format Exclude List Function.\n * @returns - Address Format Exclude List.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Get State Provinces Function.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Update CurrentOperation Function.\n * @param operation - AddressOperation.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n this._clearAddressFields();\n };\n\n /**\n * On Submit Update Primary Address Function.\n * @param address - Address.\n */\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n /**\n * Go To Edit Address Function.\n * @param address - Address.\n */\n private readonly _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n /**\n * On Remove Address Function.\n * @param address - Address.\n */\n private readonly _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n this.removeAddressData = address;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * Renders Notification screen reader text for removed address.\n * @param address - Address input.\n * @returns Notification for removed address.\n */\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\n return (\n
\n {notification}\n
\n );\n };\n\n /**\n * Go To Add Address Function.\n */\n private readonly _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n this._setDefaultCountryRegionId();\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * On Add Or Update Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n /**\n * On Update Primary Address Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n /**\n * Reset view function.\n */\n private readonly _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n };\n}\n\nexport default AccountManagementAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport * as React from 'react';\n\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressData } from './business-account-address.data';\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\n\n/**\n * Interface for IBusinessAccountAddressExtendedProps.\n */\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\n/**\n * Interface for IBusinessAccountAddressState.\n */\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\n\n/**\n * Interface for IBusinessAccountAddressViewProps.\n */\nexport interface IBusinessAccountAddressViewProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n BusinessAccountAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component, IBusinessAccountAddressState>}\n */\nclass BusinessAccountAddress extends React.Component {\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private readonly validationError: object;\n\n private readonly addressActionResponse?: IAddressResponse;\n\n private readonly isUpdating?: boolean;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 0; // Default to None (This value set in HQ as Business)\n\n private readonly shouldAutoFocus?: boolean = false;\n\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBusinessAccountAddressExtendedProps) {\n super(props);\n\n const { context, data, resources, telemetry } = this.props;\n this.addUpdateAddress = {};\n this.resources = resources;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n // Initializing data props\n this._dataInitialize(this.props);\n\n this._setDefaultCountryRegionId();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { renderView, config, hasError, resetAddress } = this.props;\n\n // Business-sign-up will pass this flag when cancel button is clicked\n if (resetAddress) {\n this._resetAddressFields();\n }\n\n const viewProps = {\n ...this.props,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n hasError,\n className: config.className,\n BusinessAccountAddress: {\n moduleProps: this.props,\n className: classnames('ms-business-account-address', config.className)\n },\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Reset Address.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _resetAddressFields = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n\n addressFormat.map(addressFormatItem => {\n switch (addressFormatItem.displayType) {\n case AddressItemDisplayType.Input:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n case AddressItemDisplayType.Checkbox:\n this.addUpdateAddress[addressFormatItem.name] = false;\n break;\n default:\n switch (addressFormatItem.type) {\n case AddressItemType.ThreeLetterISORegionName:\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\n break;\n case AddressItemType.AddressTypeValue:\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\n break;\n case AddressItemType.State:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n default:\n this.addUpdateAddress[addressFormatItem.name] = undefined;\n }\n }\n });\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n // Set validationError and hasError to hide error messages since in the B2B\n // request form, no errors would visually show since user wont be able to submit\n // until form is filled and correct\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Company,\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n shouldAutoFocus: this.shouldAutoFocus,\n validationError: this.validationError,\n hasError: this.props.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange\n });\n };\n\n /**\n * On Address Add Update Input Change Function.\n * @param event - Input event change function.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n /**\n * On Address Add Update Dropdown Change Function.\n * @param event - Change dropdown event.\n */\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n await this._updateCountryRegionId(event.target.value);\n } else {\n this._updateAddress(event.target.name, event.target.value);\n }\n };\n\n /**\n * Update Address Function.\n * @param name - String.\n * @param value - String.\n */\n private readonly _updateAddress = (name: string, value: string | number) => {\n const { updateForm, isRequired, resources } = this.props;\n let cleanValue = value;\n if (typeof value === 'string') {\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\n }\n set(this.addUpdateAddress, { [name]: cleanValue });\n\n if (this._isEmpty()) {\n if (isRequired) {\n updateForm(true, undefined);\n } else {\n // Reset addressFormat as if address was NOT a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, []),\n this.addressPurposes\n );\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat if address was a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, this.props.isRequired ? undefined : []),\n this.addressPurposes\n );\n\n // Verify with new rules\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n updateForm(false, this.addUpdateAddress);\n } else {\n updateForm(true, undefined);\n }\n }\n };\n\n /**\n * Is empty Function.\n * @returns - Boolean.\n */\n // Walk through array and check if valued is defined or value is not an empty string\n private readonly _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (const addressFormatItem of addressFormat) {\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\n\n // Check each input field, if value is defined and not an empty string --> address is not empty\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n /**\n * Is Input Required Function.\n * @param addressFormatItem - IAddressItem.\n * @returns - Boolean.\n */\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\n !addressFormatItem.validationRules ||\n addressFormatItem.validationRules.length === 0\n ) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {hasError && alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Business Account Address View Component.\n * @param props - Props.\n * @returns - BusinessAccountAddress Module.\n */\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n \n \n );\n};\n\nexport default BusinessAccountAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessPartnerPromotionTermsParagraphProp {\n description: string;\n className: string;\n title?: string;\n titleClassName?: string;\n}\n\nexport const BusinessPartnerPromotionTermsParagraph: React.FC = ({\n title,\n description,\n className,\n titleClassName\n}) => {\n return (\n
  • \n {title &&

    {title}

    }\n

    {description}

    \n
  • \n );\n};\n\nexport default BusinessPartnerPromotionTermsParagraph;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { Button, Alert, IModuleProps, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport { promoteToSellerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Text } from '@msdyn365-commerce/core';\nimport { IBusinessPartnerPromotionData } from './business-partner-promotion.data';\nimport { IBusinessPartnerPromotionProps } from './business-partner-promotion.props.autogenerated';\nimport { BusinessPartnerPromotionTermsParagraph } from './components';\n\nexport interface IBusinessPartnerPromotionViewProps extends IBusinessPartnerPromotionProps {\n businessPartnerPromotionProps: IModuleProps;\n heading: React.ReactNode;\n notificationMessage?: React.ReactNode;\n sellerDescriptions: React.ReactNode[];\n termsOfServiceCheckbox: React.ReactNode;\n termsOfServiceModal: React.ReactNode;\n submitButton: React.ReactNode;\n}\n\nexport interface IBusinessPartnerPromotionState {\n showTermsOfService: boolean;\n showSubmitButton: boolean;\n termsOfServiceChecked: boolean;\n termsOfServiceModalOpened: boolean;\n errorMessage?: string;\n notificationMessage?: string;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partner-promotion';\n\n/**\n *\n * BusinessPartnerPromotion component\n * @extends {React.PureComponent>}\n */\nclass BusinessPartnerPromotion extends React.Component<\n IBusinessPartnerPromotionProps,\n IBusinessPartnerPromotionState\n> {\n constructor(props: IBusinessPartnerPromotionProps) {\n super(props);\n this.state = {\n showTermsOfService: true,\n showSubmitButton: true,\n termsOfServiceChecked: false,\n termsOfServiceModalOpened: false,\n errorMessage: undefined,\n notificationMessage: undefined\n };\n }\n\n public render(): JSX.Element | null {\n const {\n showSubmitButton,\n showTermsOfService,\n termsOfServiceChecked,\n termsOfServiceModalOpened,\n errorMessage,\n notificationMessage\n } = this.state;\n const { resources, data, config } = this.props;\n const { heading, termsOfService } = config;\n const { authorizationErrorMessage } = resources;\n const { b2bUserInformation } = data;\n const canSubmit = this.isAdminUser(b2bUserInformation.result);\n let error: string | undefined = errorMessage;\n\n // do not show error message when the API is still in loading.\n if (!canSubmit && b2bUserInformation.status !== 'LOADING') {\n error = authorizationErrorMessage;\n }\n const btnEnabled = canSubmit && termsOfServiceChecked;\n\n const viewProps: IBusinessPartnerPromotionViewProps = {\n ...this.props,\n businessPartnerPromotionProps: {\n moduleProps: this.props,\n className: classnames(moduleClassName, moduleClassName)\n },\n heading: ,\n notificationMessage: this.renderNotificationBar(error, notificationMessage),\n sellerDescriptions: this.renderSellerDescriptions(),\n termsOfServiceCheckbox: showTermsOfService && (\n
    \n \n {resources.termsOfServiceAgreementText}\n \n {resources.termsOfServiceLinkText}\n \n
    \n ),\n termsOfServiceModal: (\n \n {resources.termsOfServiceModalHeading}\n \n \n \n \n ),\n submitButton: showSubmitButton && (\n
    \n \n {resources.submitRequestLabel}\n \n
    \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private renderNotificationBar(errorMessage: string | undefined, notificationMessage: string | undefined): React.ReactNode {\n let notificationBar: React.ReactNode = null;\n if (errorMessage) {\n notificationBar = {errorMessage};\n } else if (notificationMessage) {\n notificationBar = {notificationMessage};\n }\n return notificationBar;\n }\n\n private renderSellerDescriptions(): React.ReactNode[] {\n const { config } = this.props;\n const results: React.ReactNode[] = [];\n const sellerDescriptions = config.sellerDescriptions;\n\n if (!sellerDescriptions) {\n return results;\n }\n\n return sellerDescriptions.map((description, idx1) => {\n return (\n
    \n \n
      \n {description.bulletPoints?.map((bulletPoint, idx2) => {\n return (\n \n );\n })}\n
    \n
    \n );\n });\n }\n\n private isAdminUser(user: BusinessPartnerUser | undefined): boolean {\n return (\n !ObjectExtensions.isNullOrUndefined(user) && !StringExtensions.isNullOrEmpty(user.BusinessPartnerId) && user.IsAdmin === true\n );\n }\n\n private readonly onCheckBoxChange = (event: React.ChangeEvent) => {\n this.setState({\n termsOfServiceChecked: event.target.checked\n });\n };\n\n private readonly onToggleTermOfServiceModal = () => {\n this.setState({\n termsOfServiceModalOpened: !this.state.termsOfServiceModalOpened\n });\n };\n\n private readonly onSubmit = async (event: React.MouseEvent) => {\n const { context, data, resources } = this.props;\n const { errorMessageText, promoteToSellerSubmitSuccessMessage } = resources;\n const businessPartnerId = data.b2bUserInformation.result?.BusinessPartnerId ?? '';\n\n try {\n await promoteToSellerAsync({ callerContext: context.actionContext }, businessPartnerId);\n this.setState({\n showSubmitButton: false,\n showTermsOfService: false,\n errorMessage: undefined,\n notificationMessage: promoteToSellerSubmitSuccessMessage\n });\n } catch {\n this.setState({\n showTermsOfService: true,\n showSubmitButton: true,\n errorMessage: errorMessageText,\n notificationMessage: undefined\n });\n }\n };\n}\n\nexport default BusinessPartnerPromotion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
    \n
    {buttonText}
    \n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
    \n

    {props.resources.headingForEmptyRequestStatus}

    \n

    {props.resources.textForEmptyRequestStatus}

    \n \n \n {continueShoppingButtonTitle}\n \n \n
    \n
    \n
    \n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
    \n
    \n
    \n
    \n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
    \n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
    \n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
    \n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
    \n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
    \n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
    {renderProductImage(props)}
    \n
    \n
    {product?.Name}
    \n
    {product?.ItemId}
    \n
    \n
    \n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
    {resources.selectRatingLabel}
    \n {reviewModal.rating}\n
    \n
    \n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
    \n
    \n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
    \n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["NavMenuConstants","getCategoryImage","props","categoryImage","alttext","categoryImageUrl","generateImageUrl","navProps","context","actionContext","requestContext","apiSettings","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","undefined","_props$navProps$confi","imageData","src","React","Msdyn365","Object","assign","className","gridSettings","request","imageSettings","config","categoryImageSettings","loadFailureBehavior","role","altText","NavigationMenuRootDisabled","constructor","super","supportedLevel","four","currentLevel","zero","escapeKey","promotionalImage","_toggleNavBar","this","setState","previousState","activeMenu","isNavOpen","_createDesktopHeaderLinks","_this$props$navProps","menuItemData","length","map","link","index","_link$subMenu","subMenu","Button","onClick","menuItemId","id","key","state","linkText","_createLink","editableLink","ariaLabel","linkUrl","linkURL","openInNewTab","_bindDesktopCategoryClick","menuId","isDrawerOpen","drawerKeyValue","newPair","_objectSpread","_updateCategoryImage","categoryImageSource","option","ArrayExtensions","hasElements","promotionalContent","item","imageSource","image","push","text","additionalProperties","destinationUrl","_handleDropdownToggle","data","parentId","isOnlyMobile","isBackTrack","mobileViewLabelText","parentMenu","showCategoryImage","_handleGoBack","_handleClickOutside","event","menuNode","current","contains","target","_shouldAddFocusMenuRef","optionLinkText","_closeNavMenu","_this$menuNode$curren","children","focus","_escFunction","_this$menuNode$curren2","keyCode","_customUpdateViewport","menuItemRef","imagesource","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","screenMode","isMobile","variant","VariantType","Browser","componentDidMount","customResizeThrottledEventHandler","addThrottledEvent","window","document","addEventListener","body","componentDidUpdate","_this$menuItemRef$cur","isMobileView","componentWillUnmount","removeEventListener","render","Node","ref","title","resources","hamburgerAriaLabel","attributes","_renderCollapseMenu","Collapse","isOpen","_renderMobileMenu","_renderDesktopMenu","MenuList","MobileBackButton","MobileDescriptionContainer","MobileDescriptionLabel","Navigation","Module","classnames","tabIndex","_renderDisplay","_renderDrawerLink","StringExtensions","isNullOrWhitespace","_renderLinkMenuItem","_renderSpanMenuItem","ListItem","menuItemList","menuItem","_getFromSubMenu","_createMenuItemList","entries","_menuItem$subMenu","subMenuItem","parentMenuId","menu","one","Number","found","_renderSubMenu","_renderButtonMenuItem","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","subMenus","rootMenu","filter","MenuTypeIndexId","Retail","isEnableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","three","error","levelClassName","menuOptions","hasOptions","getMenuItem","isHavingSubmenu","Math","round","two","_renderSubMenuDrawer","toString","onMouseOver","_renderMenu","_renderLinkMenuItemLevelOne","_this$props$navProps$3","toggleButtonText","buttonText","keys","colProps","timeout","Drawer","collapseProps","openGlyph","closeGlyph","glyphPlacement","onToggle","menuSubItem","Link","contentAction","etext","getTelemetryAttributes","href","shouldOpenNewTab","onTelemetryClick","isHoverEffect","arguments","_renderPromotionalLink","Span","level","isSubmenu","_this$state$categoryI","DivContainer","ImageDivContainer","showPromotionalContent","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","_item$additionalPrope","__decorate","computed","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","allCategoryMenuText","menuSource","MenuSource","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","menuItemDatum","enabletopMenu","AccountCustomerBalanceTile","_initState","reaction","hasError","content","ErrorComponent","value","apiGenericErrorMessage","get","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","isCustomerAccountPaymentEnabled","heading","links","viewProps","moduleProps","Heading","headingTag","tag","isDetailsLinkDisplayed","LinksComponent","onTextChange","renderView","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","formatCurrency","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","_ref","_ref2","_mapEditableLinks","linkdata","editableLinks","forEach","editProps","SignUpText","LoyaltySignUp","handleHeadingChange","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","input","IssueLoyaltyInput","issueLoyalty","then","MsDyn365","isBrowser","location","catch","message","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","result","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","loading","params","isEditor","status","onEdit","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","observer","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","modal","Modal","toggle","applicationNode","returnFocusRef","returnRef","modalHeader","ModalHeader","modalFooter","ModalFooter","modalBody","ModalBody","cancelButton","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","type","onChange","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","description","errorClassName","GetMaxLength","maxLength","parsedMaxLength","parseInt","isNaN","pattern","forId","htmlFor","moduleClassName","handleParagraphChange","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","isInitialized","emailRegex","emailId","SA_FIELDS","AttributeFields","ID","errorMessages","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalidEmailError","invalid_password","invalidPasswordError","unknown_error","unknownError","EmailRegex","defaultRegex","source","viewState","isShowLoading","signIn","icon","SignInLoadingIconComponent","SignInLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","signInSection","signInSectionHeading","signInLocalAccount","localAccount","items","_renderInput","emailAddressLabelText","emailAddressAriaLabel","passwordLabelText","forgetPassword","SignInLinkComponent","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","disclaimer","SignInErrorComponent","signInButton","SignInButtonComponent","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signInB2BAccount","_renderB2BSocialAccount","b2bButtonText","b2bButtonAriaLabel","displayB2bAccountManagerSignin","signUpSection","signUpSectionHeading","signUpDescription","SignInDescriptionComponent","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","signUpButtonText","labelText","wrapper","label","SignInLabelComponent","SignInInputComponent","iconImage","button","_createImageMarkup","SignInTextComponent","_displayB2bAccountManagerSignin","imageProps","pictureClassName","shouldSkipToMainImage","observable","SignInLoading","_ref4","LocalAccount","SocialAccount","_ref3","B2BAccount","AutoSuggest","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","AutosuggestManager","attachAutosuggest","querySelector","setAttribute","_document$querySelect2","errorCallback","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","_loadMapAPI","async","storeSelectorStateManager","loadMapApi","lang","market","AddressCommon","getDefaultCountryRegionId","countryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","getStateProvinces","response","GetStateProvincesInput","getStateProvinceAction","Promise","resolve","isEmpty","address","ThreeLetterISORegionName","State","City","addCustomerAddress","updateLogisticsLocationRoleRecordId","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressTypeValue","AddressManagementInput","execAddressAction","addresses","RecordId","customerAddresses","addressPurposes","GetAddressPurposesInput","getAddressPurposesAction","addressPurpose","purpose","AddressType","LogisticsLocationRoleRecordId","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","AddressFormat","countryRegionsInfo","addressMetaData","getPrefilledAddressDropdownData","stateDefaultSelectionText","stateProvinceInfo","defaultStateText","dropdownData","getCountryFormat","getStateFormat","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","validateAddressFormat","validationError","propertyName","validationtor","isValid","getAddressFormat","addressFormatItem","name","_inputValidation","getTranformedAddress","postalCode","ZipCode","selectedState","StateName","adminDistrict","StateId","addressLine","Street","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","validationRule","regEx","RegExp","test","countryRegionInfo","_getAddressDisplayFormat","ShortName","Description","set","validationRules","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","nameDisplayItem","Name","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","Phone","isPrimaryDisplayItem","IsPrimary","AddressMetaData","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","excludedTypes","requiredFields","_init","_addItem","Input","PhoneRegex","County","Dropdown","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","Checkbox","displayType","format","includes","nameKey","replace","_validationRules","isRequired","some","rule","Required","optionalString","ruleType","itemType","_validationRule","Format","AddressOperation","itemId","isChecked","additionalAddributes","autoFocus","shouldBeAutoFocused","getRequriedAttribute","getAddessItems","selectedAddress","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","onInputChange","onDropdownChange","shouldAutoFocus","elementId","AddressInputComponent","AdressCheckboxComponent","displayData","selectedValue","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","AddressAddUpdate","editAddressHeading","addAddressHeading","onCancel","onSave","hasExternalSubmitGroup","isUpdating","addressActionResponse","AddressForm","isShowSaveButton","saveButton","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressErrorTitleComponent","AddressErrorMessageComponent","isDisabled","isShowLabel","mainClass","recordId","getDropdownItem","isSelected","shouldUseAutoFocus","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","List","isShowList","isSelectedAddress","isShowError","isInvalidAsyncState","isEditAsyncCustomerFeatureEnabled","isAsyncCustomer","isAsyncCustomerAddressCreationFeatureEnabled","Item","showItems","AddressShow","Error","isShowPrimaryButton","primaryButton","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","editButton","addressEditButtonText","addressEditButtonAriaLabel","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AddressList","_heading$headingTag","onAddAddress","handleLineItemHeadingChange","headingComponent","contextRequest","disableAddButton","ListAddress","isShowEmptyListMessage","emptyListMessage","addressEmptyListAddressMessage","addButton","addressAddButtonText","addressAddButtonAriaLabel","primaryAddressList","otherAddressList","AddressDetail","addressTypeValue","addressTypeDescription","AddressDetailItemComponent","AccountManagementAddress","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","_onSuggestionSelected","_clearAddressFields","addUpdateAddress","_this$autoSuggest","autoSuggest","_clearValidation","_dataInitialize","_data$countryRegions$","_data$addressPurposes","_data$address$result","_renderAddOrUpdateAddress","Shipping","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","_onAddressAddUpdateSubmit","_resetView","_renderListAddress","_this$props$data$cust","_goToEditAddress","_onRemoveAddress","_goToAddAddress","_onSubmitUpdatePrimaryAddress","_attachMapAutoSuggest","_this$autoSuggest2","isMapApiLoaded","onAddressAddUpdate","_onCountryChange","_onAddressUpdate","onSuccess","addressCommon","currentOperation","Update","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","TwoLetterISORegionName","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","_getStateProvinces","Add","_updateCurrentOperation","operation","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","_setDefaultCountryRegionId","channel","autoSuggestionEnabled","BingMapsEnabled","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest4","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest5","_data$featureState","_data$featureState2","_this$props$context$a2","featureState","feature","IsEnabled","accountProcessingPendingInfoMessageCanAddAddress","isShowAddresList","isShowAddOrUpdateAddress","AccountAddressManagement","showAddressList","showAddOrUpdateAddress","screenReaderNotification","action","AddressLists","BusinessAccountAddress","excludedList","_resetAddressFields","countryStates","_data$countryStates$r","Company","_updateAddress","_updateCountryRegionId","updateForm","cleanValue","_isEmpty","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","resetAddress","_request$channel","BusinessPartnerPromotionTermsParagraph","titleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","BusinessPartnerId","promoteToSellerAsync","showSubmitButton","showTermsOfService","notificationMessage","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","businessPartnerPromotionProps","Text","renderNotificationBar","sellerDescriptions","renderSellerDescriptions","termsOfServiceCheckbox","termsOfServiceLinkText","termsOfServiceAgreementText","termsOfServiceModal","horizontalPosition","verticalPosition","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","Alert","color","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","isNullOrEmpty","IsAdmin","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","locale","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","displayCategoryImage","displayPromotionalImage","ImageContainer","backButtonAriaLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","getCategoryUrl","_getViewport","innerWidth","NavigationMenuView","categoryImageSrc","imageSrc","promotionalItemImageSettings","categoryImageAltText","_handleFocusOutside","relatedTarget","_closeSubmenu","_getCategoryImage","_categoryImage$imageS","Image","i","IsSubMenu","enableMultiSupportMenu","haveSubmenu","onFocus","hoverEffect","isParent","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","product","catalogId","ProductComparisonState","instance","accountInformation","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","products","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","onClickHandler","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","cookies","isConsentGiven","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","_props$data$operation","b2bRequestsStatus","table","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageAriaLabel","imageClass","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","cropFocalRegion","renderProductImage","ItemId","signInMessage","paragraph","RichTextComponent","reviewModal","form","inputRow","selectRatingLabel","rating","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","createReviewModal"],"sourceRoot":""}