{"version":3,"file":"static/js/8.90586a80eb61fee6fad0.chunk.js","mappings":"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AI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,2QChOFC,EAA2C,IAA6B,IAA5B,cAAEC,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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/country-selector/country-selector.tsx?a8bc","webpack://Msdyn365.Commerce.Online/./src/modules/country-selector/country-selector.view.tsx?44d3","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-management-address.view.tsx?2098","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/account-profile.view.tsx?555a","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/components/navigation-menu-utilities.tsx?ca80","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/navigation-menu.view.tsx?2c75","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/ratings-histogram.view.tsx?62be","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/sign-up.view.tsx?e5d6","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/write-review.view.tsx?10da","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/account-customer-balance.view.tsx?70d2","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.tsx?4fcb","webpack://Msdyn365.Commerce.Online/./src/modules/country-picker/country-picker.view.tsx?0036","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.tsx?5602","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://Msdyn365.Commerce.Online/./src/modules/subscribe/subscribe.tsx?9fea","webpack://Msdyn365.Commerce.Online/./src/modules/subscribe/subscribe.view.tsx?19c8","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.tsx?9ac6","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.view.tsx?a99d","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/components/links.tsx?c969","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/tile-list-item.tsx?114a","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/tile-list-item.view.tsx?19a8","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/carticon.component.tsx?3c7c","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, ICountrySelectorData } from './country-selector.data';\r\nimport { ICmsNavItemsData, ICountrySelectorProps, ISubMenusData } from './country-selector.props.autogenerated';\r\n\r\nexport interface ICountrySelectorViewProps extends ICountrySelectorProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer: INodeProps;\r\n MobileDescriptionContainer: INodeProps;\r\n MobileBackButton: INodeProps;\r\n MobileDescriptionLabel: INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n DivContainer?: INodeProps;\r\n ImageDivContainer?: INodeProps;\r\n countrySelectorIntroText: string;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CountrySelector component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CountrySelector extends React.PureComponent, INavigationMenuState> {\r\n private static CMSItemIdInit: number = 1000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: ICountrySelectorProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = { isMobile: this.isMobile };\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames(\r\n 'ms-nav menu--country-selector',\r\n this.props.config.className,\r\n this.state.isMobile ? 'mobile-vp' : 'desktop-vp'\r\n ),\r\n tag: 'nav',\r\n role: 'navigation',\r\n 'aria-label': this.props.config.countrySelectorAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n tag: 'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link'\r\n },\r\n DivContainer: {\r\n tag: 'div',\r\n className: 'ms-nav__feature'\r\n },\r\n ImageDivContainer: {\r\n tag: 'div',\r\n className: 'category-image',\r\n role: 'tabpanel'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag: 'button',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData) => mergedData.push(this._constructMenuItemData(item)));\r\n }\r\n return mergedData;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructMenuItemData(cmsItem?: ICmsNavItemsData): IMenuItemData {\r\n return {\r\n id: CountrySelector.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(item));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n // always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default CountrySelector;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ICountrySelectorViewProps } from './country-selector';\r\nimport { IMenuItemData } from './country-selector.data';\r\nimport {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICountrySelectorConfig } from './country-selector.props.autogenerated';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class CountrySelectorView extends React.PureComponent {\r\n private currentLevel: number = 0;\r\n private escapeKey: number = 27;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n constructor(props: ICountrySelectorViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n categoryImageAltText: ''\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return {isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation, config } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData) => {\r\n return this._renderDrawerMenu(menuItem, config);\r\n })}\r\n \r\n );\r\n }\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData, config: ICountrySelectorConfig): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem, config);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData, config: ICountrySelectorConfig): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const toggleButtonImg = menuItem.imageSource;\r\n return (\r\n \r\n
\r\n {config.countrySelectorIntroText &&

{config.countrySelectorIntroText}

}\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined, linkImg: string | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n {linkImg && {''}}\r\n \r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({\r\n parentMenu: undefined,\r\n mobileViewLabelText: menuItemData[i].linkText\r\n });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({\r\n parentMenu: item && item.id,\r\n mobileViewLabelText: subMenus[i].linkText\r\n });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = false;\r\n const multiLevelSupportedMenu = 2;\r\n // const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n // this.props.context.telemetry.error(\r\n // \"Navigation Active menu content is empty, module wont render.\"\r\n // );\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n // this.props.context.telemetry.error(\r\n // \"Navigation Submenu content is empty, module wont render.\"\r\n // );\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n {option.imageSource && {''}}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const currentSite = typeof window !== 'undefined' && `${location.origin}${this.props.context.request.sitePath}`;\r\n const currentLang = currentSite === option.linkURL ? true : false;\r\n return (\r\n \r\n {imagesource && {''}}\r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, config } = this.props;\r\n const DivContainerClass = this.currentLevel > 2 ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n \r\n {config.countrySelectorIntroText &&

{config.countrySelectorIntroText}

}\r\n\r\n {menuOptions}\r\n
\r\n
\r\n );\r\n }\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n}\r\n\r\nexport default CountrySelectorView;\r\n","// tslint:disable-next-line:variable-name\r\nexport const convert_a2_to_a3 = {\r\n AF: 'AFG',\r\n AX: 'ALA',\r\n AL: 'ALB',\r\n DZ: 'DZA',\r\n AS: 'ASM',\r\n AD: 'AND',\r\n AO: 'AGO',\r\n AI: 'AIA',\r\n AQ: 'ATA',\r\n AG: 'ATG',\r\n AR: 'ARG',\r\n AM: 'ARM',\r\n AW: 'ABW',\r\n AU: 'AUS',\r\n AT: 'AUT',\r\n AZ: 'AZE',\r\n BS: 'BHS',\r\n BH: 'BHR',\r\n BD: 'BGD',\r\n BB: 'BRB',\r\n BY: 'BLR',\r\n BE: 'BEL',\r\n BZ: 'BLZ',\r\n BJ: 'BEN',\r\n BM: 'BMU',\r\n BT: 'BTN',\r\n BO: 'BOL',\r\n BA: 'BIH',\r\n BW: 'BWA',\r\n BV: 'BVT',\r\n BR: 'BRA',\r\n IO: 'IOT',\r\n BN: 'BRN',\r\n BG: 'BGR',\r\n BF: 'BFA',\r\n BI: 'BDI',\r\n KH: 'KHM',\r\n CM: 'CMR',\r\n CA: 'CAN',\r\n CV: 'CPV',\r\n KY: 'CYM',\r\n CF: 'CAF',\r\n TD: 'TCD',\r\n CL: 'CHL',\r\n CN: 'CHN',\r\n CX: 'CXR',\r\n CC: 'CCK',\r\n CO: 'COL',\r\n KM: 'COM',\r\n CG: 'COG',\r\n CD: 'COD',\r\n CK: 'COK',\r\n CR: 'CRI',\r\n CI: 'CIV',\r\n HR: 'HRV',\r\n CU: 'CUB',\r\n CY: 'CYP',\r\n CZ: 'CZE',\r\n DK: 'DNK',\r\n DJ: 'DJI',\r\n DM: 'DMA',\r\n DO: 'DOM',\r\n EC: 'ECU',\r\n EG: 'EGY',\r\n SV: 'SLV',\r\n GQ: 'GNQ',\r\n ER: 'ERI',\r\n EE: 'EST',\r\n ET: 'ETH',\r\n FK: 'FLK',\r\n FO: 'FRO',\r\n FJ: 'FJI',\r\n FI: 'FIN',\r\n FR: 'FRA',\r\n GF: 'GUF',\r\n PF: 'PYF',\r\n TF: 'ATF',\r\n GA: 'GAB',\r\n GM: 'GMB',\r\n GE: 'GEO',\r\n DE: 'DEU',\r\n GH: 'GHA',\r\n GI: 'GIB',\r\n GR: 'GRC',\r\n GL: 'GRL',\r\n GD: 'GRD',\r\n GP: 'GLP',\r\n GU: 'GUM',\r\n GT: 'GTM',\r\n GG: 'GGY',\r\n GN: 'GIN',\r\n GW: 'GNB',\r\n GY: 'GUY',\r\n HT: 'HTI',\r\n HM: 'HMD',\r\n VA: 'VAT',\r\n HN: 'HND',\r\n HK: 'HKG',\r\n HU: 'HUN',\r\n IS: 'ISL',\r\n IN: 'IND',\r\n ID: 'IDN',\r\n IR: 'IRN',\r\n IQ: 'IRQ',\r\n IE: 'IRL',\r\n IM: 'IMN',\r\n IL: 'ISR',\r\n IT: 'ITA',\r\n JM: 'JAM',\r\n JP: 'JPN',\r\n JE: 'JEY',\r\n JO: 'JOR',\r\n KZ: 'KAZ',\r\n KE: 'KEN',\r\n KI: 'KIR',\r\n KP: 'PRK',\r\n KR: 'KOR',\r\n KW: 'KWT',\r\n KG: 'KGZ',\r\n LA: 'LAO',\r\n LV: 'LVA',\r\n LB: 'LBN',\r\n LS: 'LSO',\r\n LR: 'LBR',\r\n LY: 'LBY',\r\n LI: 'LIE',\r\n LT: 'LTU',\r\n LU: 'LUX',\r\n MO: 'MAC',\r\n MK: 'MKD',\r\n MG: 'MDG',\r\n MW: 'MWI',\r\n MY: 'MYS',\r\n MV: 'MDV',\r\n ML: 'MLI',\r\n MT: 'MLT',\r\n MH: 'MHL',\r\n MQ: 'MTQ',\r\n MR: 'MRT',\r\n MU: 'MUS',\r\n YT: 'MYT',\r\n MX: 'MEX',\r\n FM: 'FSM',\r\n MD: 'MDA',\r\n MC: 'MCO',\r\n MN: 'MNG',\r\n ME: 'MNE',\r\n MS: 'MSR',\r\n MA: 'MAR',\r\n MZ: 'MOZ',\r\n MM: 'MMR',\r\n NA: 'NAM',\r\n NR: 'NRU',\r\n NP: 'NPL',\r\n NL: 'NLD',\r\n AN: 'ANT',\r\n NC: 'NCL',\r\n NZ: 'NZL',\r\n NI: 'NIC',\r\n NE: 'NER',\r\n NG: 'NGA',\r\n NU: 'NIU',\r\n NF: 'NFK',\r\n MP: 'MNP',\r\n NO: 'NOR',\r\n OM: 'OMN',\r\n PK: 'PAK',\r\n PW: 'PLW',\r\n PS: 'PSE',\r\n PA: 'PAN',\r\n PG: 'PNG',\r\n PY: 'PRY',\r\n PE: 'PER',\r\n PH: 'PHL',\r\n PN: 'PCN',\r\n PL: 'POL',\r\n PT: 'PRT',\r\n PR: 'PRI',\r\n QA: 'QAT',\r\n RE: 'REU',\r\n RO: 'ROU',\r\n RU: 'RUS',\r\n RW: 'RWA',\r\n BL: 'BLM',\r\n SH: 'SHN',\r\n KN: 'KNA',\r\n LC: 'LCA',\r\n MF: 'MAF',\r\n PM: 'SPM',\r\n VC: 'VCT',\r\n WS: 'WSM',\r\n SM: 'SMR',\r\n ST: 'STP',\r\n SA: 'SAU',\r\n SN: 'SEN',\r\n RS: 'SRB',\r\n SC: 'SYC',\r\n SL: 'SLE',\r\n SG: 'SGP',\r\n SK: 'SVK',\r\n SI: 'SVN',\r\n SB: 'SLB',\r\n SO: 'SOM',\r\n ZA: 'ZAF',\r\n GS: 'SGS',\r\n ES: 'ESP',\r\n LK: 'LKA',\r\n SD: 'SDN',\r\n SR: 'SUR',\r\n SJ: 'SJM',\r\n SZ: 'SWZ',\r\n SE: 'SWE',\r\n CH: 'CHE',\r\n SY: 'SYR',\r\n TW: 'TWN',\r\n TJ: 'TJK',\r\n TZ: 'TZA',\r\n TH: 'THA',\r\n TL: 'TLS',\r\n TG: 'TGO',\r\n TK: 'TKL',\r\n TO: 'TON',\r\n TT: 'TTO',\r\n TN: 'TUN',\r\n TR: 'TUR',\r\n TM: 'TKM',\r\n TC: 'TCA',\r\n TV: 'TUV',\r\n UG: 'UGA',\r\n UA: 'UKR',\r\n AE: 'ARE',\r\n GB: 'GBR',\r\n US: 'USA',\r\n UM: 'UMI',\r\n UY: 'URY',\r\n UZ: 'UZB',\r\n VU: 'VUT',\r\n VE: 'VEN',\r\n VN: 'VNM',\r\n VG: 'VGB',\r\n VI: 'VIR',\r\n WF: 'WLF',\r\n EH: 'ESH',\r\n YE: 'YEM',\r\n ZM: 'ZMB',\r\n ZW: 'ZWE'\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\nimport { convert_a2_to_a3 } from '../utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const [hasAddressError, setHasAddressError] = React.useState(false);\r\n React.useEffect(() => {\r\n setHasAddressError(error.title ? true : false);\r\n }, [error.title]);\r\n // console.log(`${currency} ${localeString} ${locale}`);\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us', 'ca'],\r\n select: ['USA', 'CAN']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_3', id: 'shipping_addresscity' },\r\n { googleComponent: 'administrative_area_level_1', id: 'shipping_addressstate' },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'country', id: 'shipping_addressthreeletterisoregionname' },\r\n { googleComponent: 'administrative_area_level_2', id: 'shipping_addresscounty' }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: { country: countriesAvail[locale] && countriesAvail[locale].autocomplete }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n console.log(place);\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n console.log(formValue);\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n console.log(selectedValue);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n console.log(input.value);\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = document.querySelector('.msc-address-form__button-save.msc-btn') as HTMLButtonElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid =\r\n locale === 'it' && (county.value === '' || county.value.length > 2 || !/[^a-z]/i.test(county.value) === false)\r\n ? false\r\n : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n }, []);\r\n\r\n // Auto select of DEF value in state select on italian site\r\n React.useEffect(() => {\r\n const event = new Event('change', { bubbles: true });\r\n if (locale === 'it' && (document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement)) {\r\n const optionDEF = document.querySelector('#shipping_addressstate option[value=DEF]') as HTMLOptionElement;\r\n optionDEF.setAttribute('aria-selected', 'true');\r\n (optionDEF.parentNode as HTMLSelectElement).value = 'DEF';\r\n (optionDEF.parentNode as HTMLSelectElement).dispatchEvent(event);\r\n (optionDEF.parentNode as HTMLSelectElement).disabled = Boolean('true');\r\n }\r\n }, [document.querySelector('#shipping_addressstate option[value=DEF]')]);\r\n\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementsByClassName('msc-address-form')[0]]);\r\n\r\n // Refesh once saving processed\r\n let updatedCount = 0;\r\n React.useEffect(() => {\r\n ++updatedCount;\r\n if (updatedCount > 1) {\r\n location.reload();\r\n }\r\n }, [document.querySelector('.msc-address-form__button-updating')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasAddressError && (\r\n \r\n

