{"version":3,"file":"static/js/15.2a34f1026a18adeae1ed.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 MaxLength = 'MaxLength'\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 maxLengthRegEx: string = '^.{0,20}$';\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 case AddressValidationRuleType.MaxLength: {\n if (type === AddressItemType.Phone) {\n validationRules.push(this._validationRule(ruleType, this.maxLengthRegEx, message));\n }\n\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 addressPhoneMaxLengthErrorMessage?: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 const formattedValue = name === 'Phone' ? value.toString().trim() : value;\n set(this.addUpdateAddress, { [name]: formattedValue });\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","maxLengthRegEx","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","MaxLength","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","formattedValue","trim","_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":""}