{"version":3,"file":"static/js/11.c845da66e106fc2493d8.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-button-block/components/links.tsx?0200","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-button-block/farmlands-button-block.tsx?966f","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-button-block/farmlands-button-block.view.tsx?dc74","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-navigation-menu/farmlands-navigation-menu.props.autogenerated.ts?28c7","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-navigation-menu/farmlands-navigation-menu.tsx?bf22","webpack://Msdyn365.Commerce.Online/./src/modules/farmlands-navigation-menu/farmlands-navigation-menu.view.tsx?7e49","webpack://Msdyn365.Commerce.Online/./src/themes/farmlandstheme/views/search-result-container.view.tsx?ee3b","webpack://Msdyn365.Commerce.Online/./src/helpers/query-param-helpers.ts?0a60","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.tsx?2f8c","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.view.tsx?ac91","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-description.tsx?4911","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-links.tsx?bee7","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-links.tsx?6c7f","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/account-loyalty-tile.tsx?7f29","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?3547","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-description.tsx?c7bb","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/components/account-order-templates-tile-description.tsx?a8c4","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/components/account-order-templates-tile-links.tsx?0bcf","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/account-order-templates-tile.tsx?4e7d","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/account-order-templates-tile.view.tsx?a1f9","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-attributes.tsx?bcc2","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-links.tsx?8faf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/account-profile.tsx?fe69","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/account-profile.view.tsx?b964","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-description.tsx?770a","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-text.tsx?8115","webpack://Msdyn365.Commerce.Online/./src/modules/account-welcome-tile/account-welcome-tile.tsx?2115","webpack://Msdyn365.Commerce.Online/./src/modules/account-welcome-tile/account-welcome-tile.view.tsx?e5e3","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?0588","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?f114","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/account-wishlist-tile.tsx?b721","webpack://Msdyn365.Commerce.Online/./src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?095e","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?3b33","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?f1c7","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/organization-users-tile.tsx?f5de","webpack://Msdyn365.Commerce.Online/./src/modules/organization-users-tile/organization-users-tile.view.tsx?bac2","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-button.tsx?a869","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-error.tsx?fbfd","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-input.tsx?20d9","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-label.tsx?6ef1","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-loading-icon.tsx?8828","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-loading-message.tsx?a980","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/password-reset.tsx?0983","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/password-reset.view.tsx?b341","webpack://Msdyn365.Commerce.Online/./src/modules/business-organization-list/components/small-components.tsx?c4b5","webpack://Msdyn365.Commerce.Online/./src/modules/business-organization-list/business-organization-list.tsx?0823","webpack://Msdyn365.Commerce.Online/./src/modules/business-organization-list/business-organization-list.view.tsx?c050","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.tsx?02aa","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.view.tsx?1e13","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/links.tsx?abbf","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.tsx?3084","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.view.tsx?1773","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/cart.view.tsx?ac8f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-history.view.tsx?a21d","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/reviews-list.view.tsx?cd2e","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.tsx?b9ec","webpack://Msdyn365.Commerce.Online/./src/modules/site-picker/site-picker.view.tsx?5319","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.tsx?899b","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.view.tsx?dcdf","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.tsx?78cb","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list/tile-list.view.tsx?1b00"],"sourcesContent":["/* tslint:disable: no-duplicate-imports */\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../farmlands-button-block.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ContentCardLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default ContentCardLinks;\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\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport LinksComponent from './components/links';\r\nimport { IFarmlandsButtonBlockProps } from './farmlands-button-block.props.autogenerated';\r\n\r\nexport interface IContentBlockViewProps extends IFarmlandsButtonBlockProps<{}> {\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n detailsContainer: INodeProps;\r\n contentBlockAnchorTag?: INodeProps;\r\n}\r\n/**\r\n *\r\n * FarmlandsButtonBlock component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass FarmlandsButtonBlock extends React.PureComponent> {\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n public render(): JSX.Element | null {\r\n const { links, className } = this.props.config;\r\n const contentBlockLinks = links && links.length > 0 && (\r\n \r\n );\r\n\r\n if (!contentBlockLinks) {\r\n this.props.context.telemetry.error('Button block content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('farmlands-button-block', className)\r\n },\r\n detailsContainer: { className: 'ms-content-block__details' },\r\n contentBlockAnchorTag: {\r\n tag: 'a',\r\n className: 'ms-content-block__link',\r\n role: 'link'\r\n }\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n }\r\n}\r\n\r\nexport default FarmlandsButtonBlock;\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\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './farmlands-button-block';\r\n\r\nconst ContentBlockView: React.FC = (props) => {\r\n const {\r\n contentBlockContainer,\r\n detailsContainer,\r\n links,\r\n contentBlockAnchorTag\r\n } = props;\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n {links}\r\n \r\n \r\n );\r\n };\r\n \r\n export default ContentBlockView;\r\n ","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IFarmlandsNavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IFarmlandsNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n className?: string;\r\n}\r\n\r\nexport interface IFarmlandsNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface IFarmlandsNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IFarmlandsNavigationMenuResources;\r\n config: IFarmlandsNavigationMenuConfig;\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 { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, IFarmlandsNavigationMenuData } from './farmlands-navigation-menu.data';\r\nimport {\r\n ICmsNavItemsData,\r\n IFarmlandsNavigationMenuProps,\r\n ISubMenusData,\r\n navigationMenuSource\r\n} from './farmlands-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IFarmlandsNavigationMenuProps {\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}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent<\r\n IFarmlandsNavigationMenuProps,\r\n INavigationMenuState\r\n> {\r\n private static CMSItemIdInit: number = 1000;\r\n private static RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n private viewport: GridSize;\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find((item) => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IFarmlandsNavigationMenuProps) {\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'\r\n ? 'xs'\r\n : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = { isMobile: this.isMobile };\r\n this.menuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.resizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this.menuItemList || this.menuItemList.length === 0) {\r\n this.menuItemList = this._mapData();\r\n }\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',\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.resources.menuAriaLabel\r\n },\r\n MenuListContainer: {\r\n className: 'ms-nav__list-container',\r\n tag: 'div'\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link pv-10',\r\n role: 'menuitem'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button pd-15',\r\n tag: 'button',\r\n role: 'menuitem',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy) =>\r\n mergedData.push(this._constructMenuItemData(item, undefined, true))\r\n );\r\n }\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n );\r\n }\r\n return mergedData;\r\n }\r\n private _constructMenuItemData(\r\n retailItem?: CategoryHierarchy,\r\n cmsItem?: ICmsNavItemsData,\r\n isRetail?: boolean,\r\n idx?: number\r\n ): IMenuItemData {\r\n const locale =\r\n this.props.context && this.props.context.request && this.props.context.request.locale\r\n ? this.props.context.request.locale\r\n : 'en-us';\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: retailItem && retailItem.Url,\r\n subMenu: this._getNestedChildren(retailItem)\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n nestedChildren.push({\r\n linkText: this.props.resources.allCategoryMenuText,\r\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\r\n });\r\n category.Children.map((item: CategoryHierarchy) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch (sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // always render in mobile viewport on a mobile device\r\n // if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n // return 'xs';\r\n // }\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button as ButtonTo, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './farmlands-navigation-menu';\r\nimport { IMenuItemData } from './farmlands-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n mobileViewLabelText?: string;\r\n subMenuHeight?: number;\r\n selectedSubMenu?: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n private firstLevelMenuLinkText: string = '';\r\n private supportedLevel: number = 3;\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n constructor(props: INavigationMenuViewProps) {\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 subMenuHeight: this._calculateSubNavHeight(props.menuItemData),\r\n selectedSubMenu: undefined\r\n };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n document.body && document.body.addEventListener('mousedown', this._handleClickOutside);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileDescriptionContainer, Navigation } = this.props;\r\n return (\r\n \r\n {this._renderReturnToFirstLevelButton()}\r\n \r\n {isMobileView && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n \r\n )}\r\n {this._renderDisplay()}\r\n \r\n \r\n );\r\n }\r\n\r\n private _renderReturnToFirstLevelButton = () => {\r\n if (!this.state.parentMenu) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.firstLevelMenuLinkText}\r\n \r\n );\r\n };\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < menuItemData.length; i++) {\r\n if (menuItemData[i] && menuItemData[i].id === activeMenu) {\r\n menuItem = menuItemData[i];\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: undefined })\r\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {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 // render background for sub-menu dropdown\r\n if (!isMobileView && this.state.activeMenu) {\r\n menuItemList.push(
);\r\n menuItemList.push(\r\n \r\n );\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _closeNavigationMenu = (event: React.MouseEvent) => {\r\n this.setState({\r\n activeMenu: undefined,\r\n parentMenu: undefined\r\n });\r\n };\r\n\r\n private _calculateSubNavHeight(menuItemData: IMenuItemData[]): number {\r\n let subMenuItemMax = 0;\r\n menuItemData.forEach((item: IMenuItemData) => {\r\n const subMenuLength = item.subMenu?.length ? item.subMenu.length : 0;\r\n if (subMenuLength > subMenuItemMax) {\r\n subMenuItemMax = subMenuLength;\r\n }\r\n });\r\n\r\n const subMenuItemHeight = 38;\r\n const calculatedSubNavHeight = subMenuItemMax * subMenuItemHeight;\r\n\r\n const minSubMenuHeight = 390;\r\n\r\n return calculatedSubNavHeight > minSubMenuHeight ? calculatedSubNavHeight : minSubMenuHeight;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: item && item.id })\r\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\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) {\r\n return this._renderLinkMenuItem(menuItemData, undefined, true);\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(menuItemData);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this._renderSpanMenuItem(menuItemData);\r\n }\r\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n\r\n // Render 3rd level submenu only if it is the currently selected submenu.\r\n if (hasOptions && this.state.selectedSubMenu === option.linkText) {\r\n this.currentLevel++;\r\n if (this.currentLevel <= this.supportedLevel - 1) {\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, isMainMenu?: boolean): JSX.Element | null {\r\n const { Link } = this.props;\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\r\n return (\r\n \r\n {option.linkText}\r\n {hasOptions &&
}\r\n \r\n );\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number): JSX.Element | null {\r\n const { MenuList, isMobileView } = this.props;\r\n this.currentLevel = 1;\r\n return (\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 selectedSubMenu: undefined\r\n });\r\n } else {\r\n ++this.currentLevel;\r\n\r\n if (this.currentLevel === 1) {\r\n this.firstLevelMenuLinkText = `Back to ${data.linkText}`;\r\n }\r\n\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: this.currentLevel === 1 ? 'Back to main menu' : data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n };\r\n\r\n private _handleBackFirstLevel = () => {\r\n this.currentLevel = 0;\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: undefined, parentMenu: undefined });\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n --this.currentLevel;\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ 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: '', selectedSubMenu: undefined });\r\n }\r\n }\r\n\r\n private _updateSelectedSubMenu = (selectedSubMenu?: string) => () => {\r\n if (!this.props.isMobileView && selectedSubMenu) {\r\n this.setState({ selectedSubMenu });\r\n }\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","\r\nimport { ICategoryHierarchyViewProps, IRefineMenuViewProps, ISearchResultContainerViewProps, ISearchResultModalViewProps, ISortByViewProps, ITitleViewProps } from '@msdyn365-commerce-modules/search-result-container';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { getQueryParams } from '../../../helpers/query-param-helpers';\r\nimport * as React from 'react';\r\n\r\nconst SearchResultContainerView: React.FC = props => {\r\n const { SearchResultContainer, products, pagination, ProductsContainer, ProductSectionContainer, isMobile, modalToggle, searchResultModal, TitleViewProps,\r\n refineMenu, categoryHierarchy, sortByOptions, CategoryNavContainer, RefineAndProductSectionContainer, errorMessage } = props;\r\n\r\n const searchTerm = getQueryParams().q; // Query param for search term is just the letter 'q'\r\n\r\n const noResultsMessage = (\r\n \r\n

No products found for the given search term: \"{searchTerm}\". Perhaps try a different term or brand?

\r\n

Can’t find what you’re looking for? Not all products are available online currently.\r\n Please call us at 0800 200 600 or click the link below to email us.

\r\n Contact us\r\n
\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n \r\n {renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {/* {choiceSummary} */}\r\n {!errorMessage && modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions)}\r\n \r\n {errorMessage && noResultsMessage}\r\n {products}\r\n \r\n
\r\n {pagination}\r\n
\r\n
\r\n );\r\n }\r\n return (\r\n \r\n \r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n \r\n \r\n {refineMenu && renderRefiner(refineMenu)}\r\n \r\n
\r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {/* {choiceSummary} */}\r\n
\r\n {!errorMessage &&
\r\n {sortByOptions && renderSort(sortByOptions)}\r\n
}\r\n \r\n {errorMessage && noResultsMessage}\r\n {products}\r\n \r\n
\r\n {pagination}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nconst createSearchResultModal = (modalProps: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element => {\r\n return React.cloneElement(modalProps.modal, {}, modalProps.modalHeader, createModalBody(modalProps, refineMenu, sortByDropDown), modalProps.modalFooter);\r\n};\r\n\r\nconst createModalBody = (props: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown), renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n \r\n {submenu}\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown) {\r\n return (\r\n \r\n {sortByDropDown}\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n \r\n

\r\n {title.titleCount}\r\n

\r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;","export const getQueryParams = (): any => {\r\n const pathName = decodeURIComponent(window.location.pathname);\r\n const queryString = decodeURI(window.location.search) || pathName.substr(pathName.indexOf('?'), pathName.length - 1);\r\n return queryString\r\n .replace('?', '')\r\n .split('&')\r\n .map(param => param.split('='))\r\n .reduce((values, [key, value]) => {\r\n values[key] = value;\r\n return values;\r\n }, {});\r\n};","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component.\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription =\n addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountAddressTile;\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 { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\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 IAccountAddressTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;\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 { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountLoyaltyTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;\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 { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.PureComponent>}\n */\nclass AccountLoyaltyTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountLoyaltyTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n const decimalPrecision = 2;\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points.toFixed(decimalPrecision));\n }\n\n const viewProps = {\n ...this.props,\n className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n \n ),\n links: (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n}\n\nexport default AccountLoyaltyTile;\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 { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\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 IAccountLoyaltyTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountLoyaltyTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountLoyaltyTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrderTemplatesTileDescription {\n description: string;\n}\n\nexport const AccountOrderTemplatesTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrderTemplatesTileLinks: React.FC = ({\n links,\n onTextChange,\n telemetryContent,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component.\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature'\n );\n if (\n !this.props.context.request.params.isEditor &&\n (!RetailB2BEcommerceFeatureState?.IsEnabled || !this.props.data.customerInformation.result?.IsB2b)\n ) {\n return <>;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountOrderTemplatesTile;\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 { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from '../account-profile.data';\nimport { IAccountProfileProps } from '../account-profile.props.autogenerated';\nimport TextComponent from './account-profile-text';\n\ninterface IAttributePropertiesType {\n Name?: string;\n IsMandatory?: boolean;\n}\n\nexport interface IAccountProfileAttributesProps {\n accountProfileProps: IAccountProfileProps;\n}\n\nexport enum AccountAttributeDataTypeValue {\n Decimal = 3,\n Integer = 4,\n Text = 5,\n TrueFalse = 6\n}\n\nexport interface IAttributePayloadData {\n recordId?: number;\n name?: string;\n dataTypeValue?: number;\n isEnumeration?: boolean;\n lowerBoundValue?: number;\n upperBoundValue?: number;\n decimalValue?: number;\n integerValue?: number;\n textValue?: string;\n booleanValue?: boolean;\n isMandatory?: boolean;\n defaultValue?: string;\n}\n\nexport interface IAccountProfileAttributesState extends React.ComponentState {\n editAttributes: boolean;\n phone: string;\n vatNumber: string;\n attributes: IDictionary;\n attributeError: IDictionary;\n}\n\n/**\n *\n * AccountProfileAttributes class.\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\n */\n@observer\nclass AccountProfileAttributes extends React.Component {\n private readonly attributePayloadData: IAttributePayloadData[];\n\n @observable private isUpdatingAttributes: boolean = false;\n\n @observable private gotException: boolean = false;\n\n private hasError: boolean = false;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private initialAttributes: IDictionary;\n\n private initialCustomerAttributes?: CustomerAttribute[];\n\n private initialPhone: string;\n\n private initialVatNumber: string;\n\n private readonly payLoad: IPayLoad;\n\n private readonly editRef: React.RefObject;\n\n private readonly attributesContainerRef: React.RefObject;\n\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\n\n private readonly maxIntegerLimit: number = 2_100_000_000;\n\n private readonly minIntegerLimit: number = -2_100_000_000;\n\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\n\n private readonly minDecimalLimit: number = -7_900_000_000_000;\n\n private readonly maxStringLength: number = 1000;\n\n private readonly maxVATNumberLength: number = 20;\n\n private readonly maxPhoneLength: number = 25;\n\n constructor(props: IAccountProfileAttributesProps) {\n super(props);\n this.state = {\n editAttributes: false,\n phone: '',\n vatNumber: '',\n attributes: {},\n attributeError: {}\n };\n this.initialAttributes = {};\n this.initialCustomerAttributes = [];\n this.initialPhone = '';\n this.initialVatNumber = '';\n this.attributePayloadData = [];\n const telemetryPageName =\n (this.props.accountProfileProps &&\n this.props.accountProfileProps.context &&\n this.props.accountProfileProps.context.request &&\n this.props.accountProfileProps.context.request.telemetryPageName) ||\n '';\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.editRef = React.createRef();\n this.attributesContainerRef = React.createRef();\n }\n\n public componentDidMount(): void {\n this._buildPayloadData();\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n reaction(\n () => this.props.accountProfileProps.data.customerInformation.result,\n () => {\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n }\n );\n reaction(\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\n () => {\n this._buildPayloadData();\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this._renderAttributes();\n }\n\n private readonly _renderAttributes = (): JSX.Element | null => {\n const { config, data, resources } = this.props.accountProfileProps;\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\n const additionalInformationSectionHeading =\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\n const showAttributes = config.showAttributes || '';\n const attributes = showAttributes.split(',');\n const elements = attributes.map(att => {\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\n ) || { RecordId: 0 };\n return this._renderAttribute(attributeDefinition);\n });\n const edit = (this.state && this.state.editAttributes) || false;\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const customerInformation = data.customerInformation.result;\n\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\n const disableBtn: boolean =\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n return (\n \n {config.additionalInformationSectionHeading && (\n \n )}\n {config.showPhone && this._renderPhone()}\n {config.showVatNumber && this._renderVatNumber()}\n {elements}\n {this.gotException && (\n
\n \n
\n )}\n {!edit && (\n \n {resources.attributesEditButtonText}\n \n )}\n {edit && (\n \n {resources.attributesSaveButtonText}\n \n )}\n {edit && (\n \n {resources.attributesCancelButtonText}\n \n )}\n
\n );\n };\n\n private readonly _renderPhone = (): JSX.Element | null => {\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {phoneSectionHeading && }\n \n {this._renderError('Phone')}\n
\n );\n };\n\n private readonly _renderVatNumber = (): JSX.Element | null => {\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {vatNumberSectionHeading && }\n \n {this._renderError('VATNumber')}\n
\n );\n };\n\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\n const editAttributes = (this.state && this.state.editAttributes) || false;\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\n case AccountAttributeDataTypeValue.Integer:\n case AccountAttributeDataTypeValue.Decimal:\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.Text:\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.TrueFalse:\n return this._renderBoolean(customAttribute, className, editAttributes);\n default:\n return null;\n }\n };\n\n private readonly _renderIntegerDecimalInput = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderTextInputOrSelect = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n if (isEnumeration && customAttribute.EnumerationDetails) {\n const value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n return (\n
\n \n \n {hasNoValue && (\n \n )}\n {customAttribute.EnumerationDetails.map(option => {\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\n return (\n \n {option.EnumerationValue}\n \n );\n })}\n \n
\n );\n }\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderBoolean = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n let value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n const render = !(hasNoValue && !editAttributes);\n value = value || 'false';\n const toggleState = (value === 'true' && 'enable') || 'disable';\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\n const ariaPressed = (value === 'true' && true) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n let toggleValue = 'false';\n if (value === 'true') {\n toggleValue = 'false';\n } else {\n toggleValue = 'true';\n }\n\n return (\n \n \n {render && (\n \n \n \n \n
\n )}\n
\n );\n };\n\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\n const hasError = !StringExtensions.isNullOrWhitespace(error);\n if (hasError) {\n return (\n
\n \n
\n );\n }\n return null;\n };\n\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n return {\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\n IsMandatory: isMandatory\n };\n };\n\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ phone: value });\n };\n\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ vatNumber: value });\n };\n\n private readonly _enableAttributes = () => {\n this.hasError = false;\n\n // To clear exception messages\n this.gotException = false;\n this.setState({ editAttributes: true, attributeError: {} });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n if (this.attributesContainerRef.current) {\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\n this.attributeClassName\n );\n if (attributes && attributes.length > 0) {\n this._setFocus(attributes[0] as HTMLElement);\n }\n }\n }, 0);\n }\n };\n\n private readonly _disableAttributes = () => {\n this.setState({\n editAttributes: false,\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n };\n\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\n event: React.MouseEvent\n ) => {\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.selectedOptions[0].value;\n const index = event.currentTarget.selectedOptions[0].index;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n },\n selectedIndex: {\n ...this.state.selectedIndex,\n [name]: index\n }\n });\n };\n\n private readonly _getAttributes = () => {\n const { config, data } = this.props.accountProfileProps;\n const showAttributes = config.showAttributes || '';\n const showAttributesArray = showAttributes.split(',');\n const customer = data.customerInformation.result;\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attributes: IDictionary = {};\n\n showAttributesArray.forEach(showAttribute => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\n let value: string = '';\n if (attribute && attribute.AttributeValue) {\n const name = (attribute && attribute.Name) || '';\n switch (attribute.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n if (attribute.AttributeValue.IntegerValue) {\n value = String(attribute.AttributeValue.IntegerValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n if (attribute.AttributeValue.DecimalValue) {\n value = String(attribute.AttributeValue.DecimalValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n if (attribute.AttributeValue.StringValue) {\n value = attribute.AttributeValue.StringValue;\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n if (attribute.AttributeValue.BooleanValue !== null) {\n value = String(attribute.AttributeValue.BooleanValue);\n attributes[name] = value;\n }\n break;\n default:\n\n // Do nothing\n }\n }\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\n attributes[showAttribute] = '';\n }\n if (value.length === 0 && defaultValue) {\n attributes[showAttribute] = String(defaultValue);\n }\n });\n if (Object.keys(this.initialAttributes).length === 0) {\n this.initialAttributes = attributes;\n }\n this.setState({ attributes });\n };\n\n // eslint-disable-next-line\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\n const { resources } = this.props.accountProfileProps;\n const { phone, vatNumber } = this.state;\n const attributeError: IDictionary = {};\n let hasError: boolean = false;\n let hasValue: boolean = true;\n for (const [key, value] of Object.entries(this.state.attributes)) {\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\n if (payloadData) {\n switch (payloadData.dataTypeValue) {\n case AccountAttributeDataTypeValue.Decimal:\n const decimalValue = Number(value);\n if (isNaN(decimalValue)) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (decimalValue > this.maxDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxDecimalLimit\n );\n hasError = true;\n }\n\n if (decimalValue < this.minDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minDecimalLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.decimalValue = decimalValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Integer:\n const integerValue = Number(value);\n if (isNaN(integerValue) || value.includes('.')) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (integerValue > this.maxIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxIntegerLimit\n );\n hasError = true;\n }\n\n if (integerValue < this.minIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minIntegerLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.integerValue = integerValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n let trimValue = '';\n if (!StringExtensions.isNullOrWhitespace(value)) {\n trimValue = value.trim();\n }\n if (trimValue.length > this.maxStringLength) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputStringMaxLengthErrorText,\n payloadData.name,\n this.maxStringLength\n );\n hasError = true;\n }\n if (!hasError) {\n payloadData.textValue = trimValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n payloadData.booleanValue = value === 'true';\n break;\n default:\n\n // Do nothing\n }\n\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\n hasError = true;\n }\n\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attribute = custmerAttributes.find(att => att.Name === key);\n const index = custmerAttributes.findIndex(att => att.Name === key);\n\n if (index !== -1 && !hasValue) {\n custmerAttributes.splice(index, 1);\n }\n\n if (!hasError && hasValue) {\n if (attribute) {\n attribute.Attribute = undefined;\n attribute.DataTypeValue = payloadData.dataTypeValue;\n attribute.Name = payloadData.name;\n attribute.RecordId = payloadData.recordId;\n attribute.Units = undefined;\n attribute.AttributeValue = {\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n };\n attribute.ExtensionProperties = [];\n attribute.NameTranslations = [];\n } else {\n custmerAttributes.push({\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\n Attribute: undefined,\n DataTypeValue: payloadData.dataTypeValue,\n KeyName: payloadData.name,\n Name: payloadData.name,\n RecordId: payloadData.recordId,\n Units: undefined,\n AttributeValue: {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n },\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\n ExtensionProperties: [],\n 'NameTranslations@odata.type':\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\n NameTranslations: []\n });\n }\n }\n }\n }\n\n if (phone.trim().length > this.maxPhoneLength) {\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\n hasError = true;\n } else {\n customer.Phone = phone.trim();\n }\n\n if (vatNumber.trim().length > this.maxVATNumberLength) {\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\n hasError = true;\n } else {\n customer.VatNumber = vatNumber.trim();\n }\n\n this.hasError = hasError;\n this.setState({ attributeError });\n };\n\n private readonly _saveAttributes = async () => {\n const { context, data } = this.props.accountProfileProps;\n const customer = data.customerInformation.result;\n\n if (customer && context) {\n this._addOrUpdateAttribute(customer);\n const input = new updateCustomerAttributesInput(\n customer.AccountNumber,\n customer.Attributes || [],\n context.request.apiSettings,\n customer.Phone,\n customer.VatNumber\n );\n\n this.isUpdatingAttributes = true;\n this.gotException = false;\n\n if (!this.hasError) {\n this.setState({ editAttributes: false });\n try {\n await updateCustomerAttributes(input, context.actionContext);\n } catch (error) {\n this.gotException = true;\n customer.Attributes = this.initialCustomerAttributes;\n if (context.telemetry) {\n context.telemetry.exception(error);\n context.telemetry.debug('Unable to update customer attributes');\n }\n this.setState({\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n }\n this.setState({ editAttributes: false });\n if (!this.gotException) {\n this.initialAttributes = this.state.attributes;\n this.initialCustomerAttributes = customer.Attributes;\n this.initialPhone = this.state.phone;\n this.initialVatNumber = this.state.vatNumber;\n }\n }\n\n this.isUpdatingAttributes = false;\n\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n }\n };\n\n private readonly _setFocus = (element: HTMLElement | null) => {\n element?.focus();\n };\n\n private readonly _buildPayloadData = () => {\n const { data } = this.props.accountProfileProps;\n const attributeDefinitions = data.attributeDefinitions.result || [];\n const attributes: IDictionary = {};\n\n attributeDefinitions.forEach(attributeDefinition => {\n const attributePayloadData: IAttributePayloadData = {};\n attributePayloadData.recordId = attributeDefinition.RecordId;\n attributePayloadData.name = attributeDefinition.Name;\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\n switch (attributeDefinition.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\n if (attributePayloadData.name && defaultIntegerValue) {\n attributePayloadData.defaultValue = String(defaultIntegerValue);\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\n if (attributePayloadData.name && defaultDecimalValue) {\n attributePayloadData.defaultValue = String(defaultDecimalValue);\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\n if (attributePayloadData.name && defaultStringValue) {\n attributePayloadData.defaultValue = defaultStringValue;\n attributes[attributePayloadData.name] = defaultStringValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n const defaultBooleanValue =\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\n if (attributePayloadData.name) {\n attributePayloadData.defaultValue = String(defaultBooleanValue);\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\n }\n break;\n default:\n\n // Do nothing\n }\n this.attributePayloadData.push(attributePayloadData);\n });\n Object.keys(attributes).length > 0 && this.setState({ attributes });\n };\n\n private readonly _getCustomerPhoneAndVatNumber = () => {\n const customer = this.props.accountProfileProps.data.customerInformation.result;\n const phone = (customer && customer.Phone) || '';\n const vatNumber = (customer && customer.VatNumber) || '';\n this.setState({ phone, vatNumber });\n if (this.initialPhone.length === 0) {\n this.initialPhone = phone;\n }\n if (this.initialVatNumber.length === 0) {\n this.initialVatNumber = vatNumber;\n }\n };\n}\n\nexport default AccountProfileAttributes;\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 { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n isDisabled?: boolean;\n}\n\nexport interface IAccountProfileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountProfileLinks;\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 { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { updateCustomerPersonalization, updateCustomerPersonalizationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from './account-profile.data';\nimport {\n IAccountProfileProps,\n IEmailAddressSectionHeadingData,\n IHeadingData,\n INameSectionHeadingData\n} from './account-profile.props.autogenerated';\nimport AccountProfileAttributes from './components/account-profile-attributes';\nimport DescriptionComponent from './components/account-profile-description';\nimport LinksComponent, { ILinksData } from './components/account-profile-links';\nimport TextComponent from './components/account-profile-text';\n\nexport interface IAccountPreference {\n accountPreference: INodeProps;\n heading: React.ReactNode;\n buttonWrapper: INodeProps;\n buttonYesText: React.ReactNode;\n buttonNoText: React.ReactNode;\n button: React.ReactNode;\n description: React.ReactNode;\n onUpdateAccountPreference(preferenceType?: string): void;\n}\n\nexport interface IAccountPreferences {\n accountPreferences: INodeProps;\n heading?: React.ReactNode;\n personalization: IAccountPreference;\n extraPreferences?: IAccountPreference[];\n}\n\nexport interface IAccountProfileItem {\n AccountProfileItem: INodeProps;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface IAccountCustomerAttributes {\n customerAttributes?: React.ReactNode;\n}\n\nexport interface IAccountProfileViewProps extends IAccountProfileProps {\n AccountProfile: IModuleProps;\n accountProfileWrapper?: INodeProps;\n className: string;\n heading?: React.ReactNode;\n emailSection: IAccountProfileItem;\n nameSection: IAccountProfileItem;\n preferenceSection: IAccountPreferences;\n customerAttributesWrapper?: INodeProps;\n customerAttributesSection?: IAccountCustomerAttributes;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * AccountProfile component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfile extends React.Component> {\n @observable private isUpdatingPreference: boolean = false;\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n\n constructor(props: IAccountProfileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\n\n const { editButtonText, editButtonAriaLabel } = resources;\n const customerInformation = data.customerInformation.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n\n // As per the design, phone and vat numbers are part of the profile attributes section\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\n const editLink: ILinksData = {\n linkUrl: {\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\n },\n linkText: editButtonText,\n ariaLabel: editButtonAriaLabel,\n isDisabled: invalidAsyncCustomerState\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountProfile: {\n moduleProps: this.props,\n className: classnames('ms-account-profile', config.className)\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n accountProfileWrapper: {\n className: classnames('ms-account-profile-wrapper')\n },\n heading: heading && (\n \n ),\n emailSection: this._renderEmailSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\n customerInformation && customerInformation.Email\n ),\n nameSection: this._renderNameSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\n nameSectionHeading as INameSectionHeadingData,\n `${customerInformation && customerInformation.FirstName} ${customerInformation && customerInformation.LastName}`,\n [editLink]\n ),\n preferenceSection: this._renderPreferenceSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\n invalidAsyncCustomerState,\n customerInformation\n ),\n customerAttributesWrapper: {\n className: classnames('ms-account-profile__attributes-wrapper')\n },\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\n\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.nameSectionHeading!.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.resources.editButtonText) {\n this.props.resources.editButtonText = event.target.value;\n }\n };\n\n @computed get editProfileUrl(): string {\n return get(this.props, 'context.request.user.editProfileUrl', '');\n }\n\n private _renderEmailSection(\n className: string,\n heading?: IEmailAddressSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private _renderNameSection(\n className: string,\n heading?: INameSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private readonly onClickEventHandler = (className: string) => async () => {\n return this._updateAccountPersonalization(className);\n };\n\n private _renderPreferenceSection(\n className: string,\n invalidAsyncCustomerState: boolean,\n customerInformation?: Customer\n ): IAccountPreferences | null {\n const {\n personalizationDescription,\n personalizationEnableButtonAriaLabel,\n webTrackingDescription,\n webTrackingEnableButtonAriaLabel\n } = this.props.resources;\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\n const { enableDataAnalytics } = this.props.context.request.features;\n const extraPreferences: IAccountPreference[] = [];\n\n if (!customerInformation) {\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\n return null;\n }\n\n // Show browser activity login preference if switch is enabled AND a heading is provided\n enableDataAnalytics &&\n webTrackingSectionHeading &&\n extraPreferences.push(\n this._renderPreference(\n 'web-tracking',\n webTrackingSectionHeading as IHeadingData,\n webTrackingEnableButtonAriaLabel,\n webTrackingDescription,\n customerInformation.OptOutWebActivityTracking || false,\n invalidAsyncCustomerState\n )\n );\n\n return {\n accountPreferences: {\n className\n },\n heading: preferencesSectionHeading && (\n \n ),\n personalization: this._renderPreference(\n 'personalization',\n personalizationSectionHeading as IHeadingData,\n personalizationEnableButtonAriaLabel,\n personalizationDescription,\n customerInformation.OptOutPersonalization || false,\n invalidAsyncCustomerState\n ),\n extraPreferences: extraPreferences || undefined\n };\n }\n\n private readonly _renderPreference = (\n className: string,\n sectionHeading: IHeadingData,\n enableAriaLabel: string,\n description: string,\n isOptOut: boolean,\n disableBtn: boolean\n ) => {\n const { toggleDisableText, toggleEnableText } = this.props.resources;\n const toggleState = isOptOut ? 'disable' : 'enable';\n const onClickHandler = this.onClickEventHandler(className);\n this.payLoad.contentAction.etext = sectionHeading.text;\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return {\n accountPreference: {\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\n })\n },\n heading: sectionHeading && (\n \n ),\n buttonWrapper: {\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\n // Disable the toggle completely if customer is async.\n 'ms-account-profile__toggle-disabled': disableBtn\n })\n },\n buttonYesText: ,\n buttonNoText: ,\n button: (\n \n ),\n description: ,\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\n };\n };\n\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\n const customerInformation = this.props.data.customerInformation.result;\n\n if (customerInformation) {\n const {\n telemetry,\n context: { request, actionContext }\n } = this.props;\n\n let isOptOutPersonalization = false;\n let input;\n\n switch (preferenceType) {\n case 'web-tracking':\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n break;\n case undefined:\n case 'personalization':\n default:\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n }\n\n this.isUpdatingPreference = true;\n\n try {\n await updateCustomerPersonalization(input, actionContext);\n } catch (error) {\n if (telemetry) {\n telemetry.exception(error);\n telemetry.debug('Unable to update customer personalization');\n }\n }\n\n this.isUpdatingPreference = false;\n }\n };\n\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\n return ;\n };\n}\n\nexport default AccountProfile;\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 { IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps } from './account-profile';\n\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\n return (\n \n {heading}\n \n {extraPreferences &&\n extraPreferences.map((preferenceSecton, index) => {\n return ;\n })}\n \n );\n};\n\nconst AccountPreferenceSection: React.FC = ({\n accountPreference,\n heading,\n description,\n buttonWrapper,\n buttonYesText,\n button,\n buttonNoText\n}) => {\n return (\n \n {heading}\n {description}\n \n {buttonNoText}\n {button}\n {buttonYesText}\n \n \n );\n};\n\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nconst AccountProfileView: React.FC = props => {\n const {\n AccountProfile,\n infoMessageBar,\n accountProfileWrapper,\n heading,\n emailSection,\n nameSection,\n preferenceSection,\n customerAttributesWrapper,\n customerAttributesSection\n } = props;\n\n return (\n \n {infoMessageBar}\n {accountProfileWrapper && (\n \n {heading}\n \n \n \n \n )}\n {customerAttributesWrapper && {customerAttributesSection}}\n \n );\n};\n\nexport default AccountProfileView;\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 IAccountProfileDescription {\n className: string;\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\n

{description}

\n);\n\nexport default IAccountProfileDescription;\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 IAccountProfileText {\n className: string;\n text: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\n\nexport default IAccountProfileText;\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 } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text} ${accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''}`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n}\n\nexport default AccountWelcomeTile;\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 { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\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 IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountWishlistTile;\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 { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrganizationUsersTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default OrganizationUsersTile;\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 { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default PasswordResetInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default PasswordResetLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetLoadingMessage;\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 { PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordReset extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps) {\n super(props);\n\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPasswordResetProps, nextState: IPasswordResetViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex)\n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default PasswordReset;\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 { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InputType } from '../business-organization-list';\n\nexport interface IBusinessForm {\n FormWrapper: INodeProps;\n message?: React.ReactNode;\n items: IBusinessFormItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n}\n\nexport interface IBusinessFormItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IBusinessFormInput {\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IUserFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n isDisabled?: boolean;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport interface IBusinessFormInputProps {\n id?: string;\n type: string;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n isDisabled?: boolean;\n placeholder?: string;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport const FormInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n isDisabled,\n onChange,\n fieldReference,\n placeholder\n}) => (\n \n);\n\nexport interface IBusinessFormLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n asteriskText: string;\n}\n\nexport const FormLabel: React.FC = ({ id, forId, className, text, asteriskText }) => (\n \n);\n\nexport interface IBusinessFormButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const FormButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport interface IBusinessFormErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const FormFieldError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUser,\n BusinessPartnerUsersDataActions\n} from '@msdyn365-commerce/retail-proxy';\nimport { AdminRequestStatementButton, RequestStatementModal } from '@msdyn365-commerce-modules/account-management';\nimport {\n addOrganizationUser,\n AddOrganizationUserInput,\n ArrayExtensions,\n deleteOrganizationUser,\n DeleteOrganizationUserInput,\n editOrganizationUser,\n EditOrganizationUserInput,\n EmailRegex,\n Random,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n Heading,\n IDataTableProps,\n IHeadingsProperty,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITableItemProps,\n ITableRowProps,\n ITelemetryContent,\n Table,\n TableDataType,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IBusinessOrganizationListData } from './business-organization-list.data';\nimport { IBusinessOrganizationListProps, IBusinessOrganizationListResources } from './business-organization-list.props.autogenerated';\nimport { FormButton, FormFieldError, FormInput, FormLabel, IBusinessFormItem, IUserFormItem } from './components';\n\nexport interface IBusinessOrganizationListViewProps extends IBusinessOrganizationListProps {\n OrganizationUserList: IModuleProps;\n moduleContainer: INodeProps;\n heading: React.ReactNode;\n noUsersText?: string;\n addUserButton?: React.ReactNode;\n search?: React.ReactNode;\n organizationListTable: React.ReactNode;\n form?: IFormViewProps;\n formItems?: IUserFormItem[];\n formType: FormType;\n deleteUserForm?: React.ReactNode;\n viewUserDetails?: React.ReactNode;\n modalHeading?: React.ReactNode;\n modalState?: boolean;\n requestAccountStatementButton: React.ReactNode;\n requestStatementModal: React.ReactNode;\n toggleModal?(): void;\n}\n\nexport interface IBusinessOrganizationListState {\n isReady: boolean;\n formItems: IUserFormItem[];\n isFormActive: boolean;\n formType: FormType;\n selectedUserData?: BusinessPartnerUser;\n referenceBack?: HTMLButtonElement | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n displayedUserData?: any;\n refresh: boolean;\n isModalOpen: boolean;\n hasFormError: boolean;\n hasActionError: boolean;\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport enum FormType {\n None = 'NONE',\n Edit = 'EDIT',\n Remove = 'REMOVE',\n View = 'VIEW',\n Add = 'ADD'\n}\n\nexport enum InputType {\n Text = 'text',\n Email = 'email'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n B2BUserId = 'B2BUserId',\n Email = 'Email',\n SpendingLimit = 'SpendingLimit',\n Status = 'Status',\n FullName = 'Name'\n}\n\nexport interface IFormViewProps {\n modalClassName: string;\n FormWrapper: INodeProps;\n modalHeading?: string;\n modalDescription?: React.ReactNode;\n inputs?: IBusinessFormItem[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectedUser?: any;\n buttons?: React.ReactNode[];\n errorMessage?: React.ReactNode[];\n resources: IBusinessOrganizationListResources;\n toggle?(): void;\n}\n\nexport const renderInputSection = (\n inputs: IUserFormItem[],\n className: string,\n asteriskAfterLabel: string,\n onInputChange: (event: React.ChangeEvent) => void\n): IBusinessFormItem[] => {\n return inputs.map(element => {\n const { customClass, id, type, label, maxChars, isRequired, pattern, value, isDisabled, fieldReference } = element;\n return {\n wrapper: {\n className: classnames(className, id, customClass)\n },\n key: id,\n label: ,\n errorMessage: ,\n input: (\n \n )\n };\n });\n};\n\ninterface IUserTableItemProps extends ITableItemProps {\n user: BusinessPartnerUser;\n}\n\n/**\n *\n * BusinessOrganizationList component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass BusinessOrganizationList extends React.Component<\n IBusinessOrganizationListProps,\n IBusinessOrganizationListState\n> {\n public BusinessFormDefaultInputs: IUserFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.businessUserFirstNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.businessUserLastNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.businessUserEmailAddressLabelText,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-100'\n },\n {\n id: InputID.SpendingLimit,\n type: InputType.Text,\n label: this.props.resources.businessUserSpendingLimitLabelText,\n value: '',\n isRequired: false,\n customClass: 'width-50',\n maxChars: this.props.config?.maxLength\n }\n ];\n\n @observable\n private _viewport: GridSize;\n\n private readonly delayFocus: number = 110;\n\n private formChildReference: React.RefObject[] = [];\n\n private userFormEditReference: React.RefObject[] = [];\n\n private userFormDeleteReference: React.RefObject[] = [];\n\n private readonly submitButtonReference: React.RefObject;\n\n private readonly addUserButtonReference: React.RefObject;\n\n private readonly statementRequestButtonReference: React.RefObject;\n\n private readonly moduleClassName: string = 'ms-business-organization-list';\n\n private readonly mobileExcludedColumns: string[];\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n @computed get canSubmitStatementRequest(): boolean {\n return (\n !StringExtensions.isNullOrWhitespace(this.state.statementRequestFromDateString) &&\n !StringExtensions.isNullOrWhitespace(this.state.statementRequestToDateString)\n );\n }\n\n @computed get selectedUserName(): string {\n const { businessUserSelectedUserDisplayName } = this.props.resources;\n return this.state.selectedUserData\n ? businessUserSelectedUserDisplayName\n .replace('{firstName}', this.state.selectedUserData.FirstName || '')\n .replace('{lastName}', this.state.selectedUserData.LastName || '')\n : '';\n }\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IBusinessOrganizationListProps) {\n super(props);\n this._toggleModal = this._toggleModal.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._handleRemoveUserButton = this._handleRemoveUserButton.bind(this);\n\n this.mobileExcludedColumns = [InputID.Email, InputID.Status, InputID.SpendingLimit];\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n this.submitButtonReference = React.createRef();\n this.addUserButtonReference = React.createRef();\n this.statementRequestButtonReference = React.createRef();\n this.state = {\n isReady: false,\n formItems: this.addedReference(),\n isFormActive: false,\n formType: FormType.None,\n refresh: true,\n isModalOpen: false,\n hasFormError: false,\n hasActionError: false,\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public addedReference(): IUserFormItem[] {\n const newFormFields = this.BusinessFormDefaultInputs;\n return newFormFields.map((input, index) => {\n this.formChildReference[Number(index)] = React.createRef();\n input.fieldReference = this.formChildReference[Number(index)];\n return input;\n });\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser && window.addEventListener) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser && window.removeEventListener) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IBusinessOrganizationListProps,\n nextState: IBusinessOrganizationListState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n\n if (!this.state.isModalOpen && this.state.isModalOpen !== nextState.isModalOpen) {\n setTimeout(() => {\n this.formChildReference[0].current?.focus();\n this.submitButtonReference.current?.focus();\n }, this.delayFocus);\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config,\n resources,\n data: { users }\n } = this.props;\n const { className, heading } = config;\n const {\n businessUserAddUserButtonText,\n businessUserLoadingMessage,\n businessUserEmptyListMessage,\n businessUserErrorGettingUsersMessage,\n userAccountStatementLabel,\n fullOrganizationLabel,\n requestStatementButtonLabel,\n statementRequestModalHeaderLabel,\n cancelLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n sendToEmailLabel,\n selectedUserLabel\n } = resources;\n const {\n formItems,\n isFormActive,\n formType,\n isModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n isStatementRequestModalOpen\n } = this.state;\n\n const hasUsers = users && users.result && users.result.length > 0;\n this.payLoad.contentAction.etext = TelemetryConstant.AddUser;\n const addUserAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n const customer = this.props.data.customerInformation?.result;\n\n if (!hasUsers) {\n let errorMessage = '';\n if (users.status === 'LOADING') {\n errorMessage = businessUserLoadingMessage;\n } else if (users.status === 'FAILED') {\n errorMessage = businessUserErrorGettingUsersMessage;\n } else if (users.result && users.result.length === 0) {\n errorMessage = businessUserEmptyListMessage;\n }\n\n const errorProps = {\n ...this.props,\n className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n addUserButton: (\n \n {businessUserAddUserButtonText}\n \n ),\n noUsersText:

{errorMessage}

\n };\n\n return this.props.renderView(errorProps) as React.ReactElement;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n modalState: isModalOpen,\n addUserButton: (\n \n {businessUserAddUserButtonText}\n \n ),\n organizationListTable: ,\n toggleModal: this._toggleModal,\n formType,\n form:\n isFormActive && isModalOpen && (formType === FormType.Add || formType === FormType.Edit)\n ? this._renderUserForm()\n : this._renderUserDetails(),\n formItems,\n requestAccountStatementButton: (\n \n ),\n requestStatementModal: (\n \n )\n } as IBusinessOrganizationListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n // _createTableProps: creates the props for the organization list table\n private _createTableProps(): IDataTableProps {\n const { config, resources, context } = this.props;\n const { tableSort, showPagination, paginationItemPerPage } = config;\n const {\n businessUserPaginationNextButtonText,\n businessUserPaginationPreviousButtonText,\n businessUserEditButtonText,\n businessUserViewUserButtonText,\n businessUserDeleteButtonText,\n businessUserActionButtonText,\n businessUserPaginationAriaLabel,\n columnSortAriaLabel\n } = resources;\n\n const tableData = this._createTableItems();\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row.map(item => {\n if (this.isMobile && this.mobileExcludedColumns.includes(item.id)) {\n return undefined;\n }\n return {\n name: item.id,\n sortable: (tableSort && tableSort) || false,\n ariaLabel: columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources,\n headings: tableHeading,\n rows: tableData,\n className: `${this.moduleClassName}__table`,\n editLinkText: this.isMobile ? businessUserEditButtonText : '', // '' === showing just icon\n deleteLinkText: this.isMobile ? businessUserDeleteButtonText : '', // '' === showing just icon\n viewLinkText: businessUserViewUserButtonText,\n editLinkTooltip: businessUserEditButtonText,\n deleteLinkTooltip: businessUserDeleteButtonText,\n viewLinkTooltip: businessUserViewUserButtonText,\n enableToModify: true,\n actionLinkText: businessUserActionButtonText,\n showCheckBoxes: true,\n isSortable: tableSort,\n resourcePrefix: 'businessUser',\n showPagination,\n minifyActions: this.isMobile,\n excludedColumns: this.isMobile ? this.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context &&\n context.request &&\n context.request.query &&\n context.request.query.skip &&\n !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: paginationItemPerPage || 10,\n prevText: businessUserPaginationPreviousButtonText,\n nextText: businessUserPaginationNextButtonText,\n paginationText: businessUserPaginationAriaLabel,\n url: (context && this._getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n tableAriaLabel: resources.tableAriaLabel,\n tableTabIndex: 0,\n businessUserSelectCheckBoxAriaLabelText: resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: resources.sortByAscending,\n sortByDescending: resources.sortByDescending,\n actions: {\n onDelete: this._handleDeleteIcon,\n onEdit: this._handleEditIcon,\n onView: (this.isMobile && this._handleViewDetails) || undefined\n },\n formatPrice: this._formatPrice,\n checkBoxCallback: this._onSelectRow\n };\n }\n\n // _createTableItems: converts users recieved from the data-action(IBusinessParterUser[]) to tableRows(ITableItemProps[])\n private _createTableItems(): ITableRowProps[] {\n const {\n resources,\n data: { users }\n } = this.props;\n const { businessUserActiveStatusText, businessUserPendingStatusText, businessUserRemovedStatusText } = resources;\n const usersList = users && users.result;\n\n if (!ArrayExtensions.hasElements(usersList)) {\n return [];\n }\n\n return usersList.map((user, index) => {\n let statusString = '';\n this.userFormEditReference[index] = React.createRef();\n this.userFormDeleteReference[index] = React.createRef();\n\n switch (user.StatusValue) {\n case 0:\n statusString = businessUserPendingStatusText;\n break;\n case 1:\n statusString = businessUserActiveStatusText;\n break;\n case 2:\n default:\n statusString = businessUserRemovedStatusText;\n }\n\n return {\n row: [\n {\n id: InputID.FullName,\n type: TableDataType.Text,\n value: `${user.FirstName} ${user.LastName}`,\n user\n } as IUserTableItemProps,\n {\n id: InputID.Email,\n type: TableDataType.Text,\n value: user.Email || '',\n className: `${this.moduleClassName}__padRight`\n } as IUserTableItemProps,\n {\n id: InputID.Status,\n type: TableDataType.Text,\n value: statusString\n } as IUserTableItemProps,\n {\n id: InputID.SpendingLimit,\n type: TableDataType.Price,\n value: user.SpendingLimit || 0\n } as IUserTableItemProps\n ],\n isSelected: false,\n buttonReferences: {\n edit: this.userFormEditReference[index],\n delete: this.userFormDeleteReference[index]\n }\n };\n });\n }\n\n // _toggleModal: closes the modal and resets the form states\n private _toggleModal(): void {\n this.state.referenceBack?.focus();\n this.setState({\n isModalOpen: false,\n isFormActive: false,\n referenceBack: undefined,\n formType: FormType.None\n });\n }\n\n // _handleAddUserButtonClicked: resets input fields, opens the modal, and sets the form states\n private readonly _handleAddUserButtonClicked = () => {\n // Reset form\n const newForm = this.state.formItems;\n newForm.forEach(input => {\n if (input.id === InputID.Email) {\n // Make sure email input is re enabled (it gets disabled when admin is editing user)\n input.isDisabled = false;\n }\n\n input.value = '';\n });\n\n const newUser = { B2BUserId: Random.Guid.generateGuid() } as BusinessPartnerUser;\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n formType: FormType.Add,\n referenceBack: this.addUserButtonReference.current,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: newUser\n });\n };\n\n // _handleAddEditFormSaveButton: triggered on the save button for both add/edit forms. Calls the appropriate data-action and reloads the page when successful\n private readonly _handleAddEditFormSaveButton = async () => {\n const { context } = this.props;\n const { formType, formItems } = this.state;\n\n const updatedUser = this._createBusinessPartner(formItems);\n\n if (formType === FormType.Edit) {\n editOrganizationUser(new EditOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n } else {\n addOrganizationUser(new AddOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n }\n };\n\n // _createBusinessPartner: attempts to convert input values(IUserFormItem) to a new user(BusinessPartnerUser)\n private readonly _createBusinessPartner = (inputs: IUserFormItem[]): BusinessPartnerUser => {\n const newUser: BusinessPartnerUser = { ...this.state.selectedUserData! };\n\n inputs.forEach(input => {\n // Deals with input values need need to be converted into numbers\n if (input.id === InputID.SpendingLimit) {\n newUser[input.id] = Number.parseFloat(input.value) || 0;\n } else {\n newUser[input.id] = input.value;\n }\n });\n\n return newUser;\n };\n\n // _handleEditIcon: converts the table row data(ITableItemProps[]) to input fields(IUserFormItem) and opens the edit form\n private readonly _handleEditIcon = (userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null) => {\n // Split full name into first and last\n const possibleName = userData.find(cell => {\n return cell.id === 'Name';\n });\n const fullName = (possibleName && (possibleName.value as string)) || '';\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n const firstName = fullName.substring(0, lastSpaceIndex);\n\n const lastName = fullName.substring(lastSpaceIndex + 1);\n\n // Create clone of formItems, map users information, update state\n const { formItems } = this.state;\n const newForm = formItems;\n\n newForm.forEach(input => {\n switch (input.id) {\n case InputID.FirstName:\n input.value = firstName;\n break;\n case InputID.LastName:\n input.value = lastName;\n break;\n case InputID.Email: // Email can never be null/undefined as it is a required field\n input.isDisabled = true;\n const possibleCell = userData.find(cell => {\n return input.id === cell.id;\n });\n input.value = (possibleCell && (possibleCell.value as string)) || '';\n break;\n default:\n const dataCell = userData.find(cell => {\n return input.id === cell.id;\n });\n input.value = (dataCell && (dataCell.value as string)) || '';\n }\n });\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n referenceBack,\n formType: FormType.Edit,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: (userData[0] as IUserTableItemProps).user\n });\n };\n\n // _handleDeleteIcon: opens removeUser confirmation window\n private readonly _handleDeleteIcon = (userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null) => {\n const newUser: BusinessPartnerUser = { ...(userData[0] as IUserTableItemProps).user };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // Split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData,\n referenceBack,\n selectedUserData: newUser,\n formType: FormType.Remove,\n isModalOpen: true,\n isFormActive: false\n });\n };\n\n // _handleViewDetails: opens user details window\n private readonly _handleViewDetails = (userData: ITableItemProps[]) => {\n const newUser: BusinessPartnerUser = { ...(userData[0] as IUserTableItemProps).user };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // Split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData,\n selectedUserData: newUser,\n formType: FormType.View,\n isModalOpen: true,\n isFormActive: false\n });\n };\n\n // _handleRemoveUserButton: triggered on confirmation of removing a user.\n private readonly _handleRemoveUserButton = () => {\n // TODO\n const { context } = this.props;\n const { selectedUserData: deleteUserData } = this.state;\n\n if (deleteUserData) {\n deleteOrganizationUser(new DeleteOrganizationUserInput(deleteUserData), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n });\n }\n this.setState({\n formType: FormType.None,\n isModalOpen: false\n });\n };\n\n private readonly callbackRemoveButton = () => {\n this._handleRemoveUserButton();\n };\n\n // _renderUserDetails: creates the remove/view form props\n private _renderUserDetails(): IFormViewProps {\n const { resources } = this.props;\n const { formType, displayedUserData } = this.state;\n const {\n businessUserRemoveModalHeaderText,\n businessUserRemoveModalDescription,\n businessUserViewModalHeaderText,\n businessUserCancelButtonText,\n businessUserCancelRemoveUserButtonText,\n businessUserRemoveUserButtonText,\n businessUserErrorUpdatingUsersMessage\n } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Remove ? 'type-remove' : 'type-view';\n const handleRemoveButton = this.callbackRemoveButton;\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Remove ? businessUserRemoveModalHeaderText : businessUserViewModalHeaderText,\n modalDescription: formType === FormType.Remove && (\n

{businessUserRemoveModalDescription}

\n ),\n selectedUser: displayedUserData,\n buttons: [\n formType === FormType.Remove && (\n \n {businessUserRemoveUserButtonText}\n \n ),\n \n ],\n errorMessage: [\n \n ],\n resources\n };\n }\n\n // _renderUserForm: creates the add/edit form props\n private _renderUserForm(): IFormViewProps {\n const { resources } = this.props;\n const { formType, formItems, hasFormError, hasActionError, isReady } = this.state;\n const {\n businessUserEditUserFormHeadingText,\n businessUserAddUserFormHeadingText,\n businessUserSaveButtonArialabel,\n businessUserSaveButtonText,\n businessUserCancelButtonArialabel,\n businessUserCancelButtonText,\n businessUserFieldIncorrectErrorText,\n businessUserActionErrorText,\n businessUserAllFieldsRequiredMessage,\n asteriskAfterLabel\n } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Add ? 'type-add' : 'type-edit';\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Add ? businessUserAddUserFormHeadingText : businessUserEditUserFormHeadingText,\n modalDescription: formType === FormType.Add && (\n

{businessUserAllFieldsRequiredMessage}

\n ),\n inputs: renderInputSection(formItems, `${formClassName}-item`, asteriskAfterLabel, this._onInputChange),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasFormError && (\n \n ),\n hasActionError && (\n \n )\n ],\n resources\n };\n }\n\n // _onInputChange: updates the fomrItems state on every input change\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Update state object with latest values and check if form is ready\n // TODO: remove !refresh\n this.setState(prev => ({\n refresh: !prev.refresh,\n isReady: this._isFormReady(),\n formItems: newForm,\n hasFormError: false,\n hasActionError: false\n }));\n };\n\n // _isFormReady: checks whether the current values in the input fields are valid for submission, this will also disable/enable the submit button.\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const formItem of formItems) {\n // Will return TRUE if:\n // - input field is required and EMPTY\n // OR\n // - pattern provided and value does not match pattern\n // OR\n // - if spendingLimit input --> make sure value can be parsed into an NUMBER\n if (formItem.isRequired && formItem.value.length === 0) {\n return false;\n } else if (formItem.pattern !== undefined && formItem.value.match(formItem.pattern) === null) {\n return false;\n } else if (formItem.id === InputID.SpendingLimit && formItem.value !== '' && isNaN(Number.parseFloat(formItem.value))) {\n this.setState({\n hasFormError: true\n });\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _formatPrice = (price: number): string => {\n return this.props.context.cultureFormatter ? this.props.context.cultureFormatter.formatCurrency(price) : price.toString();\n };\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n private readonly _toggleStatementRequestDropdown = (): void => {\n this.setState({\n isStatementRequestAdminDropdownOpen: !this.state.isStatementRequestAdminDropdownOpen\n });\n };\n\n private readonly _updateFromDate = (newFromDate: string) => {\n this.setState({\n statementRequestFromDateString: newFromDate\n });\n };\n\n private readonly _updateToDate = (newToDate: string) => {\n this.setState({\n statementRequestToDateString: newToDate\n });\n };\n\n private readonly _showRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestModalOpen: true\n });\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const businessPartnerUsers = this.props.data.users.result!;\n\n const currentUser = businessPartnerUsers.find(element => element.Email === customer.Email);\n const B2BUserId = this._getB2BUserId(currentUser);\n\n const statementRequest: AccountStatementRequest = {\n FromDate: new Date(this.state.statementRequestFromDateString),\n ToDate: new Date(this.state.statementRequestToDateString),\n IsForFullOrganization: this.state.statementRequestFullOrg,\n RequestedUserId: B2BUserId,\n RequestingUserEmail: customer.Email,\n DeliveryTypeValue: BusinessPartnerOperationDeliveryType?.Email || 1\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this._closeStatementRequestModal();\n };\n\n private readonly _getB2BUserId = (currentUser: BusinessPartnerUser | undefined) => {\n if (this.state.statementRequestFullOrg || !this.state.selectedUserData) {\n return currentUser ? currentUser.B2BUserId : '';\n }\n return this.state.selectedUserData.B2BUserId;\n };\n\n private readonly _closeStatementRequestModal = () => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n this.statementRequestButtonReference.current?.focus();\n };\n\n private readonly _onSelectRow = (records: ITableRowProps[]) => {\n const selectedRow = records.find(rowProps => rowProps.isSelected);\n\n this.setState({\n selectedUserData: selectedRow ? (selectedRow.row[0] as IUserTableItemProps).user : undefined\n });\n };\n}\n\nexport default BusinessOrganizationList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessOrganizationListViewProps, IFormViewProps, InputID } from './business-organization-list';\nimport { IBusinessFormItem } from './components/small-components';\n\nconst BusinessFormItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst BusinessUserForm: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n const modalBody = (\n <>\n {modalDescription}\n \n {inputs &&\n inputs.map((item: IBusinessFormItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n \n );\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst BusinessUserDetails: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, selectedUser, buttons, errorMessage, resources, toggle } = props;\n let modalBody = null;\n\n if (!selectedUser) {\n modalBody = errorMessage;\n } else {\n const { FirstName, LastName } = selectedUser;\n const userFullName = `${FirstName} ${LastName}`;\n\n modalBody = (\n <>\n {modalDescription}\n \n \n {userFullName}\n \n {Object.keys(selectedUser).map((data, index) => {\n if (data === InputID.FirstName || data === InputID.LastName) {\n return null;\n }\n const label = resources[`table${data}HeadingText`] || data;\n return (\n \n {label}\n {': '}\n {selectedUser[data]}\n \n );\n })}\n \n \n );\n }\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst _getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\n switch (type) {\n case 'ADD':\n case 'EDIT':\n return ;\n case 'VIEW':\n case 'REMOVE':\n return ;\n default:\n return null;\n }\n};\n\nconst _renderModal = (\n className: string,\n isModalOpen: boolean,\n headingSection: React.ReactNode,\n bodySection: React.ReactNode,\n footerSection: React.ReactNode,\n toggleModal?: () => void\n) => {\n return (\n \n {headingSection}\n {bodySection}\n {footerSection}\n \n );\n};\n\nconst BusinessOrganizationList: React.FC = props => {\n const {\n OrganizationUserList,\n moduleContainer,\n heading,\n noUsersText,\n addUserButton,\n organizationListTable,\n form,\n formType,\n toggleModal,\n requestAccountStatementButton,\n requestStatementModal\n } = props;\n\n const ButtonList: React.ReactNode = (\n \n {addUserButton}\n {requestAccountStatementButton}\n \n );\n\n if (noUsersText) {\n return (\n \n \n {heading}\n {ButtonList}\n {requestStatementModal}\n {noUsersText}\n \n \n );\n }\n\n return (\n \n \n {heading}\n {ButtonList}\n {requestStatementModal}\n {organizationListTable}\n \n {form && _getForm(formType, form, toggleModal)}\n \n );\n};\n\nexport default BusinessOrganizationList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Msdyn365, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n \n );\n }\n}\n\nexport default CatalogPicker;\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 { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

\n ({count}\n {` `}\n {suffix})\n

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && 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 return 'xs';\n }\n}\n\nexport default SitePicker;\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 { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (slots && slots.socialShareItems.length === 0) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\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 { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList 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 private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\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 propsCarousel: 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\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n"],"names":["ContentCardLinks","React","constructor","_mapEditableLinks","linkdata","length","editableLinks","forEach","link","index","payLoad","getPayloadObject","this","props","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","btnClass","editableLink","ariaLabel","className","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onClick","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","FarmlandsButtonBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleLinkTextChange","linkIndex","event","config","target","value","contentBlockLinks","LinksComponent","Object","assign","error","contentBlockviewProps","_objectSpread","moduleClass","contentBlockContainer","moduleProps","classnames","detailsContainer","contentBlockAnchorTag","tag","renderView","Module","Node","navigationMenuSource","NavigationMenu","super","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","cmsOnly","all","_updateViewport","bind","viewport","device","Type","state","isMobile","menuItemList","locale","nameTranslations","nameTranslation","find","item","Language","toLowerCase","Text","componentDidMount","resizeThrottledEventHandler","window","addThrottledEvent","componentWillUnmount","removeEventListener","_mapData","isEmptyOrNullObject","data","defaultImageSettings","viewports","xs","q","w","h","xl","lazyload","viewProps","imageSettings","gridSettings","Navigation","resources","menuAriaLabel","MenuListContainer","MenuList","ListItem","Link","Button","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","result","map","_constructMenuItemData","undefined","cmsNavItems","idx","retailItem","cmsItem","id","RSItemIdInit","getFriendlyName","NameTranslations","linkURL","Url","subMenu","_getNestedChildren","CMSItemIdInit","imageDestinationURL","imageLink","imageSource","image","src","_getCMSNestedChildren","category","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","sm","md","lg","__decorate","observable","computed","NavigationMenuView","firstLevelMenuLinkText","supportedLevel","currentLevel","_renderReturnToFirstLevelButton","parentMenu","ButtonTo","_handleBackFirstLevel","_closeNavigationMenu","activeMenu","_handleDropdownToggle","parentId","isBackTrack","mobileViewLabelText","selectedSubMenu","_resetFocus","_handleGoBack","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_updateSelectedSubMenu","subMenuHeight","_calculateSubNavHeight","_closeSubmenu","document","body","addEventListener","ref","tabIndex","_renderDisplay","menuItem","i","_getFromSubMenu","key","_createMenuItemList","style","height","top","subMenuItemMax","_item$subMenu","subMenuLength","calculatedSubNavHeight","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","levelClassName","menuOptions","option","hasOptions","toString","_renderMenu","onFocus","isMainMenu","href","onMouseEnter","level","currentItem","createSearchResultModal","modalProps","refineMenu","sortByDropDown","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","renderTitle","title","TitleContainer","titleCount","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","errorMessage","searchTerm","getQueryParams","pathName","decodeURIComponent","location","pathname","decodeURI","search","substr","indexOf","replace","split","param","reduce","values","_ref","noResultsMessage","AccountAddressTile","handleHeadingChange","heading","text","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","description","format","onEdit","DescriptionComponent","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","url","actionContext","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","toFixed","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","_this$props$data$feat","_this$props$data$cust","RetailB2BEcommerceFeatureState","featureState","Name","params","isEditor","IsEnabled","customerInformation","IsB2b","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountProfileEdit","moduleClassName","onTextBoxChange","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","viewState","isShowLoading","accountProfileEdit","loading","Modal","isOpen","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","display","aadConainer","accountProfileEditLocalAccount","_renderLocalAccount","str","e","createElement","innerHTML","childNodes","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","observer","AccountProfileEditItem","AccountProfileEditLoading","_ref3","_ref2","button","LocalAccount","disabled","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","htmlFor","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","_this$props$accountPr","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","att","attributeDefinition","attribute","IsHidden","toLocaleLowerCase","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","disableBtn","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","attributesContainerRef","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","EnumerationValue","toggleState","arialabel","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","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","KeyName","Phone","VATNumber","VatNumber","async","updateCustomerAttributesInput","AccountNumber","apiSettings","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","isDisabled","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonWrapper","buttonYesText","buttonNoText","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","get","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","FirstName","LastName","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountWelcomeTile","accountInfo","accountInformation","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","IsB2bAdmin","PasswordReset","newPasswordRegex","reenterPasswordRegex","PasswordRegex","passwordReset","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","passwordResetLocalAccount","newPasswordLabelText","confirmPasswordLabelText","PasswordResetErrorComponent","passwordEntryMismatchError","PasswordResetButtonComponent","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","FormInput","isRequired","fieldReference","placeholder","FormLabel","asteriskText","FormButton","FormFieldError","_ref4","FormType","InputType","InputID","renderInputSection","inputs","asteriskAfterLabel","onInputChange","customClass","maxChars","BusinessOrganizationList","_this$props$config","BusinessFormDefaultInputs","businessUserFirstNameLabelText","businessUserLastNameLabelText","businessUserEmailAddressLabelText","SpendingLimit","businessUserSpendingLimitLabelText","delayFocus","formChildReference","userFormEditReference","userFormDeleteReference","_handleAddUserButtonClicked","newForm","formItems","newUser","B2BUserId","Random","Guid","generateGuid","isFormActive","formType","Add","referenceBack","addUserButtonReference","isModalOpen","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","then","reload","catch","trace","addOrganizationUser","AddOrganizationUserInput","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","user","_handleDeleteIcon","displayedUserData","TableDataType","Price","cultureFormatter","formatCurrency","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","price","_getCurrentUrl","reqContext","URL","requestUrl","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_requestStatement","currentUser","_getB2BUserId","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","callerContext","BusinessPartnerUsersDataActions","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","isSelected","row","_toggleModal","mobileExcludedColumns","Status","_viewport","submitButtonReference","addedReference","businessUserSelectedUserDisplayName","_this$formChildRefere","_this$submitButtonRef","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","fullOrganizationLabel","requestStatementButtonLabel","statementRequestModalHeaderLabel","cancelLabel","fromDateLabel","toDateLabel","submitRequestLabel","sendToEmailLabel","selectedUserLabel","hasUsers","TelemetryConstant","AddUser","addUserAttributes","status","errorProps","OrganizationUserList","moduleContainer","Heading","headingTag","addUserButton","noUsersText","modalState","organizationListTable","Table","_createTableProps","toggleModal","form","_renderUserForm","_renderUserDetails","requestAccountStatementButton","AdminRequestStatementButton","buttonReference","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","requestStatementModal","RequestStatementModal","toggle","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","modalHeaderLabel","onSubmitRequest","selectedUser","selectedUserName","tableSort","showPagination","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserActionButtonText","businessUserPaginationAriaLabel","columnSortAriaLabel","tableData","_createTableItems","headings","ArrayExtensions","hasElements","sortable","rows","editLinkText","deleteLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","enableToModify","actionLinkText","showCheckBoxes","isSortable","resourcePrefix","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","nextText","paginationText","isSingleSelectOnly","tableAriaLabel","tableTabIndex","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","actions","onDelete","onView","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","StatusValue","FullName","buttonReferences","delete","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","modalClassName","FormWrapper","modalHeading","modalDescription","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","BusinessFormItem","BusinessUserForm","_renderModal","BusinessUserDetails","userFullName","headingSection","bodySection","footerSection","wrapClassName","autoFocus","fade","applicationNode","ModalHeader","ModalFooter","ButtonList","_getForm","formProps","CatalogPicker","handleTextChange","handleParagraphChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogs","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","getUrlSync","fullUrl","searchParams","set","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","firstOrDefault","Images","Image","generateImageUrl","Uri","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","assembleNode","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentBlock","_this$props$context$r","_this$props$config$im","imageAriaLabel","contentBlockTitle","imageProps","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","imageContainer","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","groupTitle","_renderCartLinesGroupTitle","_cartLine$data2","countItem","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","_props$context$action","_props$cart","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","cart","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_ref8","orderHistoryProps","alert","emptyMessage","backToShoppingLink","list","table","moreButton","buildReviewCard","cardProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","report","createReviewModal","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","submitButton","cancelButton","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","MenuTypeIndexId","MenuSource","_this$props$config$di","_this$props$config$di2","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","DivContainer","ImageDivContainer","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","addedAllMenu","categoryPromotionalContent","cmsItemText","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","promotionalContent","menuSource","Retail","Cms","shouldOpenNewTab","imageSourceUrl","arguments","_updateCategoryImage","categoryImageSrc","promotionalImage","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleFocusOutside","relatedTarget","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","_categoryImage$imageS","categoryImageSettings","menuItemRef","_this$menuItemRef$cur","children","menuItemDatum","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","haveSubmenu","Math","round","hoverEffect","isParent","imagesource","onMouseOver","_renderPromotionalLink","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","SitePicker","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","_document","_document2","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","preventDefault","cookies","isConsentGiven","cookieConfig","maxAge","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","SocialShare","slots","socialShareItems","viewprops","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","SocialShareView","SocialShareElement","TileList","_telemetryContent","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","_createHeading","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","content","tileListView","tileItem","keyIndex"],"sourceRoot":""}