{resources.addressErrorMessage}

\r\n
\r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n IAccountPreference,\r\n IAccountPreferences,\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n nameSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection\r\n } = props;\r\n React.useEffect(() => {\r\n if (document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-GenericMarketing')[0].innerHTML =\r\n // @ts-ignore\r\n props.config.textGenericMarketing;\r\n }\r\n if (document.getElementsByClassName('ms-account-profile__attributes-ThirdParty').length) {\r\n // @ts-ignore\r\n // tslint:disable-next-line:no-inner-html\r\n document.getElementsByClassName('ms-account-profile__attributes-ThirdParty')[0].innerHTML = props.config.textThirdParty;\r\n }\r\n }, []);\r\n return (\r\n \r\n {heading}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {accountProfileWrapper && (\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/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 * 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}\r\n\r\n//TODO clean\r\n/* interface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n categoryImageAltText: string;\r\n drawerKeyValue: IDictionary;\r\n mobileViewLabelText?: string;\r\n }\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: INavigationMenuViewProps & INavigationMenuProps<{}>,\r\n categoryImage: string,\r\n alttext: string\r\n): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n\r\n // FROM Adventure-works\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. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { INavigationMenuProps, ICmsNavItemsData } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Drawer,\r\n ICollapseProps,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n IDrawerState\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, { IImageData } from '@msdyn365-commerce/core';\r\nimport { getCategoryImage, INavigationState, NavMenuConstants } from './components/navigation-menu-utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent, INavigationState> {\r\n private currentLevel: number = 0;\r\n\r\n private readonly _positionInSetOffset: number = 1;\r\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\r\n private readonly menuNode: React.RefObject;\r\n //TODO remove\r\n //private readonly menuItemRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n private readonly promotionalImage: IImageData[] = [];\r\n private readonly payLoad: IPayLoad;\r\n\r\n //TODO validate this\r\n //private readonly supportedLevel: number = 2;\r\n private readonly supportedLevel: number = NavMenuConstants.four;\r\n\r\n constructor(props: INavigationMenuViewProps & INavigationMenuProps<{}>) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, drawerKeyValue: {} };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._layout2022closeSubmenu = this._layout2022closeSubmenu.bind(this);\r\n this._layout2022escFunction = this._layout2022escFunction.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n const { menuItemData } = this.props;\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\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n //FIXME change if\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022) {\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n } else {\r\n document.body && document.addEventListener('keydown', (this._layout2022escFunction as unknown) as EventListener, false);\r\n document.body && document.body.addEventListener('mousedown', this._layout2022handleClickOutside);\r\n }\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n //FIXME change if\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022) {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside);\r\n } else {\r\n document.body && document.removeEventListener('keydown', (this._layout2022escFunction as unknown) as EventListener, false);\r\n document.body && document.body.removeEventListener('mousedown', this._layout2022handleClickOutside);\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n\r\n this.currentLevel = 1;\r\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\r\n }\r\n\r\n /**\r\n * Method to render mobile menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, menuItemData, Navigation } = this.props;\r\n return (\r\n \r\n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\r\n //FIXME invert the condition\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022)\r\n return this._renderDrawerMenu(menuItem);\r\n else return this._layout2022renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\r\n })}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render desktop menu.\r\n * @returns Jsx element.\r\n */\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n //FIXME invert condition\r\n if (this.props.config.layout2022 === undefined || !this.props.config.layout2022)\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n else\r\n return (\r\n \r\n \r\n {this._layout2022renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemData): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0) {\r\n return this._renderDrawer(menuItem);\r\n } else {\r\n return this._renderLinkMenuItem(menuItem);\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemData): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\r\n return this._renderDrawerLink(menuSubItem);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return {linkText};\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(item);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n /*if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n return null;\r\n }*/\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n //const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { DivContainer, MenuList, showCategoryImage } = this.props;\r\n this.currentLevel = 1;\r\n if (showCategoryImage) {\r\n return (\r\n \r\n \r\n {menuOptions}\r\n \r\n {\r\n //TODO remove\r\n /* \r\n {this.state.categoryImage !== undefined && this.state.categoryImage !== null && this._getCategoryImage(this.state.categoryImage)}\r\n */\r\n }\r\n \r\n );\r\n }\r\n return (\r\n \r\n {menuOptions}\r\n \r\n );\r\n }\r\n //TODO remove\r\n\r\n // private _updateCategoryImage = (categoryImage: string) => () => {\r\n // this.setState({\r\n // categoryImage: categoryImage !== '' ? categoryImage : 'empty'\r\n // });\r\n //}\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n //TODO remove\r\n // if (this.props.showCategoryImage) {\r\n // this._updateCategoryImage(data.imageSource!)();\r\n // }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n //TODO remove\r\n // private _getCategoryImage = (categoryImage: string): React.ReactNode | null => {\r\n\r\n // const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\r\n // const defaultImageSettings: IImageSettings = {\r\n // viewports: {\r\n // xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n // sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n // md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n // lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n // },\r\n // lazyload: true\r\n // };\r\n // if (categoryImageUrl !== undefined) {\r\n // const ImageData: IImageData = { src: categoryImageUrl };\r\n // return (\r\n // \r\n // );\r\n // }\r\n // return null;\r\n // }\r\n\r\n /////////////////////////////////////////////////\r\n /////// LAYOUT 2022 ////////////////////////////\r\n ////////////////////////////////////////////////\r\n\r\n /**\r\n * Method to render drawer menu.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\r\n return this._layout2022renderDrawer(menuItem, setSize, posinset, true);\r\n }\r\n return this._layout2022renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\r\n }\r\n\r\n /**\r\n * Method to render drawer component.\r\n * @param menuItem -Menuitem data.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number, firstLevel?: boolean): JSX.Element | null {\r\n const toggleButtonText = menuItem.linkText;\r\n const keyValue = this.state.drawerKeyValue;\r\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\r\n const keys = keyValue !== undefined ? keyValue : {};\r\n const { isMobileView } = this.props;\r\n\r\n let isDrawerOpen = false;\r\n if (keys[buttonText]) {\r\n isDrawerOpen = true;\r\n }\r\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\r\n\r\n\r\n const bottomLinkData: ICmsNavItemsData[] = firstLevel ? this.props.config.cmsNavItems?.filter(navItem => navItem.linkText === buttonText) || [] : [];\r\n const bottomAllLink: IMenuItemData = {\r\n linkText: bottomLinkData[0]?.bottomLinkText || \"\",\r\n linkURL: bottomLinkData[0]?.bottomLinkUrl?.destinationUrl || \"\",\r\n shouldOpenNewTab: false,\r\n }\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\r\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\r\n return this._layout2022renderDrawer(\r\n menuSubItem,\r\n bottomAllLink.linkText === \"\" ? menuItem.subMenu?.length : menuItem.subMenu!.length + 1,\r\n currentPos + this._positionInSetOffset\r\n );\r\n }\r\n return this._layout2022renderDrawerLink(\r\n menuSubItem,\r\n bottomAllLink.linkText === \"\" ? menuItem.subMenu?.length : menuItem.subMenu!.length + 1,\r\n currentPos + this._positionInSetOffset\r\n );\r\n })}\r\n {bottomAllLink.linkText === \"\" ? <> :\r\n this._layout2022renderDrawerLink(\r\n bottomAllLink,\r\n menuItem.subMenu!.length + 1,\r\n menuItem.subMenu!.length + this._positionInSetOffset\r\n )\r\n }\r\n
\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link.\r\n * @param linkText -Text on Menu link.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderLinkText(\r\n linkText: string | undefined,\r\n setSize: number | undefined,\r\n posinset: number | undefined\r\n ): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render drawer link.\r\n * @param item -Single Menuitem.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n return this._layout2022renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return this._layout2022renderSpanMenuItem(item);\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to generate menu.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n this.setState({ parentMenu: undefined });\r\n break;\r\n }\r\n menuItem = this._layout2022getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._layout2022createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._layout2022createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n /**\r\n * Method to get data for submenu.\r\n * @param item -Single Menuitem.\r\n * @returns IMenuItemData.\r\n */\r\n private _layout2022getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item?.id });\r\n return subMenus[i];\r\n }\r\n const found = this._layout2022getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to create item list.\r\n * @param menuItemData -Single Menuitem.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022createMenuItemList(menuItemData: IMenuItemData, index?: number, level?: number): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._layout2022renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText);\r\n }\r\n return (\r\n <>\r\n {this._layout2022renderButtonMenuItem(menuItemData)}\r\n {this._layout2022renderSubMenu(menuItemData.subMenu, menuItemData.id, undefined, menuItemData.linkText, true)}\r\n \r\n );\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._layout2022renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._layout2022renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _layout2022renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean, nameParentElement?: string, firstLevel?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const subMenuLevel = 3;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n //this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n //this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n\r\n const bottomLinkData: ICmsNavItemsData[] = nameParentElement ? this.props.config.cmsNavItems?.filter(navItem => navItem.linkText === nameParentElement) || [] : [];\r\n const bottomLinkDataFiltered: ICmsNavItemsData[] = bottomLinkData.filter(navItem => navItem.bottomLinkText != undefined) || [];\r\n const bottomLinkPresent: boolean = firstLevel && bottomLinkDataFiltered.length > 0 || false;\r\n const bottomMenuLink: JSX.Element | null = bottomLinkPresent\r\n ? this._layout2022renderLinkMenuItem({\r\n linkText: bottomLinkData[0]?.bottomLinkText || \"\",\r\n linkURL: bottomLinkData[0]?.bottomLinkUrl?.destinationUrl || \"\",\r\n shouldOpenNewTab: false,\r\n })\r\n : null;\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\r\n let menuItem: JSX.Element | null;\r\n\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._layout2022renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL\r\n ? this._layout2022renderLinkMenuItem(option, idx)\r\n : this._layout2022renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._layout2022renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._layout2022renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu, bottomLinkPresent, bottomMenuLink);\r\n }\r\n\r\n /**\r\n * Method to render button menu item.\r\n * @param option -Single Menuitem.\r\n * @param activeMenu -Active menu number.\r\n * @param index -Active menu index.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render link menu item.\r\n * @param option -Single Menuitem.\r\n * @param index -Active menu index.\r\n * @param hoverEffect -Active menu effect.\r\n * @param isParent -Is parent menu.\r\n * @param setSize -Setsize data.\r\n * @param posinset -Current position.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderLinkMenuItem(\r\n option: IMenuItemData,\r\n index?: number,\r\n hoverEffect: boolean = true,\r\n isParent: boolean = false,\r\n setSize?: number,\r\n posinset?: number\r\n ): JSX.Element | null {\r\n const { Link, isMobileView } = this.props;\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 /**\r\n * Method to render promotional link.\r\n * @param linkText -Link text.\r\n * @param linkUrl -Link url.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render span menu item.\r\n * @param option -Single Menu Item.\r\n * @param index -Index.\r\n * @param isParent -Is parent menu.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to render menu.\r\n * @param level -Menu level.\r\n * @param menuOptions -Menu lists.\r\n * @param currentItem -Menu current.\r\n * @param submenu -Mneu has submenu or not.\r\n * @returns Jsx element.\r\n */\r\n private _layout2022renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean, bottomLinkAvail?: boolean, bottomLink?: JSX.Element | null): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass =\r\n this.currentLevel > NavMenuConstants.two || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = NavMenuConstants.one;\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\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n
\r\n {categoryImageDisplay &&\r\n ArrayExtensions.hasElements(categoryImages) &&\r\n categoryImages.map(item => (\r\n \r\n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\r\n {promotionalContentDisplay &&\r\n this._layout2022renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n
\r\n {bottomLinkAvail ?\r\n (<>\r\n
\r\n
\r\n {bottomLink}\r\n
\r\n )\r\n : <> \r\n\r\n }\r\n\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Method to handle dropdwon change.\r\n * @param data -Menuitem data.\r\n * @param parentId -Menu parent.\r\n * @returns Jsx element.\r\n */\r\n private readonly _layout2022handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._layout2022updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n parentMenu: parentId\r\n });\r\n }\r\n\r\n this._layout2022resetFocus();\r\n };\r\n\r\n /**\r\n * Method to call when focus lost from menu.\r\n */\r\n private readonly _layout2022resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _layout2022handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState({\r\n activeMenu: undefined,\r\n categoryImage: null\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle close submenu event.\r\n */\r\n private _layout2022closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined });\r\n }\r\n }\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param event -HTML event.\r\n */\r\n private readonly _layout2022escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n if (!this.props.isMobileView) {\r\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\r\n for (const item of navDrawerList) {\r\n const navDrawerButton = item.firstChild as HTMLButtonElement;\r\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\r\n navDrawerButton.focus();\r\n }\r\n }\r\n }\r\n this._layout2022closeSubmenu();\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle escape key event.\r\n * @param drawerState -HTML event.\r\n */\r\n private readonly _layout2022onDrawerChange = (drawerState: IDrawerState) => {\r\n const { drawerKeyValue } = this.state;\r\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\r\n const newPair = { [drawerText]: drawerState.isOpen };\r\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\r\n };\r\n\r\n /**\r\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 _layout2022updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\r\n const linkText = option.linkText ? option.linkText : '';\r\n const promotionalImage: 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 ////////// CLASS///////////////////////\r\n //////////////////////////////////\r\n}\r\nexport default NavigationMenuView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst RatingsHistogramView: React.FC = props => {\r\n const { /* heading, */ histogramItems, histogramProps, moduleProps } = props;\r\n // @ts-ignore\r\n const title = props.resources.ratingReviewsText ?? '';\r\n return (\r\n \r\n

