{"version":3,"file":"static/js/13.fd9aafc80c2fe19fe24e.chunk.js","mappings":"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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,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GA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","sources":["webpack://venchi-ecommerce-msdyn365/./src/modules/country-selector/country-selector.tsx?a8bc","webpack://venchi-ecommerce-msdyn365/./src/modules/country-selector/country-selector.view.tsx?44d3","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/components/fm-account-profile-text.tsx?4fc1","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/components/fm-account-profile-attributes.tsx?af03","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/components/fm-account-profile-description.tsx?e47a","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/components/fm-account-profile-links.tsx?36e8","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/components/fm-account-profile-consent-section.tsx?c8e8","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/fm-account-profile.tsx?311c","webpack://venchi-ecommerce-msdyn365/./src/modules/fm-account-profile/fm-account-profile.view.tsx?890b","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/utils/constants.ts?e30c","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/account-management-address.view.tsx?2098","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/loyalty-sign-up.view.tsx?1edc","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/loyalty-terms.view.tsx?71d6","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/sign-in.view.tsx?a0ea","webpack://venchi-ecommerce-msdyn365/./src/themes/venchi/views/write-review.view.tsx?10da","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/components/link.tsx?d232","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://venchi-ecommerce-msdyn365/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://venchi-ecommerce-msdyn365/./src/modules/country-picker/country-picker.tsx?4fcb","webpack://venchi-ecommerce-msdyn365/./src/modules/country-picker/country-picker.view.tsx?0036","webpack://venchi-ecommerce-msdyn365/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://venchi-ecommerce-msdyn365/./src/modules/image-list/image-list.tsx?5602","webpack://venchi-ecommerce-msdyn365/./src/modules/image-list/image-list.view.tsx?2bed","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://venchi-ecommerce-msdyn365/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://venchi-ecommerce-msdyn365/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://venchi-ecommerce-msdyn365/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://venchi-ecommerce-msdyn365/./src/modules/map/map.tsx?6111","webpack://venchi-ecommerce-msdyn365/./src/modules/map/map.view.tsx?5db9","webpack://venchi-ecommerce-msdyn365/./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 {\r\n Drawer,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IDrawerState,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { IImageData } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICountrySelectorViewProps } from './country-selector';\r\nimport { IMenuItemData } from './country-selector.data';\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 private resizeObserver: ResizeObserver | null = null;\r\n\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 private initializeResizeObserver = () => {\r\n this.resizeObserver = new ResizeObserver(_ => {\r\n const div = document.querySelector('.mobile.menus');\r\n if (div) {\r\n div.scrollIntoView({ behavior: 'smooth', block: 'end' });\r\n }\r\n });\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 this.initializeResizeObserver();\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 if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n public handleDrawerToggle = (e: IDrawerState) => {\r\n const mobileMenu = document.querySelector('.mobile.menus');\r\n if (e.isOpen && mobileMenu && this.resizeObserver) {\r\n this.resizeObserver.observe(mobileMenu);\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 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","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileText {\r\n className: string;\r\n text: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\r\n\r\nexport default IAccountProfileText;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\r\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFmAccountProfileData } from '../fm-account-profile.data';\r\nimport { IFmAccountProfileProps } from '../fm-account-profile.props.autogenerated';\r\nimport TextComponent from './fm-account-profile-text';\r\n\r\ninterface IAttributePropertiesType {\r\n Name?: string;\r\n IsMandatory?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileAttributesProps {\r\n accountProfileProps: IFmAccountProfileProps;\r\n}\r\n\r\nexport enum AccountAttributeDataTypeValue {\r\n Decimal = 3,\r\n Integer = 4,\r\n Text = 5,\r\n TrueFalse = 6\r\n}\r\n\r\nexport interface IAttributePayloadData {\r\n recordId?: number;\r\n name?: string;\r\n dataTypeValue?: number;\r\n isEnumeration?: boolean;\r\n lowerBoundValue?: number;\r\n upperBoundValue?: number;\r\n decimalValue?: number;\r\n integerValue?: number;\r\n textValue?: string;\r\n booleanValue?: boolean;\r\n isMandatory?: boolean;\r\n defaultValue?: string;\r\n}\r\n\r\nexport interface IAccountProfileAttributesState extends React.ComponentState {\r\n editAttributes: boolean;\r\n phone: string;\r\n vatNumber: string;\r\n attributes: IDictionary;\r\n attributeError: IDictionary;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfileAttributes class.\r\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\r\n */\r\n@observer\r\nclass AccountProfileAttributes extends React.Component {\r\n private readonly attributePayloadData: IAttributePayloadData[];\r\n\r\n @observable private isUpdatingAttributes: boolean = false;\r\n\r\n @observable private gotException: boolean = false;\r\n\r\n private hasError: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private initialAttributes: IDictionary;\r\n\r\n private initialCustomerAttributes?: CustomerAttribute[];\r\n\r\n private initialPhone: string;\r\n\r\n private initialVatNumber: string;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private readonly editRef: React.RefObject;\r\n\r\n private readonly attributesContainerRef: React.RefObject;\r\n\r\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\r\n\r\n private readonly maxIntegerLimit: number = 2_100_000_000;\r\n\r\n private readonly minIntegerLimit: number = -2_100_000_000;\r\n\r\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\r\n\r\n private readonly minDecimalLimit: number = -7_900_000_000_000;\r\n\r\n private readonly maxStringLength: number = 1000;\r\n\r\n private readonly maxVATNumberLength: number = 20;\r\n\r\n private readonly maxPhoneLength: number = 25;\r\n\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n\r\n constructor(props: IAccountProfileAttributesProps) {\r\n super(props);\r\n this.state = {\r\n editAttributes: false,\r\n phone: '',\r\n vatNumber: '',\r\n attributes: {},\r\n attributeError: {}\r\n };\r\n this.initialAttributes = {};\r\n this.initialCustomerAttributes = [];\r\n this.initialPhone = '';\r\n this.initialVatNumber = '';\r\n this.attributePayloadData = [];\r\n const telemetryPageName =\r\n (this.props.accountProfileProps &&\r\n this.props.accountProfileProps.context &&\r\n this.props.accountProfileProps.context.request &&\r\n this.props.accountProfileProps.context.request.telemetryPageName) ||\r\n '';\r\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\r\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\r\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n this.editRef = React.createRef();\r\n this.attributesContainerRef = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._buildPayloadData();\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n reaction(\r\n () => this.props.accountProfileProps.data.customerInformation.result,\r\n () => {\r\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\r\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\r\n this._getAttributes();\r\n this._getCustomerPhoneAndVatNumber();\r\n }\r\n );\r\n reaction(\r\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\r\n () => {\r\n this._buildPayloadData();\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\r\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return this._renderAttributes();\r\n }\r\n\r\n private readonly _renderAttributes = (): JSX.Element | null => {\r\n const { config, data, resources } = this.props.accountProfileProps;\r\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\r\n const additionalInformationSectionHeading =\r\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\r\n const showAttributes = config.showAttributes || '';\r\n const attributes = showAttributes.split(',');\r\n\r\n const elements = attributes.map(att => {\r\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\r\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\r\n ) || { RecordId: 0 };\r\n return this._renderAttribute(attributeDefinition);\r\n });\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\r\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\r\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\r\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n const customerInformation = data.customerInformation.result;\r\n\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n\r\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\r\n const disableBtn: boolean =\r\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled;\r\n return (\r\n \r\n {config.additionalInformationSectionHeading && (\r\n \r\n )}\r\n {config.showPhone && this._renderPhone()}\r\n {config.showVatNumber && this._renderVatNumber()}\r\n {elements}\r\n {this.gotException && (\r\n
\r\n \r\n
\r\n )}\r\n {!edit && (\r\n \r\n {resources.attributesEditButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesSaveButtonText}\r\n \r\n )}\r\n {edit && (\r\n \r\n {resources.attributesCancelButtonText}\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderPhone = (): JSX.Element | null => {\r\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {phoneSectionHeading && }\r\n \r\n {this._renderError('Phone')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderVatNumber = (): JSX.Element | null => {\r\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\r\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\r\n const className = (heading && heading.replace(/ /g, '_')) || '';\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n return (\r\n
\r\n {vatNumberSectionHeading && }\r\n \r\n {this._renderError('VATNumber')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\r\n const editAttributes = (this.state && this.state.editAttributes) || false;\r\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\r\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n case AccountAttributeDataTypeValue.Decimal:\r\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.Text:\r\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n return this._renderBoolean(customAttribute, className, editAttributes);\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n private readonly _renderIntegerDecimalInput = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderTextInputOrSelect = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\r\n const edit = (this.state && this.state.editAttributes) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n let displayName: string = attributeProps.Name || '';\r\n if (displayName === 'Birthday') {\r\n displayName = this.props.accountProfileProps.resources.birthdayHeadingText;\r\n }\r\n if (isEnumeration && customAttribute.EnumerationDetails) {\r\n const value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n return (\r\n
\r\n \r\n \r\n {hasNoValue && (\r\n \r\n )}\r\n {customAttribute.EnumerationDetails.map(option => {\r\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\r\n return (\r\n \r\n {option.EnumerationValue}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (this.props.accountProfileProps.config.source === 'FinanceOperationUS' && customAttribute.Name === 'Birthday') {\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n }\r\n return (\r\n
\r\n \r\n \r\n {this._renderError(customAttribute.Name || '')}\r\n
\r\n );\r\n };\r\n\r\n private readonly _renderBoolean = (\r\n customAttribute: AttributeDefinition,\r\n className: string,\r\n editAttributes: boolean\r\n ): JSX.Element | null => {\r\n let value = this.state.attributes[customAttribute.Name || ''] || '';\r\n const hasNoValue = value === '';\r\n const render = !(hasNoValue && !editAttributes);\r\n value = value || 'false';\r\n const toggleState = (value === 'true' && 'enable') || 'disable';\r\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\r\n const ariaPressed = (value === 'true' && true) || false;\r\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\r\n const displayName: string = attributeProps.Name || '';\r\n let toggleValue = 'false';\r\n if (value === 'true') {\r\n toggleValue = 'false';\r\n } else {\r\n toggleValue = 'true';\r\n }\r\n\r\n return (\r\n \r\n \r\n {render && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\r\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\r\n const hasError = !StringExtensions.isNullOrWhitespace(error);\r\n if (hasError) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n return {\r\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\r\n IsMandatory: isMandatory\r\n };\r\n };\r\n\r\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ phone: value });\r\n };\r\n\r\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\r\n const value = event.target.value;\r\n this.setState({ vatNumber: value });\r\n };\r\n\r\n private readonly _enableAttributes = () => {\r\n this.hasError = false;\r\n\r\n // To clear exception messages\r\n this.gotException = false;\r\n this.setState({ editAttributes: true, attributeError: {} });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n if (this.attributesContainerRef.current) {\r\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\r\n this.attributeClassName\r\n );\r\n if (attributes && attributes.length > 0) {\r\n this._setFocus(attributes[0] as HTMLElement);\r\n }\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _disableAttributes = () => {\r\n this.setState({\r\n editAttributes: false,\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n };\r\n\r\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.target.value;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onUSBdayChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = `1900/${event.target.value}`;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\r\n event: React.MouseEvent\r\n ) => {\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n }\r\n });\r\n };\r\n\r\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.selectedOptions[0].value;\r\n const index = event.currentTarget.selectedOptions[0].index;\r\n const name = attributeDefinition.Name || '';\r\n this.setState({\r\n attributes: {\r\n ...this.state.attributes,\r\n [name]: value\r\n },\r\n selectedIndex: {\r\n ...this.state.selectedIndex,\r\n [name]: index\r\n }\r\n });\r\n };\r\n\r\n private readonly _getAttributes = () => {\r\n const { config, data } = this.props.accountProfileProps;\r\n const showAttributes = config.showAttributes || '';\r\n const showAttributesArray = showAttributes.split(',');\r\n const customer = data.customerInformation.result;\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attributes: IDictionary = {};\r\n\r\n showAttributesArray.forEach(showAttribute => {\r\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\r\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\r\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\r\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\r\n let value: string = '';\r\n if (attribute && attribute.AttributeValue) {\r\n const name = (attribute && attribute.Name) || '';\r\n switch (attribute.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n if (attribute.AttributeValue.IntegerValue) {\r\n value = String(attribute.AttributeValue.IntegerValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n if (attribute.AttributeValue.DecimalValue) {\r\n value = String(attribute.AttributeValue.DecimalValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n if (attribute.AttributeValue.StringValue) {\r\n value = attribute.AttributeValue.StringValue;\r\n attributes[name] = value;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n if (attribute.AttributeValue.BooleanValue !== null) {\r\n value = String(attribute.AttributeValue.BooleanValue);\r\n attributes[name] = value;\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n }\r\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\r\n attributes[showAttribute] = '';\r\n }\r\n if (value.length === 0 && defaultValue) {\r\n attributes[showAttribute] = String(defaultValue);\r\n }\r\n });\r\n if (Object.keys(this.initialAttributes).length === 0) {\r\n this.initialAttributes = attributes;\r\n }\r\n this.setState({ attributes });\r\n };\r\n\r\n // eslint-disable-next-line\r\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\r\n const { resources } = this.props.accountProfileProps;\r\n const { phone, vatNumber } = this.state;\r\n const attributeError: IDictionary = {};\r\n let hasError: boolean = false;\r\n let hasValue: boolean = true;\r\n for (const [key, value] of Object.entries(this.state.attributes)) {\r\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\r\n if (payloadData) {\r\n switch (payloadData.dataTypeValue) {\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const decimalValue = Number(value);\r\n if (isNaN(decimalValue)) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (decimalValue > this.maxDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (decimalValue < this.minDecimalLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minDecimalLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.decimalValue = decimalValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Integer:\r\n const integerValue = Number(value);\r\n if (isNaN(integerValue) || value.includes('.')) {\r\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\r\n attributeError[payloadData.name || ''] = typeError;\r\n hasError = true;\r\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\r\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\r\n const rangeError = format(\r\n resources.attributeInputRangeErrorText,\r\n payloadData.name,\r\n payloadData.lowerBoundValue,\r\n payloadData.upperBoundValue\r\n );\r\n attributeError[payloadData.name || ''] = rangeError;\r\n hasError = true;\r\n }\r\n } else {\r\n if (integerValue > this.maxIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMaximumErrorText,\r\n payloadData.name,\r\n this.maxIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n\r\n if (integerValue < this.minIntegerLimit) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputValueExceedsMinimumErrorText,\r\n payloadData.name,\r\n this.minIntegerLimit\r\n );\r\n hasError = true;\r\n }\r\n }\r\n\r\n if (!hasError) {\r\n if (StringExtensions.isNullOrWhitespace(value)) {\r\n hasValue = false;\r\n } else {\r\n payloadData.integerValue = integerValue;\r\n hasValue = true;\r\n }\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n let trimValue = '';\r\n if (!StringExtensions.isNullOrWhitespace(value)) {\r\n trimValue = value.trim();\r\n }\r\n if (trimValue.length > this.maxStringLength) {\r\n attributeError[payloadData.name || ''] = format(\r\n resources.attributeInputStringMaxLengthErrorText,\r\n payloadData.name,\r\n this.maxStringLength\r\n );\r\n hasError = true;\r\n }\r\n if (!hasError) {\r\n payloadData.textValue = trimValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n payloadData.booleanValue = value === 'true';\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n\r\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\r\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\r\n hasError = true;\r\n }\r\n\r\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\r\n const attribute = custmerAttributes.find(att => att.Name === key);\r\n const index = custmerAttributes.findIndex(att => att.Name === key);\r\n\r\n if (index !== -1 && !hasValue) {\r\n custmerAttributes.splice(index, 1);\r\n }\r\n\r\n if (!hasError && hasValue) {\r\n if (attribute) {\r\n attribute.Attribute = undefined;\r\n attribute.DataTypeValue = payloadData.dataTypeValue;\r\n attribute.Name = payloadData.name;\r\n attribute.RecordId = payloadData.recordId;\r\n attribute.Units = undefined;\r\n attribute.AttributeValue = {\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n };\r\n attribute.ExtensionProperties = [];\r\n attribute.NameTranslations = [];\r\n } else {\r\n custmerAttributes.push({\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\r\n Attribute: undefined,\r\n DataTypeValue: payloadData.dataTypeValue,\r\n KeyName: payloadData.name,\r\n Name: payloadData.name,\r\n RecordId: payloadData.recordId,\r\n Units: undefined,\r\n AttributeValue: {\r\n // @ts-expect-error\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\r\n IntegerValue: payloadData.integerValue,\r\n BooleanValue: payloadData.booleanValue,\r\n StringValue: payloadData.textValue,\r\n DecimalValue: payloadData.decimalValue\r\n },\r\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\r\n ExtensionProperties: [],\r\n 'NameTranslations@odata.type':\r\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\r\n NameTranslations: []\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (phone.trim().length > this.maxPhoneLength) {\r\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\r\n hasError = true;\r\n } else {\r\n customer.Phone = phone.trim();\r\n }\r\n\r\n if (vatNumber.trim().length > this.maxVATNumberLength) {\r\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\r\n hasError = true;\r\n } else {\r\n customer.VatNumber = vatNumber.trim();\r\n }\r\n\r\n this.hasError = hasError;\r\n this.setState({ attributeError });\r\n };\r\n\r\n private readonly _saveAttributes = async () => {\r\n const { context, data } = this.props.accountProfileProps;\r\n const customer = data.customerInformation.result;\r\n\r\n let source: string;\r\n switch (this.props.accountProfileProps.config.source) {\r\n case 'FinanceOperationEU':\r\n source = 'Finance&Operation EU';\r\n break;\r\n case 'FinanceOperationUS':\r\n source = 'Finance&Operation US';\r\n break;\r\n default:\r\n source = 'Finance&Operation EU';\r\n }\r\n customer?.Attributes?.forEach(attribute => {\r\n if (attribute.Name === 'Source') {\r\n attribute.AttributeValue!.StringValue = source;\r\n attribute.ExtensionProperties![7].Value!.StringValue = source;\r\n }\r\n });\r\n\r\n if (customer && context) {\r\n this._addOrUpdateAttribute(customer);\r\n const input = new updateCustomerAttributesInput(\r\n customer.AccountNumber,\r\n customer.Attributes || [],\r\n context.request.apiSettings,\r\n customer.Phone,\r\n customer.VatNumber\r\n );\r\n\r\n this.isUpdatingAttributes = true;\r\n this.gotException = false;\r\n\r\n if (!this.hasError) {\r\n this.setState({ editAttributes: false });\r\n try {\r\n await updateCustomerAttributes(input, context.actionContext);\r\n // eslint-disable-next-line\r\n } catch (error) {\r\n this.gotException = true;\r\n customer.Attributes = this.initialCustomerAttributes;\r\n if (context.telemetry) {\r\n context.telemetry.exception(error as Error);\r\n context.telemetry.debug('Unable to update customer attributes');\r\n }\r\n this.setState({\r\n attributeError: {},\r\n attributes: this.initialAttributes,\r\n phone: this.initialPhone,\r\n vatNumber: this.initialVatNumber\r\n });\r\n }\r\n this.setState({ editAttributes: false });\r\n if (!this.gotException) {\r\n this.initialAttributes = this.state.attributes;\r\n this.initialCustomerAttributes = customer.Attributes;\r\n this.initialPhone = this.state.phone;\r\n this.initialVatNumber = this.state.vatNumber;\r\n }\r\n }\r\n\r\n this.isUpdatingAttributes = false;\r\n\r\n if (MsDyn365.isBrowser) {\r\n setTimeout(() => {\r\n this._setFocus(this.editRef.current);\r\n }, 0);\r\n }\r\n }\r\n };\r\n\r\n private readonly _setFocus = (element: HTMLElement | null) => {\r\n element?.focus();\r\n };\r\n\r\n private readonly _buildPayloadData = () => {\r\n const { data } = this.props.accountProfileProps;\r\n const attributeDefinitions = data.attributeDefinitions.result || [];\r\n const attributes: IDictionary = {};\r\n\r\n attributeDefinitions.forEach(attributeDefinition => {\r\n const attributePayloadData: IAttributePayloadData = {};\r\n attributePayloadData.recordId = attributeDefinition.RecordId;\r\n attributePayloadData.name = attributeDefinition.Name;\r\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\r\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\r\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\r\n switch (attributeDefinition.DataTypeValue) {\r\n case AccountAttributeDataTypeValue.Integer:\r\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\r\n if (attributePayloadData.name && defaultIntegerValue) {\r\n attributePayloadData.defaultValue = String(defaultIntegerValue);\r\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Decimal:\r\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\r\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\r\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\r\n if (attributePayloadData.name && defaultDecimalValue) {\r\n attributePayloadData.defaultValue = String(defaultDecimalValue);\r\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.Text:\r\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\r\n if (attributePayloadData.name && defaultStringValue) {\r\n attributePayloadData.defaultValue = defaultStringValue;\r\n attributes[attributePayloadData.name] = defaultStringValue;\r\n }\r\n break;\r\n case AccountAttributeDataTypeValue.TrueFalse:\r\n const defaultBooleanValue =\r\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\r\n if (attributePayloadData.name) {\r\n attributePayloadData.defaultValue = String(defaultBooleanValue);\r\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\r\n }\r\n break;\r\n default:\r\n\r\n // Do nothing\r\n }\r\n this.attributePayloadData.push(attributePayloadData);\r\n });\r\n Object.keys(attributes).length > 0 && this.setState({ attributes });\r\n };\r\n\r\n private readonly _getCustomerPhoneAndVatNumber = () => {\r\n const customer = this.props.accountProfileProps.data.customerInformation.result;\r\n const phone = (customer && customer.Phone) || '';\r\n const vatNumber = (customer && customer.VatNumber) || '';\r\n this.setState({ phone, vatNumber });\r\n if (this.initialPhone.length === 0) {\r\n this.initialPhone = phone;\r\n }\r\n if (this.initialVatNumber.length === 0) {\r\n this.initialVatNumber = vatNumber;\r\n }\r\n };\r\n}\r\n\r\nexport default AccountProfileAttributes;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\ninterface IAccountProfileDescription {\r\n className: string;\r\n description: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\r\n

{description}

\r\n);\r\n\r\nexport default IAccountProfileDescription;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { ILinkData } from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport interface IAccountProfileLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\r\n if (links.length === 0) {\r\n return null;\r\n }\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n linkdata.forEach((link, index) => {\r\n payLoad.contentAction.etext = link.linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n\r\nexport default AccountProfileLinks;\r\n","import React, { useState } from 'react';\r\nimport classnames from 'classnames';\r\n\r\nimport { Text } from '@msdyn365-commerce/core';\r\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\r\nimport { updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport isEqual from 'lodash/isEqual';\r\n\r\nimport { IFmAccountProfileData } from '../fm-account-profile.data';\r\nimport { IFmAccountProfileProps } from '../fm-account-profile.props.autogenerated';\r\nimport TextComponent from './fm-account-profile-text';\r\nimport { updateAllConsentsAsync } from '../../../actions/DataActionExtension.g';\r\n\r\nexport interface ProfileConsent {\r\n text: string; // GenMarketing, Profiling, ThirdParty\r\n value: boolean;\r\n}\r\n\r\nexport enum ConsentText {\r\n GEN_MARKETING = 'GenMarketing',\r\n PROFILING = 'Profiling',\r\n THIRD_PARTY = 'ThirdParty'\r\n}\r\n\r\nexport enum ConsentName {\r\n EMAIL = 'Email',\r\n SMS = 'Sms'\r\n}\r\n\r\ninterface ConsentChannel {\r\n title: string; // Marketing telefono | Marketing Email\r\n text: string; // Numbero telefono | Indirizzo Email\r\n name: ConsentName; // Sms | Email\r\n value: string; // +3935165656 | test@venchi.com\r\n emailConsents: ProfileConsent[];\r\n smsConsents: ProfileConsent[];\r\n}\r\n\r\ninterface IAccountProfileAttributesProps {\r\n accountProfileProps: IFmAccountProfileProps;\r\n}\r\n\r\ninterface ProfileConsentSectionProps {\r\n consentChannel: ConsentChannel;\r\n locale: string;\r\n}\r\n\r\nconst ProfileConsentSection = (props: IAccountProfileAttributesProps & ProfileConsentSectionProps) => {\r\n let initialChannelValue = props.consentChannel.value;\r\n let initialConsents =\r\n props.consentChannel.name === ConsentName.SMS ? props.consentChannel.smsConsents : props.consentChannel.emailConsents;\r\n\r\n const MAX_PHONE_LENGTH = 25;\r\n\r\n const [consents, setConsents] = useState(initialConsents);\r\n\r\n const [channelValue, setChannelValue] = useState(initialChannelValue);\r\n const [canEdit, setCanEdit] = useState(false);\r\n const [isUpdating, setIsUpdating] = useState(false);\r\n const [validationError, setValidationError] = useState('');\r\n const [gotExceptionError, setGotExceptionError] = useState(false);\r\n\r\n const handleAttributeChange = (event: any) => {\r\n setChannelValue(event.target.value);\r\n };\r\n\r\n const handleConsentToggle = (consent: ProfileConsent) => {\r\n setConsents(prevConsents => prevConsents.map(c => (c.text === consent.text ? { ...c, value: !c.value } : c)));\r\n };\r\n\r\n const handleSaveButton = async () => {\r\n const { context, data, resources } = props.accountProfileProps;\r\n const customer = data.customerInformation.result;\r\n\r\n if (!customer || !context) {\r\n return;\r\n }\r\n\r\n const promises: Promise[] = [];\r\n\r\n if (props.consentChannel.name === ConsentName.SMS) {\r\n if (channelValue.trim().length > MAX_PHONE_LENGTH) {\r\n setValidationError(format(resources.attributeInputStringMaxLengthErrorText, 'Phone', MAX_PHONE_LENGTH));\r\n } else {\r\n customer.Phone = channelValue.trim();\r\n\r\n const input = new updateCustomerAttributesInput(\r\n customer.AccountNumber,\r\n customer.Attributes || [],\r\n context.request.apiSettings,\r\n customer.Phone,\r\n customer.VatNumber\r\n );\r\n\r\n if (customer.Phone !== initialChannelValue) {\r\n promises.push(\r\n updateCustomerAttributes(input, context.actionContext).then(() => {\r\n initialChannelValue = channelValue;\r\n })\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (!isEqual(consents, initialConsents)) {\r\n const updatedConsents = {\r\n key: 0,\r\n ...(props.consentChannel.name === ConsentName.SMS\r\n ? {\r\n GenMarketingSms: consents.find(c => c.text === ConsentText.GEN_MARKETING)?.value,\r\n ProfilingSms: consents.find(c => c.text === ConsentText.PROFILING)?.value,\r\n ThirdPartySms: consents.find(c => c.text === ConsentText.THIRD_PARTY)?.value,\r\n GenMarketingEmail: props.consentChannel.emailConsents.find(c => c.text === ConsentText.GEN_MARKETING)?.value,\r\n ProfilingEmail: props.consentChannel.emailConsents.find(c => c.text === ConsentText.PROFILING)?.value,\r\n ThirdPartyEmail: props.consentChannel.emailConsents.find(c => c.text === ConsentText.THIRD_PARTY)?.value\r\n }\r\n : {\r\n GenMarketingEmail: consents.find(c => c.text === ConsentText.GEN_MARKETING)?.value,\r\n ProfilingEmail: consents.find(c => c.text === ConsentText.PROFILING)?.value,\r\n ThirdPartyEmail: consents.find(c => c.text === ConsentText.THIRD_PARTY)?.value,\r\n GenMarketingSms: props.consentChannel.smsConsents.find(c => c.text === ConsentText.GEN_MARKETING)?.value,\r\n ProfilingSms: props.consentChannel.smsConsents.find(c => c.text === ConsentText.PROFILING)?.value,\r\n ThirdPartySms: props.consentChannel.smsConsents.find(c => c.text === ConsentText.THIRD_PARTY)?.value\r\n })\r\n };\r\n promises.push(updateAllConsentsAsync({ callerContext: context.actionContext }, updatedConsents));\r\n }\r\n\r\n if (!promises.length) {\r\n return;\r\n }\r\n\r\n setIsUpdating(true);\r\n setCanEdit(false);\r\n\r\n try {\r\n await Promise.all(promises);\r\n initialConsents = consents;\r\n } catch (error) {\r\n setGotExceptionError(true);\r\n\r\n if (context.telemetry) {\r\n context.telemetry.exception(error as Error);\r\n context.telemetry.debug('Unable to update customer attributes');\r\n }\r\n\r\n setChannelValue(initialChannelValue);\r\n }\r\n\r\n setIsUpdating(false);\r\n };\r\n\r\n const handleCancelButton = () => {\r\n setConsents(initialConsents);\r\n setCanEdit(false);\r\n setChannelValue(initialChannelValue);\r\n };\r\n\r\n const handleEditButton = () => {\r\n setGotExceptionError(false);\r\n setValidationError('');\r\n setCanEdit(true);\r\n };\r\n\r\n const renderConsentRow = (consent: ProfileConsent): JSX.Element | null => {\r\n const value = consent.value;\r\n const toggleState = value ? 'enable' : 'disable';\r\n const ariaLabel = format(props.accountProfileProps.resources.attributeToggleButtonAriaLabel, consent.text);\r\n\r\n const attributeClassName = 'ms-account-profile__attributes-element';\r\n\r\n let text;\r\n\r\n switch (consent.text) {\r\n case ConsentText.GEN_MARKETING:\r\n text =\r\n props.locale.toLowerCase() !== 'en-us'\r\n ? format(\r\n props.accountProfileProps.resources.htmlGenericMarketing,\r\n props.accountProfileProps.config.privacyPolicyURL\r\n )\r\n : props.accountProfileProps.config.textGenericMarketing;\r\n break;\r\n case ConsentText.PROFILING:\r\n text = format(props.accountProfileProps.resources.htmlProfiling, props.accountProfileProps.config.privacyPolicyURL);\r\n break;\r\n case ConsentText.THIRD_PARTY:\r\n text = format(props.accountProfileProps.resources.htmlThirdParty, props.accountProfileProps.config.privacyPolicyURL);\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n\r\n \r\n \r\n handleConsentToggle(consent)}\r\n disabled={!canEdit}\r\n />\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n const editAsyncCustomerFeatureName = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n const customerInformation = props.accountProfileProps.data.customerInformation.result;\r\n const isEditAsyncCustomerFeatureEnabled =\r\n props.accountProfileProps.data.featureState?.result?.find(feature => feature.Name === editAsyncCustomerFeatureName)?.IsEnabled ||\r\n false;\r\n\r\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\r\n const disableBtn: boolean =\r\n (props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !isEditAsyncCustomerFeatureEnabled;\r\n\r\n const additionalInformationSectionHeading =\r\n (props.accountProfileProps.config.additionalInformationSectionHeading &&\r\n props.accountProfileProps.config.additionalInformationSectionHeading.text) ||\r\n '';\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n \r\n \r\n {validationError && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n\r\n {consents.map(renderConsentRow)}\r\n\r\n {!canEdit && (\r\n \r\n {props.accountProfileProps.resources.attributesEditButtonText}\r\n \r\n )}\r\n {gotExceptionError && (\r\n
\r\n \r\n
\r\n )}\r\n {canEdit && (\r\n \r\n {props.accountProfileProps.resources.attributesSaveButtonText}\r\n \r\n )}\r\n {canEdit && (\r\n \r\n {props.accountProfileProps.resources.attributesCancelButtonText}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ProfileConsentSection;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n ArrayExtensions,\r\n updateCustomerPersonalization,\r\n updateCustomerPersonalizationInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n IPayLoad,\r\n ITelemetryContent\r\n} from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport { computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IFmAccountProfileData } from './fm-account-profile.data';\r\nimport {\r\n IFmAccountProfileProps,\r\n IEmailAddressSectionHeadingData,\r\n IHeadingData,\r\n INameSectionHeadingData\r\n} from './fm-account-profile.props.autogenerated';\r\nimport AccountProfileAttributes from './components/fm-account-profile-attributes';\r\nimport DescriptionComponent from './components/fm-account-profile-description';\r\nimport LinksComponent, { ILinksData } from './components/fm-account-profile-links';\r\nimport TextComponent from './components/fm-account-profile-text';\r\nimport ProfileConsentSection, { ConsentName, ConsentText } from './components/fm-account-profile-consent-section';\r\n\r\nexport interface IAccountPreference {\r\n accountPreference: INodeProps;\r\n heading: React.ReactNode;\r\n buttonWrapper: INodeProps;\r\n buttonYesText: React.ReactNode;\r\n buttonNoText: React.ReactNode;\r\n button: React.ReactNode;\r\n description: React.ReactNode;\r\n onUpdateAccountPreference(preferenceType?: string): void;\r\n}\r\n\r\nexport interface IAccountPreferences {\r\n accountPreferences: INodeProps;\r\n heading?: React.ReactNode;\r\n personalization: IAccountPreference;\r\n extraPreferences?: IAccountPreference[];\r\n}\r\n\r\nexport interface IAccountProfileItem {\r\n AccountProfileItem: INodeProps;\r\n heading?: React.ReactNode;\r\n links?: React.ReactNode;\r\n description?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountCustomerAttributes {\r\n customerAttributes?: React.ReactNode;\r\n}\r\n\r\nexport interface IAccountProfileViewProps extends IFmAccountProfileProps {\r\n AccountProfile: IModuleProps;\r\n accountProfileWrapper?: INodeProps;\r\n className: string;\r\n heading?: React.ReactNode;\r\n emailSection: IAccountProfileItem;\r\n nameSection: IAccountProfileItem;\r\n preferenceSection: IAccountPreferences;\r\n customerAttributesWrapper?: INodeProps;\r\n customerAttributesSection?: IAccountCustomerAttributes;\r\n emailConsentsWrapper?: INodeProps;\r\n emailConsentsSection?: IAccountCustomerAttributes;\r\n phoneConsentsWrapper?: INodeProps;\r\n phoneConsentsSection?: IAccountCustomerAttributes;\r\n infoMessageBar?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AccountProfile component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountProfile extends React.Component> {\r\n @observable private isUpdatingPreference: boolean = false;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n private readonly payLoad: IPayLoad;\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n\r\n constructor(props: IFmAccountProfileProps) {\r\n super(props);\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 shouldComponentUpdate(nextProps: IFmAccountProfileProps): boolean {\r\n if (this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { config, resources, data } = this.props;\r\n\r\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\r\n\r\n const { editButtonText, editButtonAriaLabel } = resources;\r\n const customerInformation = data.customerInformation.result;\r\n\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n\r\n const invalidAsyncCustomerState: boolean =\r\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (customerInformation?.IsAsyncCustomer || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled;\r\n\r\n // As per the design, phone and vat numbers are part of the profile attributes section\r\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\r\n const editLink: ILinksData = {\r\n linkUrl: {\r\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\r\n },\r\n linkText: editButtonText,\r\n ariaLabel: editButtonAriaLabel,\r\n isDisabled: invalidAsyncCustomerState\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n className,\r\n AccountProfile: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-profile', config.className)\r\n },\r\n infoMessageBar: invalidAsyncCustomerState && (\r\n \r\n ),\r\n accountProfileWrapper: {\r\n className: classnames('ms-account-profile-wrapper')\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n emailSection: this._renderEmailSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\r\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\r\n customerInformation && customerInformation.Email\r\n ),\r\n nameSection: this._renderNameSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\r\n nameSectionHeading as INameSectionHeadingData,\r\n this.getDescription(customerInformation),\r\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [editLink]\r\n ),\r\n preferenceSection: this._renderPreferenceSection(\r\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\r\n invalidAsyncCustomerState,\r\n customerInformation\r\n ),\r\n customerAttributesWrapper: {\r\n className: classnames('ms-account-profile__attributes-wrapper')\r\n },\r\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes(),\r\n emailConsentsWrapper: {\r\n className: classnames('ms-account-profile__attributes-wrapper')\r\n },\r\n emailConsentsSection: shouldRenderAttributes && this._renderEmailConsents(),\r\n phoneConsentsWrapper: {\r\n className: classnames('ms-account-profile__attributes-wrapper')\r\n },\r\n phoneConsentsSection: shouldRenderAttributes && this._renderPhoneConsents()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\r\n\r\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\r\n (this.props.config.nameSectionHeading!.text = event.target.value);\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.resources.editButtonText) {\r\n this.props.resources.editButtonText = event.target.value;\r\n }\r\n };\r\n\r\n @computed get editProfileUrl(): string {\r\n return get(this.props, 'context.request.user.editProfileUrl', '');\r\n }\r\n\r\n private getDescription(customerInformation: Customer | undefined): string {\r\n let description = '';\r\n if (customerInformation !== undefined) {\r\n if (customerInformation.FirstName) {\r\n description += customerInformation.FirstName;\r\n }\r\n if (customerInformation.LastName) {\r\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\r\n }\r\n }\r\n return description;\r\n }\r\n\r\n private _renderEmailSection(\r\n className: string,\r\n heading?: IEmailAddressSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && heading.text && (\r\n \r\n ),\r\n links: links && links.length > 0 && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private _renderNameSection(\r\n className: string,\r\n heading?: INameSectionHeadingData,\r\n description?: string,\r\n links?: ILinksData[]\r\n ): IAccountProfileItem {\r\n if (!ArrayExtensions.hasElements(links)) {\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n return {\r\n AccountProfileItem: {\r\n className\r\n },\r\n heading: heading && (\r\n \r\n ),\r\n links: (\r\n \r\n ),\r\n description: description && (\r\n \r\n )\r\n };\r\n }\r\n\r\n private readonly onClickEventHandler = (className: string) => async () => {\r\n return this._updateAccountPersonalization(className);\r\n };\r\n\r\n private _renderPreferenceSection(\r\n className: string,\r\n invalidAsyncCustomerState: boolean,\r\n customerInformation?: Customer\r\n ): IAccountPreferences | null {\r\n const {\r\n personalizationDescription,\r\n personalizationEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n webTrackingEnableButtonAriaLabel\r\n } = this.props.resources;\r\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\r\n const { enableDataAnalytics } = this.props.context.request.features;\r\n const extraPreferences: IAccountPreference[] = [];\r\n\r\n if (!customerInformation) {\r\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // Show browser activity login preference if switch is enabled AND a heading is provided\r\n enableDataAnalytics &&\r\n webTrackingSectionHeading &&\r\n extraPreferences.push(\r\n this._renderPreference(\r\n 'web-tracking',\r\n webTrackingSectionHeading as IHeadingData,\r\n webTrackingEnableButtonAriaLabel,\r\n webTrackingDescription,\r\n customerInformation.OptOutWebActivityTracking || false,\r\n invalidAsyncCustomerState\r\n )\r\n );\r\n\r\n return {\r\n accountPreferences: {\r\n className\r\n },\r\n heading: preferencesSectionHeading && (\r\n \r\n ),\r\n personalization: this._renderPreference(\r\n 'personalization',\r\n personalizationSectionHeading as IHeadingData,\r\n personalizationEnableButtonAriaLabel,\r\n personalizationDescription,\r\n customerInformation.OptOutPersonalization || false,\r\n invalidAsyncCustomerState\r\n ),\r\n extraPreferences: extraPreferences || undefined\r\n };\r\n }\r\n\r\n private readonly _renderPreference = (\r\n className: string,\r\n sectionHeading: IHeadingData,\r\n enableAriaLabel: string,\r\n description: string,\r\n isOptOut: boolean,\r\n disableBtn: boolean\r\n ) => {\r\n const { toggleDisableText, toggleEnableText } = this.props.resources;\r\n const toggleState = isOptOut ? 'disable' : 'enable';\r\n const onClickHandler = this.onClickEventHandler(className);\r\n this.payLoad.contentAction.etext = sectionHeading.text;\r\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\r\n\r\n return {\r\n accountPreference: {\r\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\r\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\r\n })\r\n },\r\n heading: sectionHeading && (\r\n \r\n ),\r\n buttonWrapper: {\r\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\r\n // Disable the toggle completely if customer is async.\r\n 'ms-account-profile__toggle-disabled': disableBtn\r\n })\r\n },\r\n buttonYesText: ,\r\n buttonNoText: ,\r\n button: (\r\n \r\n ),\r\n description: ,\r\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\r\n };\r\n };\r\n\r\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\r\n const customerInformation = this.props.data.customerInformation.result;\r\n\r\n if (customerInformation) {\r\n const {\r\n telemetry,\r\n context: { request, actionContext }\r\n } = this.props;\r\n\r\n let isOptOutPersonalization = false;\r\n let input;\r\n\r\n switch (preferenceType) {\r\n case 'web-tracking':\r\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n break;\r\n case undefined:\r\n case 'personalization':\r\n default:\r\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\r\n input = new updateCustomerPersonalizationInput(\r\n customerInformation.AccountNumber,\r\n !isOptOutPersonalization,\r\n request.apiSettings,\r\n preferenceType\r\n );\r\n }\r\n\r\n this.isUpdatingPreference = true;\r\n\r\n try {\r\n await updateCustomerPersonalization(input, actionContext);\r\n // eslint-disable-next-line\r\n } catch (error) {\r\n if (telemetry) {\r\n telemetry.exception(error as Error);\r\n telemetry.debug('Unable to update customer personalization');\r\n }\r\n }\r\n\r\n this.isUpdatingPreference = false;\r\n }\r\n };\r\n\r\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\r\n return ;\r\n };\r\n\r\n private readonly _renderEmailConsents = (): React.ReactNode => {\r\n const profileConsents = this.props.data.profileConsents.result;\r\n const consentChannel = {\r\n text: this.props.resources.emailConsentText,\r\n title: this.props.resources.emailConsentTitle,\r\n name: ConsentName.EMAIL,\r\n value: this.props.data.customerInformation.result?.Email || '',\r\n emailConsents: [\r\n { text: ConsentText.GEN_MARKETING, value: profileConsents?.GenMarketingEmail || false },\r\n { text: ConsentText.PROFILING, value: profileConsents?.ProfilingEmail || false },\r\n { text: ConsentText.THIRD_PARTY, value: profileConsents?.ThirdPartyEmail || false }\r\n ],\r\n smsConsents: [\r\n { text: ConsentText.GEN_MARKETING, value: profileConsents?.GenMarketingSms || false },\r\n { text: ConsentText.PROFILING, value: profileConsents?.ProfilingSms || false },\r\n { text: ConsentText.THIRD_PARTY, value: profileConsents?.ThirdPartySms || false }\r\n ]\r\n };\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly _renderPhoneConsents = (): React.ReactNode => {\r\n const profileConsents = this.props.data.profileConsents.result;\r\n const consentChannel = {\r\n text: this.props.resources.phoneConsentText,\r\n title: this.props.resources.phoneConsentTitle,\r\n name: ConsentName.SMS,\r\n value: this.props.data.customerInformation.result?.Phone || '',\r\n emailConsents: [\r\n { text: ConsentText.GEN_MARKETING, value: profileConsents?.GenMarketingEmail || false },\r\n { text: ConsentText.PROFILING, value: profileConsents?.ProfilingEmail || false },\r\n { text: ConsentText.THIRD_PARTY, value: profileConsents?.ThirdPartyEmail || false }\r\n ],\r\n smsConsents: [\r\n { text: ConsentText.GEN_MARKETING, value: profileConsents?.GenMarketingSms || false },\r\n { text: ConsentText.PROFILING, value: profileConsents?.ProfilingSms || false },\r\n { text: ConsentText.THIRD_PARTY, value: profileConsents?.ThirdPartySms || false }\r\n ]\r\n };\r\n\r\n return (\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default AccountProfile;\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 { IAccountPreference, IAccountPreferences, IAccountProfileItem } from '@msdyn365-commerce-modules/account-management';\r\n\r\nimport { IFmAccountProfileProps } from './fm-account-profile.props.autogenerated';\r\nimport { IAccountProfileViewProps } from './fm-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 emailConsentsSection,\r\n emailConsentsWrapper\r\n // phoneConsentsSection,\r\n // phoneConsentsWrapper\r\n } = props;\r\n\r\n React.useEffect(() => {\r\n const bd_input: HTMLInputElement = document.getElementsByClassName(\r\n 'ms-account-profile__attributes-element ms-account-profile__attributes_input ms-account-profile__attributes_input-edit-false ms-account-profile__Birthday-input'\r\n )[0] as HTMLInputElement;\r\n\r\n if (bd_input && props.context.request.canonicalDomain !== 'us.venchi.com') {\r\n document.getElementsByClassName('ms-account-profile__attributes-edit-button msc-btn')[0].addEventListener('click', () => {\r\n bd_input.setAttribute('type', 'date');\r\n });\r\n }\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 {customerAttributesWrapper && (\r\n {customerAttributesSection}\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n {/*
\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
*/}\r\n {/*
\r\n {phoneConsentsWrapper && {phoneConsentsSection}}\r\n
*/}\r\n
\r\n {emailConsentsWrapper && {emailConsentsSection}}\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","export const TEMPORARY_ACCOUNT_NUMBER_LENGTH = 36;\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 { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressList, IAddressListItem, IAddressListProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/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'],\r\n // autocomplete: ['us', 'ca'],\r\n // select: ['USA', 'CAN']\r\n select: ['USA']\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 enSG: {\r\n autocomplete: ['sg'],\r\n select: ['SGP']\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 React.useEffect(() => {\r\n const phoneItem = items.find(i => i.key === 'Phone');\r\n\r\n //@ts-ignore\r\n if (phoneItem?.input?.props?.onChange) {\r\n //@ts-ignore\r\n const { onChange } = phoneItem.input.props;\r\n\r\n const handlePhoneChange = (event: React.ChangeEvent) => {\r\n onChange(event);\r\n checkPhone();\r\n };\r\n\r\n //@ts-ignore\r\n phoneItem.input.props.onChange = handlePhoneChange;\r\n }\r\n }, [items]);\r\n\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILoyaltySignUpViewProps } from '@msdyn365-commerce-modules/account-management';\r\nimport { ILoyaltySignUpProps } from '../definition-extensions/loyalty-sign-up.ext.props.autogenerated';\r\n\r\nconst LoyaltySignUpView: React.FC> = props => {\r\n const {\r\n LoyaltySignUp,\r\n heading,\r\n memberHeading,\r\n signInLink,\r\n signUpText,\r\n signUpButton,\r\n detailsLink,\r\n // termsLink, Not needed\r\n loading,\r\n infoMessageBar\r\n } = props;\r\n\r\n if (loading) {\r\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\r\n return null;\r\n }\r\n\r\n // const hostname = props?.context?.request?.url?.requestUrl?.hostname || '';\r\n\r\n if (typeof window !== 'undefined') {\r\n const loyalty_join_toggle_btn = document.getElementsByClassName('ms-loyalty-terms__toggle')[0];\r\n loyalty_join_toggle_btn?.addEventListener('click', () => {\r\n const loyalty_join_btn = document.getElementsByClassName('ms-loyalty-terms__submit')[0];\r\n loyalty_join_btn.addEventListener('click', () => {\r\n loyalty_join_btn.innerHTML = \"
\";\r\n });\r\n });\r\n }\r\n\r\n /*\r\n [signInLink = true, loyalty_join_flag = false] guest (no loyalty join) -> standard sign in\r\n [signInLink = true, loyalty_join_flag = true] guest (loyalty join) -> \"thanks\" instead of sign in\r\n [signInLink = false] logged in -> hidden module content\r\n */\r\n const loyalty_join_flag = props.context.request.query?.hasJoined;\r\n // signInLink is null (thus false) when the user is logged in\r\n return (\r\n signInLink &&\r\n (loyalty_join_flag ? (\r\n
\r\n {props.resources.joinedLoyaltyThankYouHeader && (\r\n

{props.resources.joinedLoyaltyThankYouHeader}

\r\n )}\r\n {props.resources.joinedLoyaltyParagraphContent && (\r\n
\r\n

{props.resources.joinedLoyaltyParagraphContent}

\r\n
\r\n )}\r\n {/* {props.resources.loyaltyBalanceCheckURL && props.resources.joinedLoyaltyBalanceCheckLinkText && ({props.resources.joinedLoyaltyBalanceCheckLinkText})} */}\r\n
\r\n ) : (\r\n \r\n {infoMessageBar}\r\n {memberHeading}\r\n {heading}\r\n {detailsLink}\r\n {signUpText}\r\n {/* {termsLink} Not needed */}\r\n {signUpButton}\r\n {signInLink}\r\n \r\n ))\r\n );\r\n};\r\n\r\nexport default LoyaltySignUpView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ILoyaltyTermsViewProps } from '@msdyn365-commerce-modules/account-management';\r\nimport { ILoyaltyTermsProps } from '../definition-extensions/loyalty-terms.ext.props.autogenerated';\r\n\r\nimport { AsyncResult, Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { TEMPORARY_ACCOUNT_NUMBER_LENGTH } from '../utils/constants';\r\n\r\ninterface ILoyaltyTermsData {\r\n customerInformation: AsyncResult;\r\n}\r\n\r\nconst LoyaltyTermsView: React.FC> = props => {\r\n const customerInformation = props.data.customerInformation.result;\r\n\r\n // The user does NOT have a customer number yet, they still have a tmp_guid\r\n let tempAccount = false;\r\n if (customerInformation?.AccountNumber?.length === TEMPORARY_ACCOUNT_NUMBER_LENGTH) {\r\n tempAccount = true;\r\n }\r\n\r\n const auth = props.context.request.user.isAuthenticated;\r\n\r\n // const hostname = props?.context?.request?.url?.requestUrl?.hostname || ''; // Protip: this does NOT keep the /de or whatever, so make sure to fix it if used in the future\r\n\r\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\r\n\r\n if (auth && tempAccount) {\r\n return (\r\n
\r\n {props.resources.joinedLoyaltyThankYouHeader && (\r\n

{props.resources.joinedLoyaltyThankYouHeader}

\r\n )}\r\n {props.resources.joinedLoyaltyParagraphContent && (\r\n
\r\n

{props.resources.joinedLoyaltyParagraphContent}

\r\n
\r\n )}\r\n {/* {props.resources.loyaltyBalanceCheckURL && props.resources.joinedLoyaltyBalanceCheckLinkText && ({props.resources.joinedLoyaltyBalanceCheckLinkText})} */}\r\n
\r\n );\r\n // User is NOT temp but IS auth --> old/synced user\r\n } else if (auth && !loading && modal && !tempAccount) {\r\n if (props.config.layout === 'wideLayout') {\r\n return (\r\n \r\n {props.config.showImages && props.config.marketingImage ? (\r\n
\r\n
\r\n {props.config.marketingImage.altText}\r\n
\r\n
\r\n {props.config.marketingText &&

{props.config.marketingText}

}\r\n {modalToggle}\r\n
\r\n
\r\n {props.config.marketingImage.altText}\r\n
\r\n
\r\n ) : (\r\n
\r\n {props.config.marketingText &&

{props.config.marketingText}

}\r\n {modalToggle}\r\n
\r\n )}\r\n \r\n {modal.heading}\r\n \r\n {modal.terms}\r\n \r\n {modal.checkbox}\r\n {modal.agreeText}\r\n \r\n \r\n \r\n {modal.submitButton}\r\n {modal.cancelButton}\r\n \r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n \r\n
\r\n {props.config.showImages && props.config.marketingImage && (\r\n {props.config.marketingImage.altText}\r\n )}\r\n {props.config.marketingText &&

{props.config.marketingText}

}\r\n {modalToggle}\r\n
\r\n \r\n {modal.heading}\r\n \r\n {modal.terms}\r\n \r\n {modal.checkbox}\r\n {modal.agreeText}\r\n \r\n \r\n \r\n {modal.submitButton}\r\n {modal.cancelButton}\r\n \r\n \r\n
\r\n );\r\n }\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nexport default LoyaltyTermsView;\r\n","import * as React from 'react';\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 {\r\n Module,\r\n Node,\r\n ITelemetryContent,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject\r\n} from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { ISignInItem, ISignInLoading, ISignInLocalAccount, ISignInViewProps } from '@msdyn365-commerce-modules/account-management';\r\n\r\nimport { ISignInProps } from '../definition-extensions/sign-in.ext.props.autogenerated';\r\n\r\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n {item.error}\r\n {item.input}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n \r\n );\r\n};\r\n\r\nconst SignInLoading: 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 SignInView: React.FC> = props => {\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpSectionHeading,\r\n signUpDescription,\r\n signUpLink\r\n } = props;\r\n const canonicalDomain = props.signIn.moduleProps.context.request.canonicalDomain;\r\n const sitePath =\r\n props.signIn.moduleProps.context.request.sitePath && props.signIn.moduleProps.context.request.sitePath !== null\r\n ? props.signIn.moduleProps.context.request.sitePath\r\n : '';\r\n const requestUrl: string = `https://${canonicalDomain}${sitePath}`;\r\n\r\n const telemetryContent: ITelemetryContent = getTelemetryObject(\r\n props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry\r\n );\r\n const payLoad = getPayloadObject('click', telemetryContent!, props.resources.signUpButtonText);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const showContinueAsGuest = props.config.showContinueAsGuestButton;\r\n const showVclubColumn = props.config.showVclubColumn;\r\n\r\n React.useEffect(() => {\r\n if (!viewState.isShowLoading) {\r\n const registerButtonLink = document.getElementById('createAccount');\r\n const vclubButtonLink = document.getElementById('vclub-signin');\r\n\r\n if (registerButtonLink && vclubButtonLink) {\r\n // @ts-ignore\r\n vclubButtonLink.href = registerButtonLink.href;\r\n }\r\n }\r\n }, [viewState.isShowLoading]);\r\n\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount)}\r\n \r\n {showVclubColumn && (\r\n \r\n

{props.resources.signinVclubTitle}

\r\n

{props.resources.signinVclubText}

\r\n
\r\n \r\n {props.resources.signUpButtonText}\r\n \r\n
\r\n\r\n {showContinueAsGuest && (\r\n \r\n )}\r\n
\r\n )}\r\n \r\n {signUpSectionHeading}\r\n {signUpDescription}\r\n
{signUpLink}
\r\n\r\n {showContinueAsGuest && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SignInView;\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';\r\nimport { IWriteReviewViewProps, IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\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 { 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 './index';\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 min,\n max,\n applyDefaultOrderSettings,\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 &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\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 min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\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 * 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 linkOpenInNewTab?: boolean;\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 const imageLinkOpenInNewTab = link?.openInNewTab;\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 linkOpenInNewTab: imageLinkOpenInNewTab\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 {\n getTelemetryObject,\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 Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps } 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 _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 && this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems && 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 createHeading = title && (\n \n );\n const viewProps = {\n ...this.props,\n title: createHeading,\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 /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.title!.text = event.target.value);\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 &&\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 { IInvoiceErrorState, 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?(errorState: IInvoiceErrorState, reference?: React.RefObject): 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=80&h=94&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n xl: { q: 'w=148&h=174&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(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\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.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, 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.ProductId)?.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 { IInvoiceErrorState, 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 errorState?: IInvoiceErrorState;\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 = { errorState: { errorMessage: '', otherError: '' } };\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 errorState: { errorMessage: '', otherError: '' }\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.ProductId)\n .map(\n product =>\n new ProductInput(\n product.ProductId!,\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(newErrorState: IInvoiceErrorState): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n\n // check for errorcode and otherError which contains the LocalizedMessage from API\n if (\n errorState &&\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineAlreadyExistsInCart' &&\n errorState.otherError\n ) {\n this.setState({ errorState: errorState });\n }\n\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 {resources.invoiceUsersText}\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 setShowActions: React.Dispatch>\n) => () => {\n setShowActions(false);\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 \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \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\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event | MouseEvent) => void) {\n function handleClickOutside(event: Event | MouseEvent) {\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node)) {\n toggle(event);\n }\n }\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n return () => {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n };\n }, [refinerRefernce, toggle]);\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 const wrapperRefiner = React.useRef(null);\n useOutsideClick(wrapperRefiner, toggle(showActions && !isOnBehalfOfRequest, setShowActions));\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 // Added condition to enable MakePayment button only if can be paid invoice is selected\n const hasInvoices =\n ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid)) &&\n ArrayExtensions.hasElements(invoices.filter(invoice => invoice.isSelected));\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}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\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 } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\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 { Alert, Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-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 isOpen: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\n@observer\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 private invoiceIds: string[] = [];\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 isOpen: 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 reaction(\n () => this.state.isInvoiceRequestModalOpen,\n async () => {\n if (this.invoiceIds && !this.state.isInvoiceRequestModalOpen) {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n for (const invoiceId of this.invoiceIds) {\n await BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(\n context,\n b2bUserId,\n invoiceId,\n BusinessPartnerOperationDeliveryType.Email\n );\n }\n this.invoiceIds = [];\n }\n }\n );\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()}\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 containerClass = `${this._className}__container`;\n const containerContentClass = `${containerClass}__content`;\n const filterClassName = `${className}__filter`;\n return (\n
\n
{this._renderInvoiceInCartPaymentMessage()}
\n \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 _renderInvoiceInCartPaymentMessage(): JSX.Element {\n const cart = this.props.data.cart?.result;\n\n if (!cart?.hasInvoiceLine) {\n return <>;\n }\n\n return (\n \n \n \n );\n }\n\n // Dismiss alert.\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\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(): 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 this.invoiceIds.push(invoiceId);\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\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private timeout: number = 500;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const loadMapAPIInput = {\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n };\n\n if (\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded\n ) {\n this._initMap();\n if (this.props.data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n this._updateMapsForDistributor();\n } else {\n this._updateMap();\n }\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n when(\n () => !!this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.loadMapApi ||\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi,\n () => {\n if (this.props.data.distributorSelectorStateManager?.result?.loadMapApi) {\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n } else {\n this.props.data.storeSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n }\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.distributorSelectorStateManager?.result?.distributorList,\n this.props.data.distributorSelectorStateManager?.result?.selectedDistributorId,\n this.map\n ];\n },\n () => {\n this._updateMapsForDistributor();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data\n } = this.props;\n\n const shouldDisplayMap = data.storeSelectorStateManager?.result?.isDialogOpen\n ? data.storeSelectorStateManager?.result?.listMapViewState.displayMap\n : data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen\n ? data.distributorSelectorStateManager?.result?.listMapViewState.displayMap\n : false;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data\n } = this.props;\n\n if (data.storeSelectorStateManager?.result?.isMapApiLoaded || data.distributorSelectorStateManager?.result?.isMapApiLoaded) {\n const mapLoadOptions = {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n };\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, mapLoadOptions);\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n if (data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n // Hide the distributor details that appear below the screen size of 768px.\n data.distributorSelectorStateManager?.result?.updateDistributorMapVisibility(false);\n await data.distributorSelectorStateManager?.result?.setSelectedDistributorId(undefined);\n } else {\n await data.storeSelectorStateManager?.result?.setSelectedStoreLocationId(undefined);\n }\n });\n }\n };\n\n private readonly _updateMapsForDistributor = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n const distributorInfoList = distributorSelectorStateManager?.distributorList;\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n if (this.map && ArrayExtensions.hasElements(distributorInfoList)) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const distributorList = distributorInfoList.filter(distributor => distributor.OrgUnit !== undefined);\n\n for (const [index, distributorInfo] of distributorList.entries()) {\n const orgUnit = distributorInfo.OrgUnit;\n\n if (orgUnit?.Latitude && orgUnit.Longitude) {\n const isLocationSelected = selectedDistributorId === orgUnit?.RecordId;\n const options = this._getPushpinOptions(isLocationSelected, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(orgUnit?.Latitude, orgUnit.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleDistributorPushpinClick(orgUnit.RecordId);\n });\n isLocationSelected ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isLocationSelected) {\n mapLocation = orgUnit;\n }\n }\n }\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n }, this.timeout);\n }\n };\n\n /**\n * Handle the click event of the pushpin for distributors on the maps.\n * @param recordId - RecordId.\n */\n private readonly handleDistributorPushpinClick = (recordId: number | undefined): void => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n // Show the distributor details that appear below the screen size of 768px.\n distributorSelectorStateManager?.updateDistributorMapVisibility(true);\n distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n if (recordId) {\n setTimeout(() => {\n distributorSelectorStateManager?.setSelectedDistributorId(recordId);\n }, this.timeout);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\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 { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\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 \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 {status !== 'SUCCESS' && statusMessage}\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","static","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","error","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","_objectSpread","imageSettings","gridSettings","Navigation","moduleProps","className","classnames","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","resizeObserver","initializeResizeObserver","ResizeObserver","_","div","document","querySelector","scrollIntoView","behavior","block","handleDrawerToggle","e","mobileMenu","isOpen","observe","_handleDropdownToggle","parentId","activeMenu","mobileViewLabelText","parentMenu","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","event","contains","target","_escFunction","keyCode","_closeSubmenu","categoryImageAltText","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","body","addEventListener","disconnect","_renderMobileMenu","_renderDesktopMenu","Module","Object","assign","menuItem","_renderDrawerMenu","Node","ref","tabIndex","_renderDisplay","_renderDrawer","_renderLinkMenuItem","toggleButtonText","toggleButtonImg","Drawer","onToggle","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","_ref","text","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","resources","accountProfileProps","attributeDefinitions","result","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","attribute","IsHidden","Name","toLocaleLowerCase","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","customerInformation","featureState","feature","IsEnabled","disableBtn","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","attributesContainerRef","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","title","disabled","_saveAttributes","_disableAttributes","phoneSectionHeading","heading","replace","type","onChange","_onPhoneChange","value","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","birthdayHeadingText","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","EnumerationValue","source","_onUSBdayChange","maxLength","toggleState","arialabel","format","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","attributeError","StringExtensions","isNullOrWhitespace","attributePayloadData","name","isMandatory","MsDyn365","isBrowser","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","isNaN","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VATNumber","VatNumber","async","_customer$Attributes","input","updateCustomerAttributesInput","AccountNumber","apiSettings","updateCustomerAttributes","actionContext","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","shouldComponentUpdate","nextProps","nextState","observer","description","_mapEditableLinks","linkdata","editableLinks","link","editableLink","ariaLabel","isDisabled","openInNewTab","additionalProperties","links","requestContext","onTextChange","Msdyn365","editProps","ConsentText","ConsentName","_props$accountProfile","_props$accountProfile2","initialChannelValue","consentChannel","initialConsents","SMS","smsConsents","emailConsents","consents","setConsents","useState","channelValue","setChannelValue","canEdit","setCanEdit","isUpdating","setIsUpdating","validationError","setValidationError","gotExceptionError","setGotExceptionError","EMAIL","consent","GEN_MARKETING","htmlGenericMarketing","privacyPolicyURL","textGenericMarketing","PROFILING","htmlProfiling","THIRD_PARTY","htmlThirdParty","dangerouslySetInnerHTML","__html","prevConsents","c","handleConsentToggle","handleEditButton","promises","then","isEqual","_consents$find","_consents$find2","_consents$find3","_props$consentChannel","_props$consentChannel2","_props$consentChannel3","_consents$find4","_consents$find5","_consents$find6","_props$consentChannel4","_props$consentChannel5","_props$consentChannel6","updatedConsents","GenMarketingSms","ProfilingSms","ThirdPartySms","GenMarketingEmail","ProfilingEmail","ThirdPartyEmail","updateAllConsentsAsync","callerContext","Promise","all","handleCancelButton","AccountProfile","isUpdatingPreference","handleHeadingChange","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","handleLinkTextChange","linkIndex","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","onEdit","buttonWrapper","buttonYesText","buttonNoText","button","toString","DescriptionComponent","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_renderEmailConsents","_this$props$data$cust","profileConsents","emailConsentText","emailConsentTitle","Email","ProfileConsentSection","_renderPhoneConsents","_this$props$data$cust2","phoneConsentText","phoneConsentTitle","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","emailConsentsWrapper","emailConsentsSection","phoneConsentsWrapper","phoneConsentsSection","editProfileUrl","FirstName","LastName","AccountProfileItem","LinksComponent","ArrayExtensions","hasElements","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","_ref2","AccountProfileSection","_ref3","bd_input","canonicalDomain","setAttribute","TEMPORARY_ACCOUNT_NUMBER_LENGTH","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","AddressList","List","isShowList","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","message","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","_ref4","_other$moduleProps","_other$moduleProps2","_other$moduleProps3","_other$moduleProps4","AddressForm","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","other","_objectWithoutProperties","_excluded","localeString","currency","channel","Currency","hasAddressError","setHasAddressError","countriesAvail","enGB","autocomplete","select","it","enUS","eu","enSG","nativeInputValueSetter","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","populateFormElements","addressComponent","formMap","addressType","types","getElementById","googleComponent","selectedValue","elmnt","is_convert_a2_to_a3","options","eValue","selectItemByValue","short_name","Event","bubbles","dispatchEvent","formValue","long_name","call","eCustom","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","addressComponents","address_components","gMapsAutocomplete","querySelectorAll","o","optionV","remove","countrySelect","optionDEF","parentNode","Boolean","_phoneItem$input","phoneItem","handlePhoneChange","checkPhone","saveAddressButton","phoneCtn","closest","phoneAlert","pattern","pattern2","onkeyup","match","classList","add","textContent","addressPhoneRequiredErrorMessage","removeAttribute","addressForm","county","countyCtn","countyAlert","onclick","test","fieldInALL","fieldInControl","stopPropagation","phoneValidation","updatedCount","reload","AddressItem","label","alert","AddressError","addressErrorMessage","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","isShowAddresList","isShowAddOrUpdateAddress","_props$context$reques","LoyaltySignUp","memberHeading","signInLink","signUpText","signUpButton","detailsLink","loading","loyalty_join_toggle_btn","loyalty_join_btn","innerHTML","loyalty_join_flag","query","hasJoined","joinedLoyaltyThankYouHeader","joinedLoyaltyParagraphContent","_customerInformation$","tempAccount","auth","user","isAuthenticated","LoyaltyTerms","modalToggle","modal","layout","showImages","marketingImage","altText","marketingText","modalHeader","modalBody","terms","agreeSection","checkbox","agreeText","modalFooter","submitButton","SignInLoading","icon","_props$resources$cont","_props$resources$cont2","signIn","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signUpSectionHeading","signUpDescription","signUpLink","requestUrl","signUpButtonText","showContinueAsGuest","showContinueAsGuestButton","showVclubColumn","isShowLoading","registerButtonLink","vclubButtonLink","localAccount","forgetPassword","disclaimer","signInButton","wrapper","LocalAccount","signinVclubTitle","signinVclubText","continueAsGuest","createReviewModal","form","inputRow","rating","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","reviewModal","signInLabel","reviewButtonLabel","noclick","itemProp","content","Separator","separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","root","_getCustomBreadcrumbLinks","itemPosition","keyIndex","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","Url","_nameTranslation","_getPDPLinks","categoryPaths","product","url","hideProductName","_goBack","history","back","_getPDPBackButton","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","breadcrumbType","linkSeparator","breadcrumbViewProps","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","backButton","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","baseUrl","isCookieValueSet","_heading$tag","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","handleTextChange","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","stayOnCurrentSiteButtonText","viewprops","modalContainer","Modal","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","renderCountryList","stayOnCurrentSiteButton","_this$props$config$ac","isNullOrEmpty","_link$linkText","localeItems","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","imageSize","imageProps","displayString","loadFailureBehavior","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","min","max","applyDefaultOrderSettings","quantity","IncrementalQuantity","currentCount","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","ImageList","images","paragraph","_renderImageListItems","imageList","disableLazyLoad","imageLinkText","imageLinkAriaLabel","imageLinkOpenInNewTab","linkAltText","linkAriaLabel","linkOpenInNewTab","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","InteractiveFeatureCollection","itemsCounter","indexItem","itemCounter","isMosaic","_this$props$config$cl","_title$tag","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","_this$props$config$li","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","date","invoiceDate","cultureFormatter","formatDate","year","month","day","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","_renderProductImage","_context$request$app","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","OmniChannelMedia","Image","primaryImageUrl","fallBackSrc","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","products","Id","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","canBePaid","InvoicePaidStatus","Paid","InvoiceDetails","errorState","errorMessage","otherError","_onAddToCartFailed","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","arguments","productInputs","filter","ProductInput","getSimpleProductsAction","newErrorState","errorHost","errorCode","_this$state$errorStat","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","errorMessages","Alert","color","assertive","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","setShowActions","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","wrapperRefiner","refinerRefernce","handleClickOutside","useOutsideClick","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","isSelected","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","isCurrentUser","customerAccountNumber","invoiceCurrentUser","_window","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","headerClassName","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","_event","setDisabled","payInvoices","buttonReferences","MakePaymentComponent","hasInvoices","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","htmlFor","RequestInvoiceModal","email","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","_focusElement$current","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onDismiss","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","_customerBalance$resu","_customerBalance$resu2","_heading$text","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","Heading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_this$props$data$b2bU","b2bUserId","b2bUserInformation","B2BUserId","invoiceId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","_renderInvoiceInCartPaymentMessage","tableClassName","_newErrorState$errorR","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleTypeName","navigationUrl","_this$state$selectedB","invoiceErrorMessageHeader","_this$props$data$cart","cart","hasInvoiceLine","invoiceInCartPaymentMessage","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","_this$state$selectedB2","specificInvoice","InvoiceListView","Map","mapRef","_initMap","_data$storeSelectorSt","_data$distributorSele","storeSelectorStateManager","isMapApiLoaded","distributorSelectorStateManager","mapLoadOptions","credentials","BingMapsApiKey","pushpinAccessible","Microsoft","Maps","Events","addHandler","_data$distributorSele2","_data$distributorSele3","_data$distributorSele4","_data$storeSelectorSt2","isDistributorSelectorDialogOpen","updateDistributorMapVisibility","setSelectedDistributorId","setSelectedStoreLocationId","_updateMapsForDistributor","_this$props$data$dist","pushpinOptions","distributorInfoList","distributorList","selectedDistributorId","mapLocation","entities","clear","pushpins","distributor","OrgUnit","distributorInfo","orgUnit","Latitude","Longitude","isLocationSelected","_getPushpinOptions","pushpin","Pushpin","Location","handleDistributorPushpinClick","unshift","currentLocation","setView","center","_Microsoft$Maps$Locat","bounds","LocationRect","fromShapes","setOptions","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","_this$props$data$dist2","showIndex","size","selectionColor","_getSvgIcon","_this$props$context","_this$props$data$stor2","_this$props$data$dist3","BingMapsEnabled","loadMapAPIInput","lang","market","ChannelCountryRegionISOCode","_this$props$data$dist4","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$dist5","_this$props$data$dist6","_this$props$data$stor5","_this$props$data$dist7","loadMapApi","_this$props$data$dist8","_this$props$data$dist9","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$dist10","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$dist11","_this$props$data$dist12","_data$storeSelectorSt3","_data$storeSelectorSt4","_data$distributorSele5","_data$distributorSele6","shouldDisplayMap","isDialogOpen","listMapViewState","displayMap","classname","show","Header","headerProps","MapProps","MapHeader","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","children"],"sourceRoot":""}