{title}

\r\n {_averageRating(props)}\r\n \r\n {histogramItems.map((item, index) => {\r\n return histogramItem(item, 5 - index);\r\n })}\r\n \r\n
\r\n );\r\n};\r\n\r\nconst getStar = (star: number, value: number): string => {\r\n if (star - value <= 0) return '__star';\r\n else if (star - value > 0 && star - value < 1) return '__half-star';\r\n else return '__empty-star';\r\n};\r\n\r\nconst _renderStars = (value: number, className?: string) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst _averageRating = (props: IRatingsHistogramViewProps) => {\r\n // @ts-ignore\r\n const avRating = props?.averageRating?.props?.avgRating ?? 0;\r\n // @ts-ignore\r\n const totalReviews = props?.averageNumber?.props?.summary?.reviewsCount ?? 0;\r\n const ratingsLabel = props?.resources?.ratingReviewsText ?? '';\r\n return (\r\n
\r\n
\r\n {props.context.cultureFormatter.formatNumber(avRating)}\r\n /5\r\n
\r\n
\r\n {`${totalReviews} ${ratingsLabel}`}\r\n {_renderStars(avRating, 'heading')}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst histogramItem = (props: IHistogramItemViewProps, starsNumber: number) => {\r\n return (\r\n \r\n {/* {props.starLabel} */}\r\n {_renderStars(starsNumber, 'histogram')}\r\n {props.bar}\r\n {/* {props.percentage} */}\r\n \r\n );\r\n};\r\n\r\nexport default RatingsHistogramView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n ISignUpEmailVerification,\r\n ISignUpItem,\r\n ISignUpLoading,\r\n ISignUpLocalAccount,\r\n ISignUpViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/sign-up/sign-up';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\r\n return (\r\n <>\r\n \r\n {successMessage &&\r\n successMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((message: React.ReactNode) => {\r\n return <>{message};\r\n })}\r\n \r\n {buttons &&\r\n buttons.map((button: React.ReactNode) => {\r\n return <>{button};\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\nconst LocalAccount: React.FC = (\r\n { localAccount, items, emailVerification, buttons, errorMessage, disclaimer },\r\n props\r\n) => {\r\n const europe = ['/fr', '/de'];\r\n const locale = props?.context?.request?.locale;\r\n const uiLocales = props?.context?.request?.query.ui_locales;\r\n const regionCRM = europe.includes(uiLocales) ? uiLocales : props.config.RegionCRM;\r\n\r\n const [birthDate, setBirthDate] = React.useState('');\r\n const [formatDateState, setFormatDateState] = React.useState(true);\r\n const pattern = /^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((1[6789]|[2-9][0-9])[0-9]{2}\\/(0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^((16|[248][048]|[3579][26])00)|(1[6789]|[2-9][0-9])(0[48]|[13579][26]|[2468][048])\\/02\\/(0[1-9]|1[0-9]|2[0-9])$|^(1[6789]|[2-9][0-9])[0-9]{2}\\/02\\/(0[1-9]|1[0-9]|2[0-8])$/gm;\r\n const patternUS = /^((0[13578]|1[02])\\/(0[1-9]|[12][0-9]|3[01]))$|^((0[469]|11)\\/(0[1-9]|[12][0-9]|30))$|^02\\/(0[1-9]|1[0-9]|2[0-9])$/gm;\r\n\r\n const checkDate = (event: React.KeyboardEvent) => {\r\n const value = event.currentTarget.value;\r\n const today = new Date();\r\n if (value !== '' && (!value.match(locale !== 'en-US' ? pattern : patternUS) || today < new Date(value))) {\r\n setFormatDateState(false);\r\n } else {\r\n setFormatDateState(true);\r\n }\r\n if (locale === 'en-US') {\r\n setBirthDate(`1900/${value}`);\r\n }\r\n };\r\n if (typeof window !== 'undefined') {\r\n const signUpButton: HTMLElement = document.getElementById('continue') as HTMLElement;\r\n console.log(document.getElementById('continue'));\r\n if (signUpButton !== undefined) {\r\n signUpButton.onclick = e => {\r\n if (!formatDateState) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n }\r\n }\r\n\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignUpItem) => {\r\n if (item.key === 'email' && emailVerification.isRequired) {\r\n return (\r\n \r\n \r\n
\r\n \r\n {formatDateState === false ? (\r\n

{props.resources.birthdayErrorText}

\r\n ) : (\r\n ''\r\n )}\r\n {locale !== 'en-US' ? (\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n ) : (\r\n <>\r\n checkDate(e)}\r\n onPaste={e => e.preventDefault()}\r\n />\r\n \r\n \r\n )}\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {props.config.renderThirdPartyPrivacy && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n
\r\n );\r\n};\r\n\r\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignUpView: React.FC = props => {\r\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n {heading}\r\n {LocalAccount(signUpLocalAccount, props)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignUpView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// import { IContentBlockViewProps } from '@msdyn365-commerce-modules/content-block/src/modules/content-block/./content-block';\r\nimport { IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/modules/write-review/write-review';\r\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews/src/common/review-modal';\r\nimport { Module, Node, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const { heading, /* signInMessage, */ signInButton, modalToggle, reviewModal, moduleProps } = props;\r\n const isAuthenticated = props.context.request.user.isAuthenticated;\r\n // @ts-ignore\r\n //const reviewButtonLabel = moduleProps?.moduleProps?.resources?.reviewButtonLabel ?? '';\r\n //const customSignInButton = signInButton;\r\n // @ts-ignore\r\n //customSignInButton.props.text = reviewButtonLabel;\r\n // const test = { ...moduleProps };\r\n // @ts-ignore\r\n moduleProps.moduleProps.resources.signInLabel = moduleProps.moduleProps.resources.reviewButtonLabel;\r\n React.useEffect(() => {\r\n const button = document.getElementsByClassName('ms-write-review__sign-in-btn')[0];\r\n if (button) {\r\n button.setAttribute('style', 'visibility: visible');\r\n }\r\n }, []);\r\n return React.createElement(\r\n Module,\r\n Object.assign({}, moduleProps),\r\n heading,\r\n !isAuthenticated\r\n ? React.createElement(React.Fragment, null, null, signInButton)\r\n : React.createElement(React.Fragment, null, modalToggle, createReviewModal(reviewModal, moduleProps))\r\n );\r\n /* return (React.createElement(Module, Object.assign({}, moduleProps),\r\n heading,\r\n !isAuthenticated ? React.createElement(React.Fragment, null,\r\n signInMessage,\r\n signInButton) : React.createElement(React.Fragment, null,\r\n modalToggle,\r\n createReviewModal(reviewModal, moduleProps)))); */\r\n};\r\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps) => {\r\n return React.createElement(\r\n Module,\r\n Object.assign({}, props.modal, moduleProps),\r\n props.modalHeader,\r\n React.createElement(\r\n Node,\r\n Object.assign({}, props.modalBody),\r\n React.createElement(\r\n Node,\r\n Object.assign({}, props.form),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.rating, props.ratingLabel),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.titleLabel, props.titleInput),\r\n React.createElement(Node, Object.assign({}, props.inputRow), props.textLabel, props.textInput),\r\n props.privacyPolicyUrl,\r\n props.error\r\n )\r\n ),\r\n React.createElement(Node, Object.assign({}, props.modalFooter), props.submitButton, props.cancelButton)\r\n );\r\n};\r\nexport default ContentBlockView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\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\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \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 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\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 { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
\n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\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 { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n max,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n max: number | undefined,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

\n {title.titlePrefix}\n {title.titleText}({title.titleCount})\n

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\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 React, { ReactNode } from 'react';\n\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n {categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\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 { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps, ITitleData } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const viewProps = {\n ...this.props,\n title: InteractiveFeatureCollection._createHeading(title),\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default InteractiveFeatureCollection;\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 React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, isOboRequest, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n lg: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n xl: { q: 'w=315&h=315&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.RecordId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.RecordId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\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 { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = {};\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.RecordId)\n .map(\n product =>\n new ProductInput(\n product.RecordId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(): void {\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\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 { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IInvoiceErrorProps extends IComponentProps {\n messageHeader?: string;\n errorMessage?: string;\n otherError?: string;\n showError: boolean;\n payInvoiceErrorModalOpen: boolean;\n\n errorDialogHeader: string;\n errorDialogBodyErrorTitle: string;\n errorDialogBodyErrorDescription: string;\n errorDialogFooterGoToCartButtonText: string;\n errorDialogFooterCancelButtonText: string;\n cartUrl: string;\n\n setPayInvoiceErrorModalClose(): void;\n}\n\nexport interface IInvoiceErrorComponent extends IComponent {}\n\nexport const InvoiceError: React.FC = ({\n messageHeader,\n errorMessage,\n otherError,\n showError,\n payInvoiceErrorModalOpen,\n errorDialogHeader,\n errorDialogBodyErrorTitle,\n errorDialogBodyErrorDescription,\n errorDialogFooterGoToCartButtonText,\n errorDialogFooterCancelButtonText,\n cartUrl,\n setPayInvoiceErrorModalClose\n}) => {\n const errorMessages: (string | undefined)[] = [];\n\n if (otherError) {\n errorMessages.push(otherError);\n } else {\n errorMessages.push(errorMessage);\n }\n\n const className = 'msc-pay-invoice-error-dialog';\n\n return (\n <>\n 0} color='danger' assertive aria-label={messageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
\n {message}\n
\n );\n })}\n
\n \n \n {errorDialogHeader}\n \n \n
\n
{errorDialogBodyErrorTitle}
\n
{errorDialogBodyErrorDescription}
\n
\n
\n \n \n {errorDialogFooterGoToCartButtonText}\n \n \n {errorDialogFooterCancelButtonText}\n \n \n
\n \n );\n};\n\n// @ts-expect-error\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'InvoiceError',\n { component: InvoiceError }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\n\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\n invoicesFilterShowAll: string;\n}\n\nexport interface IInvoicesFilterProps extends IComponentProps {\n className: string;\n disabled: boolean;\n\n resources: IInvoicesFilterResources;\n\n currentState: InvoicesFilterState;\n onFilterStateChanged(state: InvoicesFilterState): void;\n}\n\nexport enum InvoicesFilterState {\n ShowAll,\n Paid,\n PartiallyPaid,\n Unpaid\n}\n\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\n switch (filterState) {\n case InvoicesFilterState.ShowAll:\n return resources.invoicesFilterShowAll;\n case InvoicesFilterState.Paid:\n return resources.invoiceStatusPaid;\n case InvoicesFilterState.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n case InvoicesFilterState.Unpaid:\n return resources.invoiceStatusUnpaid;\n default:\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\n }\n};\n\n/**\n * On Click function.\n * @param onStateClick -Invoice filter state function.\n * @param filterState -Invoice filter state.\n * @returns Set Invoice filter state.\n */\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\n onStateClick(filterState);\n};\n\nconst renderFilterStateItem = (\n filterState: InvoicesFilterState,\n resources: IInvoicesFilterResources,\n className: string,\n onStateClick: (filterState: InvoicesFilterState) => void\n): React.ReactNode => {\n const stateStringRepresentation = InvoicesFilterState[filterState];\n\n return (\n \n );\n};\n\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\n const popoverRef = React.createRef();\n const [popoverState, setPopoverState] = React.useState(false);\n const togglePopover = React.useCallback(() => {\n setPopoverState(!popoverState);\n }, [popoverState]);\n\n const [filterState, setFilterState] = React.useState(props.currentState);\n\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\n setFilterState(clickedState);\n setPopoverState(false);\n props.onFilterStateChanged(clickedState);\n };\n\n return (\n
\n \n {getInvoicesFilterStateResources(filterState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\n })}\n \n
\n );\n};\n\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesFilterProps\n>('InvoicesFilterComponent', { component: InvoicesFilter });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\nexport interface IInvoicesTableHeaderResources {\n invoicesText: string;\n invoiceNumberText: string;\n invoiceDateMobileText: string;\n invoiceDateText: string;\n invoiceUsersText: string;\n invoiceAmountText: string;\n invoiceDueDateText: string;\n invoiceAmountDueText: string;\n invoiceStatusText: string;\n invoiceActionsText: string;\n invoiceListSelectAllRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isSelectedAll: boolean;\n isMobile: boolean;\n isAdmin: boolean;\n\n resources: IInvoicesTableHeaderResources;\n\n onSelectAll(isSelected: boolean): void;\n}\n\nexport interface IInvoicesTableHeaderComponent extends IComponent {}\n\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoiceNumberText}\n {resources.invoiceDateText}\n {props.isAdmin ? {resources.invoiceUsersText} : null}\n {resources.invoiceAmountText}\n {resources.invoiceDueDateText}\n {resources.invoiceAmountDueText}\n {resources.invoiceStatusText}\n {resources.invoiceActionsText}\n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoicesText}\n {resources.invoiceDateMobileText}\n \n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject\n) => () => {\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n {customer.IsB2bAdmin ? (\n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \n ) : null}\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n \n {formatDate(props.context, invoice.dueDate)}\n \n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n \n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n return (\n
\n \n {showActions && !isOnBehalfOfRequest && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n \n \n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../helpers/invoice-data';\nimport { IInvoiceErrorState } from '../../invoices-list';\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\n\ninterface IInvoicesTableData {\n invoices: InvoiceModel[];\n customer: Customer;\n}\n\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {}\n\nexport interface IInvoicesTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n invoiceButtonReferences?: React.RefObject[];\n payInvoiceButtonReferences?: React.RefObject[];\n resources: IInvoicesTableResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableComponent extends IComponent {}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst getViewport = (context: ICoreContext): GridSize => {\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 (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\nconst isMobileView = (context: ICoreContext) => {\n const viewport = getViewport(context);\n return viewport === 'xs' || viewport === 'sm';\n};\n\n/**\n * On select all function.\n * @param props -Invoice table props.\n * @returns On change.\n */\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\n props.data.invoices.forEach(invoice => {\n invoice.isSelected = isSelected;\n });\n props.onChange();\n};\n\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\n\n const updateViewport = () => {\n setIsMobile(isMobileView(props.context));\n };\n\n if (typeof window !== undefined && window.addEventListener) {\n window.addEventListener('resize', updateViewport);\n }\n const rowClassName = `${props.className}__row`;\n const headerClassName = `${props.className}__header`;\n\n return (\n \n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n const hasInvoices = ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n disabled?: boolean;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n disabled,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\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 { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\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, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(renderInvoiceOptions(updatedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\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\nimport { getUrlSync, isOboRequest } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): 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 },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n
{invoicesListDescTitle}
\n
{amountText}
\n
{countText}
\n
\n
\n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\n {this._renderInvoiceRequestButton(isOnBehalfOfRequest)}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const filterClassName = `${className}__filter`;\n return (\n \n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string, disabled: boolean): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(disabled: boolean): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n\n BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(context, b2bUserId, invoiceId, BusinessPartnerOperationDeliveryType.Email);\n\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\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 { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\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 { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\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 { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\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 { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\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 { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): 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 { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\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 { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../tile-list-item.props.autogenerated';\n\n/**\n * Tile List links.\n */\nexport interface ITileListLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ITileListLinks component.\n * @extends {React.PureComponent}\n */\nexport class TileListLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * ITileListLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-tile-list__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default TileListLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { TileListLinks } from './components';\nimport { IHeadingData, ITileListItemProps } from './tile-list-item.props.autogenerated';\n\n/**\n * Tile-list-item view props.\n */\nexport interface ITileListItemViewProps extends ITileListItemProps<{}> {\n heading?: React.ReactNode;\n paragraph?: React.ReactNode;\n links?: React.ReactNode;\n backgroundImage?: React.ReactNode;\n thumbnailImage?: React.ReactNode;\n tileListItem: IModuleProps;\n tileListContainer: INodeProps;\n tileListImageContainer: INodeProps;\n tileListThumbnailImageContainer: INodeProps;\n tileListHeadingContainer: INodeProps;\n}\n\n/**\n *\n * TileListItem component.\n * @extends {React.PureComponent>}\n */\nexport class TileListItem extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ITileListItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { heading, paragraph, backgroundImage, thumbnailImage, redirectionUrl, links } = this.props.config;\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const tileListLinkContainer = {\n tag: 'a' as NodeTag,\n className: 'ms-tile-list-container',\n role: 'link',\n href: redirectionUrl?.linkUrl.destinationUrl,\n 'aria-label': redirectionUrl?.ariaLabel\n };\n\n const tileListButtonContainer = {\n tag: 'button' as NodeTag,\n className: 'ms-tile-list-container'\n };\n const viewProps: ITileListItemViewProps = {\n ...this.props,\n heading: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n backgroundImage: this._renderBackgroundImage(backgroundImage),\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\n links: tileListLinks,\n tileListItem: {\n moduleProps: this.props,\n className: ''\n },\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\n tileListImageContainer: {\n className: 'ms-tile-list__image'\n },\n tileListThumbnailImageContainer: {\n className: 'ms-tile-list__thumbnail_image',\n 'aria-hidden': 'true'\n },\n tileListHeadingContainer: {\n className: 'ms-tile-list__heading'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderBackgroundImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n sm: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n md: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n lg: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n xl: { q: 'w=315&h=412&m=6', w: 315, h: 412 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n\n return (\n \n );\n }\n\n private _renderThumbnailImage(\n item?: Msdyn365.IImageData,\n itemImageSettings?: Msdyn365.IImageSettings,\n isAriaHiddenAttribute?: boolean\n ): React.ReactNode | null {\n if (!item) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(item.src)) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default TileListItem;\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 { ITileListItemViewProps } from './tile-list-item';\n\n/**\n *\n * ITileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\n const {\n heading,\n paragraph,\n backgroundImage,\n links,\n thumbnailImage,\n tileListContainer,\n tileListImageContainer,\n tileListThumbnailImageContainer,\n tileListHeadingContainer\n } = props;\n\n return (\n \n {backgroundImage}\n \n {heading}\n {paragraph}\n {links}\n \n {thumbnailImage}\n \n );\n};\n\n/**\n *\n * TileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nexport const TileListItemViewComponent: React.FC = props => {\n const { tileListItem } = props;\n return {renderTileListItemContent(props)};\n};\n\nexport default TileListItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n salesAgreementPricePrompt?: string;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const {\n cartLabel,\n cartQtyLabel,\n data: { cart }\n } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n
\n
\n {qtyLabel}\n
\n
\n );\n});\n\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\n // @ts-expect-error -- Compatible issue with the component override.\n ICartIconComponent\n>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\n\nexport default CartIconComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\n\n/**\n * Interface for OrderTemplateImage.\n */\ninterface IOrderTemplateImage {\n props: {\n children: React.ReactElement[];\n };\n}\n\n/**\n * To render order template.\n * @param orderTemplate - The order template view props.\n * @param orderTemplateNodeProps - The order template node props.\n * @returns The JSX Element.\n */\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\n const currentImageListLength = orderTemplateImageElement.props.children.length;\n const defaultNumberImagesInTile = 4;\n\n if (currentImageListLength < defaultNumberImagesInTile) {\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\n orderTemplateImageElement.props.children.push();\n }\n }\n\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\n/**\n * Order Template List View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nexport const OrderTemplateListViewComponent: React.FC> = props => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n OrderTemplateList,\n OrderTemplates,\n OrderTemplate,\n status,\n statusMessage,\n heading,\n orderTemplates,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\n
\n

{props.resources.headingForEmptyOrderTemplateList}

\n

{props.resources.textForEmptyOrderTemplateList}

\n {createOrderTemplateButton}\n
\n ) : (\n createOrderTemplateButton\n )}\n {templateHeaderStatusMessage}\n
\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\n \n {orderTemplates.map(orderTemplate => {\n return renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n
\n );\n};\n\nexport default OrderTemplateListViewComponent;\n"],"names":["CountrySelector","React","constructor","props","super","isCMS","this","_updateViewport","bind","viewport","context","request","device","Type","state","isMobile","menuItemList","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","error","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","imageSettings","gridSettings","Navigation","moduleProps","className","classnames","config","tag","role","countrySelectorAriaLabel","MenuList","ListItem","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","MobileDescriptionLabel","isMobileView","menuItemData","renderView","mergedData","cmsNavItems","map","push","_constructMenuItemData","cmsItem","id","CMSItemIdInit","linkText","linkURL","linkUrl","destinationUrl","imageDestinationURL","imageLink","imageSource","image","src","subMenu","_getCMSNestedChildren","category","nestedChildren","subMenus","idx","_getViewport","setState","undefined","innerWidth","sm","md","lg","__decorate","observable","computed","CountrySelectorView","currentLevel","escapeKey","_handleDropdownToggle","parentId","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_escFunction","keyCode","_closeSubmenu","categoryImageAltText","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","document","body","addEventListener","_renderMobileMenu","_renderDesktopMenu","Module","menuItem","_renderDrawerMenu","Node","ref","tabIndex","_renderDisplay","_renderDrawer","_renderLinkMenuItem","toggleButtonText","toggleButtonImg","Drawer","key","_renderLinkText","countrySelectorIntroText","menuSubItem","_renderDrawerLink","linkImg","alt","_renderSpanMenuItem","i","_getFromSubMenu","_createMenuItemList","forEach","index","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","levelClassName","menuOptions","option","hasOptions","haveSubmenu","_renderMenu","onFocus","imagesource","contentAction","etext","attributes","getTelemetryAttributes","currentLang","location","origin","sitePath","href","onTelemetryClick","level","currentItem","submenu","DivContainerClass","convert_a2_to_a3","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AddressShow","AddressDetail","items","description","AddressList","List","isShowList","heading","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","title","message","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","other","resources","localeString","currency","channel","Currency","includes","replace","hasAddressError","setHasAddressError","countriesAvail","enGB","autocomplete","select","it","enUS","eu","nativeInputValueSetter","Object","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","populateFormElements","addressComponent","formMap","addressType","types","getElementById","googleComponent","input","formValue","short_name","console","log","selectedValue","elmnt","value","is_convert_a2_to_a3","options","eValue","selectItemByValue","Event","bubbles","dispatchEvent","long_name","call","eCustom","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","setAttribute","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","name","addressComponents","address_components","gMapsAutocomplete","querySelectorAll","o","optionV","remove","countrySelect","querySelector","optionDEF","parentNode","disabled","Boolean","saveAddressButton","phone","phoneCtn","closest","phoneAlert","getElementsByClassName","pattern","pattern2","onkeyup","match","classList","add","textContent","addressPhoneRequiredErrorMessage","removeAttribute","checkPhone","addressForm","county","countyCtn","countyAlert","onclick","e","test","elements","fieldInALL","element","stopPropagation","phoneValidation","updatedCount","reload","AddressItem","label","alert","maxLength","AddressError","addressErrorMessage","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","isShowAddresList","isShowAddOrUpdateAddress","AccountPreferencesSection","accountPreferences","personalization","extraPreferences","AccountPreferenceSection","preferenceSecton","accountPreference","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","AccountProfileItem","links","AccountProfile","accountProfileWrapper","emailSection","nameSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","innerHTML","textGenericMarketing","textThirdParty","NavMenuConstants","NavigationMenuView","_positionInSetOffset","promotionalImage","supportedLevel","four","_layout2022handleDropdownToggle","showCategoryImage","_layout2022updateCategoryImage","_layout2022resetFocus","_layout2022handleClickOutside","categoryImage","_layout2022escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_layout2022closeSubmenu","_layout2022onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","isOpen","categoryImageSource","altText","ArrayExtensions","promotionalContent","text","additionalProperties","MsDyn365","layout2022","posinset","_layout2022renderDrawerMenu","_layout2022renderDisplay","openGlyph","closeGlyph","glyphPlacement","toString","TODO","setSize","_layout2022renderDrawer","_layout2022renderLinkMenuItem","firstLevel","keyValue","keys","isDrawerOpen","colProps","bottomLinkData","filter","navItem","bottomAllLink","bottomLinkText","bottomLinkUrl","shouldOpenNewTab","toggleButtonProps","ariaLabel","onToggle","collapseProps","_layout2022renderLinkText","currentPos","_layout2022renderDrawerLink","_layout2022renderSpanMenuItem","menuItemDatum","_layout2022getFromSubMenu","_layout2022createMenuItemList","_layout2022renderSubMenu","_layout2022renderButtonMenuItem","nameParentElement","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","bottomLinkDataFiltered","bottomLinkPresent","bottomMenuLink","Math","round","_layout2022renderMenu","isParent","_layout2022renderPromotionalLink","bottomLinkAvail","bottomLink","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","two","one","categoryImages","StringExtensions","imagesContainerKey","join","alttext","categoryImageUrl","generateImageUrl","actionContext","requestContext","apiSettings","imageData","Msdyn365","categoryImageSettings","loadFailureBehavior","getCategoryImage","getStar","star","_renderStars","_averageRating","avRating","averageRating","avgRating","totalReviews","averageNumber","summary","reviewsCount","ratingsLabel","ratingReviewsText","cultureFormatter","formatNumber","histogramItem","starsNumber","buttonProps","bar","histogramItems","histogramProps","SignUpItem","wrapper","errorMessage","SignUpEmailVerification","email","buttons","successMessage","SignUpLoading","modal","modalBody","icon","signUp","loading","defaultAADConainer","aadConainer","signUpLocalAccount","isShowLoading","localAccount","emailVerification","disclaimer","uiLocales","query","ui_locales","regionCRM","RegionCRM","birthDate","setBirthDate","formatDateState","setFormatDateState","patternUS","checkDate","currentTarget","today","Date","signUpButton","preventDefault","isRequired","verificationControlWrapper","htmlFor","birthdayLabelText","birthdayErrorText","type","onKeyUp","onPaste","BirthdayText","renderThirdPartyPrivacy","defaultChecked","required","LocalAccount","createReviewModal","assign","modalHeader","form","inputRow","rating","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","signInButton","modalToggle","reviewModal","isAuthenticated","user","signInLabel","reviewButtonLabel","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","noclick","attribute","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","keyIndex","_getCategoryHierarchy","categoryHierarchy","result","_getFriendlyName","NameTranslations","Url","_getPDPLinks","categoryPaths","product","url","requestUrl","Name","hideProductName","_goBack","history","back","_getPDPBackButton","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","link","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","isModalOpen","_handleStayOnSiteButtonClick","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","baseUrl","isCookieValueSet","get","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","editProps","onEdit","handleTextChange","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","stayOnCurrentSiteButtonText","viewprops","modalContainer","Modal","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","renderCountryList","stayOnCurrentSiteButton","handleLinkTextChange","editableLink","openInNewTab","onTextChange","localeItems","renderCountry","localeItem","localeBaseUrl","matchedCountryItem","imageSize","imageProps","displayString","shouldSkipToMainImage","displaySubString","countryPickerView","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","_renderFindInStore","findInStore","storeSelector","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","max","quantity","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","searchResultModal","TitleViewProps","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","recommendation","FooterCategory","categories","FooterList","FooterListItem","FooterCategoryView","ImageList","images","paragraph","_renderImageListItems","imageList","disableLazyLoad","imageLinkText","imageLinkAriaLabel","linkAltText","linkAriaLabel","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","InteractiveFeatureCollection","Heading","headingTag","itemsCounter","indexItem","itemCounter","isMosaic","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","_createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","InteractiveFeatureItem","handleHeadingChange","linkIndex","Number","featureItemLinks","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isAriaHiddenAttribute","verifiedImageSettings","moduleType","typeName","imagePropertyName","MagicNumber","FeatureItemViewComponent","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderMosaic","renderCarousel","InvoiceDetailsHeaderComponent","msdyn365Commerce","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","date","invoiceDate","formatDate","year","month","day","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","amount","currencyCode","formatCurrency","formatAmount","amountDue","PayInvoiceComponent","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","totalDiscount","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","RecordId","getProductPageUrlSync","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","Image","primaryImageUrl","fallBackSrc","_renderProductImage","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","_renderProductDimensions","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","Id","InvoiceDate","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","InvoicePaidStatus","InvoiceDetails","_onAddToCartFailed","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","productInputs","invoiceLines","ProductInput","getSimpleProductsAction","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","otherError","errorMessages","Alert","color","assertive","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","Paid","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","stateStringRepresentation","renderFilterStateItem","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getMobileHeaderCells","invoiceDateText","isAdmin","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","getDesktopHeaderCells","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","setShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","useState","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","isSelected","rowCells","invoiceRowArialabel","format","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getMobileRowCells","customer","isCurrentUser","AccountNumber","customerAccountNumber","IsB2bAdmin","invoiceCurrentUser","getDesktopRowCells","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","headerClassName","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","async","_event","setDisabled","payInvoices","errorState","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","errorDetails","LocalizedMessage","errorCode","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","RequestInvoiceModal","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","searchEntered","updatedInvoices","toLocaleUpperCase","searchEnteredHandler","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","selectedInvoices","setFilteredInvoicesToSelectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","shouldComponentUpdate","nextProps","nextState","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","callerContext","BusinessPartnerId","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","tableClassName","newErrorState","errorHost","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleId","moduleTypeName","navigationUrl","invoiceErrorMessageHeader","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","Email","invoiceId","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","specificInvoice","InvoiceListView","Subscribe","_emailAddressInputRef","subscribeParagraph","subscribeHeading","handleText","subscribe","subscribeContainer","subscribeForm","subscribeFormAriaLabel","autoComplete","emailInput","subscribeFormEmailAriaLabel","subscribeEmailPlaceholderText","subscribeFormSubmitAriaLabel","subscribeButtonLabel","submitButtonLabelText","onSubmit","subscribeView","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","itemIndex","contentID","getContentID","tabId","activeContentIDResult","activeTabState","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","tabSlots","tabItemTitle","observer","_renderTabItemContent","tabItemType","tabItemContent","Tab","tabIndexQuery","_refHandler","activeLink","_onClick","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","pushState","path","_onKeyDown","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","activeTab","queryTabIndex","arr","split","parseInt","_getTabHeader","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","dataActionTabId","selected","onKeyDown","paramName","paramValue","URL","params","URLSearchParams","search","decodeURIComponent","TileListLinks","TileListItem","backgroundImage","thumbnailImage","redirectionUrl","tileListLinks","tileListLinkContainer","_renderBackgroundImage","_renderThumbnailImage","tileListItem","tileListContainer","tileListImageContainer","tileListThumbnailImageContainer","tileListHeadingContainer","itemImageSettings","layout","msdyn365__moduleLayout","TileListItemViewComponent","renderTileListItemContent","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","style","visibility","CartIconComponent","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","children","renderOrderTemplate"],"sourceRoot":""}