{"version":3,"file":"static/js/10.17bde54255f63bafa99f.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/mands/utilities/quantity/Quantity.tsx?899c","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/account-profile.view.tsx?be27","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/custom-components/buybox-dimensions.tsx?90c7","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/custom-components/accordian-custom.tsx?1b9c","webpack://Msdyn365.Commerce.Online/./src/actions/vsi-add-product-interest.ts?db84","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/buybox.view.tsx?65b5","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/checkout-delivery-options.view.tsx?0384","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/components/carticon.component.tsx?c62d","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/custom-components/checkout-price.tsx?5545","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/components/cartlineitem.component.tsx?f211","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/custom-components/mands-modal.tsx?8d79","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://Msdyn365.Commerce.Online/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.tsx?78b1","webpack://Msdyn365.Commerce.Online/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?7378","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?81f3","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.tsx?c17e","webpack://Msdyn365.Commerce.Online/./src/modules/account-invoice-tile/account-invoice-tile.view.tsx?0a60","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/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/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","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/footer-item/footer-item.tsx?074a","webpack://Msdyn365.Commerce.Online/./src/modules/footer-item/footer-item.view.tsx?c5af","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/order-history-with-search-and-filters/components/order-history-with-search-and-filters-organization-wide-selector.component.tsx?b9a7","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"],"sourcesContent":["import { debounce } from 'lodash';\r\nimport * as React from 'react';\r\nimport { IQuantityProps } from './Quantity.props';\r\n\r\ninterface IQuantityState {\r\n currentInput: number;\r\n}\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity\r\n */\r\n\r\nexport default class Quantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1,\r\n decrementGlyphClass: 'fas fa-minus',\r\n incrementGlyphClass: 'fas fa-plus'\r\n };\r\n\r\n private inputRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount || 1 };\r\n this._onIncrement = this._onIncrement.bind(this);\r\n this._onDecrement = this._onDecrement.bind(this);\r\n this._handleChange = this._handleChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\r\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\r\n const disabled = this.state.currentInput === this.props.min;\r\n const incDisabled = this.state.currentInput === this.props.max;\r\n const currentValue = this.state.currentInput;\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n private _onIncrement(): void {\r\n let invokeCallback = false;\r\n this.setState(\r\n (prevState: IQuantityState) => {\r\n if (prevState.currentInput < this.props.max) {\r\n invokeCallback = true;\r\n return { currentInput: prevState.currentInput + 1 };\r\n } else {\r\n invokeCallback = false;\r\n return { currentInput: this.props.max };\r\n }\r\n // tslint:disable-next-line:align\r\n },\r\n () => {\r\n invokeCallback && this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n );\r\n }\r\n\r\n private _onDecrement(): void {\r\n let invokeCallback = false;\r\n this.setState(\r\n (prevState: IQuantityState) => {\r\n if (prevState.currentInput > 1) {\r\n invokeCallback = true;\r\n return { currentInput: prevState.currentInput - 1 };\r\n } else {\r\n invokeCallback = false;\r\n return { currentInput: 1 };\r\n }\r\n // tslint:disable-next-line:align\r\n },\r\n () => {\r\n invokeCallback && this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n );\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = parseInt(e.target.value, 10);\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n\r\n if (currentValue > this.props.max) {\r\n // tslint:disable-next-line:align\r\n this.setState({ currentInput: this.props.max }, () => {\r\n debounce(() => {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }, 200)();\r\n });\r\n } else {\r\n this.setState({ currentInput: currentValue }, () => {\r\n debounce(() => {\r\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n\r\n if (inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }\r\n }, 200)();\r\n });\r\n }\r\n }\r\n\r\n private _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\r\n this.setState({ currentInput: minValue }, () => {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n });\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n };\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 * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport {\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/dist/types/modules/account-profile/account-profile';\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC = props => {\r\n const { AccountProfile, heading, emailSection, nameSection } = props;\r\n const { data } = props;\r\n const customerInformation = data.customerInformation.result;\r\n const firstName = (customerInformation && customerInformation.FirstName) || undefined;\r\n const lastName = (customerInformation && customerInformation.LastName) || undefined;\r\n const email = (customerInformation && customerInformation.Email) || undefined;\r\n\r\n return (\r\n \r\n {heading}\r\n {email && }\r\n {firstName && lastName && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","import { IBuyboxViewProps } from '@msdyn365-commerce-modules/buybox/dist/types';\r\nimport { IBuyboxResources } from '@msdyn365-commerce-modules/buybox/dist/types/index';\r\nimport { reaction } from 'mobx';\r\nimport * as React from 'react';\r\ninterface IBuyboxDimensionProps {\r\n isSizeVariantAvailable: boolean;\r\n}\r\ninterface IBuyboxDimensionState {\r\n colorName: string;\r\n selectedSize: string;\r\n}\r\n\r\n/**\r\n *\r\n * BuyboxDimensions component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class BuyboxDimensions extends React.PureComponent {\r\n constructor(props: IBuyboxViewProps & IBuyboxDimensionProps) {\r\n super(props);\r\n this.state = {\r\n colorName: '',\r\n selectedSize: ''\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n const {\r\n data: {\r\n productDimensions: { result: productDimensions }\r\n }\r\n } = this.props;\r\n\r\n productDimensions &&\r\n productDimensions.map(async dimension => {\r\n if (dimension.DimensionValues && dimension.DimensionValues.length === 1 && dimension.DimensionTypeValue === 1) {\r\n await this.props.callbacks.dimensionSelectedAsync(\r\n dimension.DimensionTypeValue,\r\n dimension.DimensionValues[0].RecordId.toString()\r\n );\r\n }\r\n });\r\n reaction(\r\n () => this.props.data?.productDimensions && this.props.data?.productDimensions?.result?.length,\r\n () => {\r\n if(this.props.data?.productDimensions && this.props.data?.productDimensions?.result && this.props.data?.productDimensions?.result?.length > 0){\r\n this.props.data?.productDimensions?.result?.map(dimen => {\r\n if(this.props.callbacks.initializeDimension){\r\n let size = dimen?.DimensionTypeValue.toString()\r\n this.props.callbacks.initializeDimension(size)\r\n }\r\n })\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n data: {\r\n productDimensions: { result: productDimensions }\r\n },\r\n context: {\r\n request: {\r\n apiSettings: { baseImageUrl }\r\n },\r\n app: {\r\n config: { enableStockCheck }\r\n }\r\n },\r\n resources,\r\n callbacks,\r\n isSizeVariantAvailable\r\n } = this.props;\r\n if(!this.state.colorName) {\r\n productDimensions && productDimensions.map(async dimension => {\r\n if (dimension.DimensionValues && dimension.DimensionValues.length === 1 && dimension.DimensionTypeValue === 1) {\r\n await this.props.callbacks.dimensionSelectedAsync(\r\n dimension.DimensionTypeValue,\r\n dimension.DimensionValues[0].RecordId.toString()\r\n );\r\n }\r\n });\r\n }\r\n let selectedSize: string | null | undefined = this.state.selectedSize;\r\n let selectedColorName: string | null | undefined = this.state.colorName;\r\n return (\r\n
\r\n {productDimensions\r\n ? productDimensions.map((dimension, i) => {\r\n const swatchName = this._getDropdownName(dimension.DimensionTypeValue, resources).toLowerCase();\r\n if(dimension.DimensionTypeValue === 3) {\r\n if(dimension.DimensionValue?.Value) {\r\n selectedSize = dimension.DimensionValue?.Value;\r\n } else {\r\n dimension.DimensionValues?.map((dv, i) => {\r\n if(dv.DimensionId?.toString() === selectedSize) {\r\n selectedSize = dv.Value;\r\n }\r\n });\r\n }\r\n }\r\n if(dimension.DimensionTypeValue === 1) {\r\n if(dimension.DimensionValue?.Value) {\r\n selectedColorName = dimension.DimensionValue?.Value;\r\n } else {\r\n dimension.DimensionValues?.map((dv, i) => {\r\n if(dv.DimensionId?.toString() === selectedColorName) {\r\n selectedColorName = dv.Value;\r\n }\r\n });\r\n }\r\n }\r\n return (\r\n
\r\n {dimension.DimensionValue && dimension.DimensionValue.Value ? (\r\n
\r\n Selected {callbacks.getDropdownName(dimension.DimensionTypeValue, resources).toLowerCase()}:{' '}\r\n {dimension.DimensionValue.Value} \r\n {dimension.DimensionTypeValue === 3 && !isSizeVariantAvailable && enableStockCheck && (\r\n Out of stock\r\n )}\r\n
\r\n ) : (\r\n
\r\n {/* VSI-Customization Display Lables based on Selection of different dimensions */}\r\n {dimension.DimensionTypeValue === 1\r\n ? this.state.colorName\r\n ? 'Selected'\r\n : 'Select'\r\n : dimension.DimensionTypeValue === 3\r\n ? this.state.selectedSize\r\n ? 'Selected'\r\n : 'Select'\r\n : ''}{' '}\r\n {callbacks.getDropdownName(dimension.DimensionTypeValue, resources).toLowerCase()}:{' '}\r\n {dimension.DimensionTypeValue === 1 ? selectedColorName : selectedSize}\r\n
\r\n )}\r\n
    \r\n {dimension.DimensionValues\r\n ? dimension.DimensionValues.map((dimensionValue, index) => {\r\n const dimensionItemId = dimensionValue.DimensionId!.toString();\r\n //selected dimension customization\r\n let sizeQuery;\r\n let colorQuery;\r\n try {\r\n if (new URLSearchParams(window?.location?.search).get('size')) {\r\n sizeQuery = new URLSearchParams(window?.location?.search).get('size');\r\n // VSI-Customization Update State regarding selected SelectedSize\r\n this.setState({ selectedSize: sizeQuery! });\r\n }\r\n if (new URLSearchParams(window?.location?.search).get('color')) {\r\n colorQuery = new URLSearchParams(window?.location?.search).get('color');\r\n // VSI-Customization Update State regarding selected ColorName\r\n this.setState({ colorName: colorQuery || '' });\r\n }\r\n } catch (error) {}\r\n // const selectedValue =\r\n // (dimension.DimensionValue &&\r\n // dimension.DimensionValue.Value) ||\r\n // \"not available\";\r\n\r\n //selected dimension customization\r\n\r\n //commented current implementation\r\n // const isActive = selectedValue === dimensionValue.Value;\r\n const isActive =\r\n sizeQuery?.toLowerCase() === dimensionValue.Value?.toLowerCase() ||\r\n sizeQuery === dimensionValue.DimensionId?.toString() ||\r\n colorQuery?.toLowerCase() === dimensionValue.Value?.toLowerCase() ||\r\n colorQuery === dimensionValue.DimensionId?.toString();\r\n\r\n const onlyOneVariant =\r\n dimension.DimensionValues &&\r\n dimension.DimensionValues.length === 1 &&\r\n dimension.DimensionTypeValue === 1\r\n ? true\r\n : false;\r\n\r\n const backgroundImageUrl = `url(${baseImageUrl}Products/${dimensionItemId}.png)`;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n })\r\n : false}\r\n
\r\n
\r\n );\r\n })\r\n : false}\r\n
\r\n );\r\n }\r\n private generateOnClick = (dimensionTypeValue: number, dimensionId: string) => {\r\n return async () => {\r\n await this.props.callbacks.dimensionSelectedAsync(dimensionTypeValue, dimensionId);\r\n };\r\n };\r\n\r\n private _getDropdownName = (dimensionType: number, resources: IBuyboxResources): string => {\r\n switch (dimensionType) {\r\n case 1: // ProductDimensionType.Color\r\n // return resources.productDimensionTypeColor;\r\n return 'color';\r\n case 2: // ProductDimensionType.Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // ProductDimensionType.Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // ProductDimensionType.Style\r\n return resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n}\r\n\r\nexport default BuyboxDimensions;\r\n","import * as React from 'react';\r\nimport { Button, Collapse } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport interface ICustomCollapseProps {\r\n content: string;\r\n title: string;\r\n type: string;\r\n isOpen: boolean;\r\n toggle(): void;\r\n}\r\n/**\r\n *\r\n * The CustomCollapse component renders the title and its items.\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass CustomCollapse extends React.Component {\r\n constructor(props: ICustomCollapseProps) {\r\n super(props);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {this.props.title}\r\n \r\n \r\n {this.props.content}\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default CustomCollapse;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { createObservableDataAction, IAction, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { retailAction } from '@msdyn365-commerce/retail-proxy';\r\n// import { createVSI_AddPorductInterestInput } from '../custom-retail-extension-proxies/DataActionExtension.g';\r\nimport { IVSIProductInterest } from '../custom-retail-extension-proxies/DataServiceEntities.g';\r\n\r\nexport default createObservableDataAction({\r\n action: >retailAction,\r\n input: (context: ICreateActionContext) => {\r\n throw new Error('Unable to call this data action on page load.');\r\n }\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 * as React from 'react';\r\n\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { BuyboxDimensions } from './custom-components/buybox-dimensions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { MandsModal } from './custom-components/mands-modal';\r\nimport CustomCollapse from './custom-components/accordian-custom';\r\n\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/index';\r\nimport { IBuyboxProps, IBuyboxResources as IBuyboxExtentionResources } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { Quantity } from '../utilities/quantity';\r\nimport { ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\r\nimport VSI_AddPorductInterestAction from '../../../actions/vsi-add-product-interest';\r\nimport { createVSI_AddPorductInterestInput } from '../../../custom-retail-extension-proxies/DataActionExtension.g';\r\nimport { IBuyboxData as IBuyboxExtensionData} from './buybox.data'\r\n\r\ninterface IState {\r\n sizeChartModalIsOpen: boolean;\r\n isOpencustomAccordian1: boolean;\r\n isOpencustomAccordian2: boolean;\r\n isOpencustomAccordian3: boolean;\r\n priceRange: string | undefined;\r\n discountedPriceRange: string | undefined;\r\n showPriceRange: boolean;\r\n productsAvailability: ProductWarehouseInventoryAvailability[];\r\n isSizeVariantAvailable: boolean;\r\n backInStockModalIsOpen: boolean;\r\n returnText: string | undefined;\r\n detailsText: string | undefined;\r\n careInstructionsText: string | undefined;\r\n compositionText: string | undefined;\r\n fitText: string | undefined;\r\n productDetailsText: string | undefined;\r\n safetyWarningText: string | undefined;\r\n sleeveLengthText: string | undefined;\r\n validEmail: boolean | undefined;\r\n email: string;\r\n formSubmitted: boolean | undefined;\r\n quantity: number;\r\n prevOutOfStockRecordId?: number;\r\n}\r\n\r\n/**\r\n *\r\n * BuyboxView component\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class BuyboxView extends React.PureComponent, IState> {\r\n constructor(props: IBuyboxViewProps & IBuyboxProps) {\r\n super(props);\r\n this.state = {\r\n sizeChartModalIsOpen: false,\r\n isOpencustomAccordian1: false,\r\n isOpencustomAccordian2: false,\r\n isOpencustomAccordian3: false,\r\n priceRange: '',\r\n discountedPriceRange: '',\r\n showPriceRange: true,\r\n productsAvailability: [],\r\n isSizeVariantAvailable: true,\r\n backInStockModalIsOpen: false,\r\n returnText: '',\r\n detailsText: '',\r\n careInstructionsText: '',\r\n compositionText: '',\r\n fitText: '',\r\n productDetailsText: '',\r\n safetyWarningText: '',\r\n sleeveLengthText: '',\r\n validEmail: true,\r\n email: '',\r\n formSubmitted: false,\r\n quantity: 1\r\n };\r\n }\r\n\r\n public componentDidUpdate = async () => {\r\n await this.getCustomAttribute();\r\n };\r\n\r\n public componentDidMount = async () => {\r\n await this.getCustomAttribute();\r\n document.addEventListener(\r\n 'keydown',\r\n event => {\r\n if (event.keyCode === 27) {\r\n this.closeAllOpenModals();\r\n }\r\n },\r\n false\r\n );\r\n };\r\n\r\n public componentWillUnmount() {\r\n document.removeEventListener('keydown', this.closeAllOpenModals, false);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n ModuleProps,\r\n MediaGalleryContainerProps,\r\n ProductInfoContainerProps,\r\n addToCart,\r\n addToWishlist,\r\n description,\r\n quantity,\r\n price,\r\n title,\r\n data: { productPrice, product },\r\n callbacks,\r\n state,\r\n resources,\r\n slots,\r\n config: { freeShipping },\r\n context: { cultureFormatter }\r\n } = this.props;\r\n\r\n // tslint:disable-next-line: no-floating-promises\r\n {\r\n this.checkQuantity();\r\n }\r\n const priceRange = this.state.priceRange ? this.state.priceRange.split('-') : [];\r\n const discountedPriceRange = this.state.discountedPriceRange ? this.state.discountedPriceRange.split('-') : [];\r\n const lowerPrice = priceRange.length > 0 ? cultureFormatter.formatCurrency(+priceRange[0]) : undefined;\r\n const higherPrice = priceRange.length === 2 ? cultureFormatter.formatCurrency(+priceRange[1]) : undefined;\r\n const showDiscountedPriceRange = this.state.discountedPriceRange ? true : false;\r\n const discountedLowerPrice =\r\n discountedPriceRange.length > 0 ? cultureFormatter.formatCurrency(+discountedPriceRange[0]) : undefined;\r\n const discountedHigherPrice =\r\n discountedPriceRange.length === 2 ? cultureFormatter.formatCurrency(+discountedPriceRange[1]) : undefined;\r\n const itemId = this.props.data.product.result ? this.props.data.product.result.ItemId : '';\r\n const sizeChart = slots.sizeChart && slots.sizeChart.length > 0 ? slots.sizeChart[0] : undefined;\r\n\r\n const variantDiscount =\r\n productPrice.result && productPrice.result.DiscountAmount && productPrice.result.DiscountAmount > 0\r\n ? productPrice.result.DiscountAmount\r\n : 0;\r\n return (\r\n \r\n {sizeChart && (\r\n \r\n )}\r\n {this.props.mediaGallery}\r\n \r\n {title}\r\n {product.result && Product code: {product.result.ItemId}}\r\n {this.renderPriceRange(\r\n showDiscountedPriceRange,\r\n discountedPriceRange,\r\n priceRange,\r\n discountedLowerPrice,\r\n discountedHigherPrice,\r\n lowerPrice,\r\n higherPrice,\r\n variantDiscount,\r\n price\r\n )}\r\n {freeShipping && (\r\n
\r\n {freeShipping.linkText}{' '}\r\n \r\n {}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n Size Chart\r\n \r\n
\r\n {this._renderTextBlock(this.props.slots.textBlocks)}\r\n \r\n {quantity && this._renderQuantity(quantity, callbacks, this.props, state, resources)}\r\n {this._renderCartAndWishlistDiv(addToCart, addToWishlist, itemId)}\r\n {description}\r\n {this._renderAccordian()}\r\n \r\n \r\n );\r\n }\r\n\r\n private renderPriceRange = (\r\n showDiscountedPriceRange: boolean,\r\n discountedPriceRange: string[],\r\n priceRange: string[],\r\n discountedLowerPrice: string | undefined,\r\n discountedHigherPrice: string | undefined,\r\n lowerPrice: string | undefined,\r\n higherPrice: string | undefined,\r\n variantDiscount: number,\r\n price: React.ReactNode\r\n ) => {\r\n return (\r\n
\r\n {this.state.showPriceRange ? (\r\n showDiscountedPriceRange ? (\r\n
\r\n {discountedPriceRange.length !== 2 ? (\r\n {discountedLowerPrice}\r\n ) : (\r\n <>\r\n {discountedLowerPrice && {discountedLowerPrice}}\r\n {discountedHigherPrice && (\r\n - {discountedHigherPrice}\r\n )}\r\n \r\n )}\r\n {this.renderDiscountLine(discountedHigherPrice)}\r\n
\r\n ) : (\r\n
\r\n {priceRange.length !== 2 ? (\r\n price\r\n ) : (\r\n <>\r\n {lowerPrice && {lowerPrice}}\r\n {higherPrice && - {higherPrice}}\r\n \r\n )}\r\n
\r\n )\r\n ) : (\r\n
0 ? 'mands-discounted-price' : 'mands-actual-price'}>{price}
\r\n )}\r\n
\r\n );\r\n };\r\n\r\n private checkQuantity = async () => {\r\n const currentQuantityCount = this.props.state && this.props.state.quantity;\r\n const availableQuantity =\r\n this.props.data &&\r\n this.props.data.productAvailableQuantity &&\r\n this.props.data.productAvailableQuantity.result &&\r\n this.props.data.productAvailableQuantity.result !== undefined &&\r\n this.props.data.productAvailableQuantity.result[0] !== undefined &&\r\n this.props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.AvailableQuantity;\r\n const outOfStockThresholdValue: number = this.props.context.app.config.outOfStockThreshold;\r\n\r\n // if (this.props.data.productAvailableQuantity.result === null) {\r\n // this.setState({ isSizeVariantAvailable: true });\r\n // } else {\r\n if (availableQuantity && availableQuantity !== undefined && availableQuantity >= outOfStockThresholdValue + currentQuantityCount) {\r\n this.setState({ isSizeVariantAvailable: true });\r\n } else {\r\n // Out of stock\r\n const { prevOutOfStockRecordId } = this.state;\r\n const newOutOfStockRecordId = (await this.props.data.product).RecordId;\r\n if (this.props.data.product.result && !this.props.data.product.result.MasterProductId) {\r\n this.setState({ isSizeVariantAvailable: true });\r\n } else if (!prevOutOfStockRecordId) {\r\n this.setState({ isSizeVariantAvailable: false, prevOutOfStockRecordId: newOutOfStockRecordId });\r\n } else if (prevOutOfStockRecordId && prevOutOfStockRecordId !== newOutOfStockRecordId) {\r\n this.setState({\r\n isSizeVariantAvailable: false,\r\n prevOutOfStockRecordId: newOutOfStockRecordId,\r\n backInStockModalIsOpen: false\r\n });\r\n }\r\n // this.setState({ isSizeVariantAvailable: false });\r\n }\r\n\r\n // }\r\n };\r\n\r\n private getCustomAttribute = async () => {\r\n const { data, context } = this.props;\r\n // @ts-ignore\r\n const { ItemId } = data.product;\r\n if (data.product) {\r\n const recordId = data.product.result && data.product.result.RecordId ? data.product.result.RecordId : undefined;\r\n const masterProductId =\r\n data.product.result && data.product.result.MasterProductId\r\n ? data.product.result && data.product.result.MasterProductId\r\n : undefined;\r\n const channelId = context.actionContext.requestContext.apiSettings.channelId;\r\n const callerContext = context.actionContext;\r\n const catalogId = context.actionContext.requestContext.apiSettings.catalogId;\r\n let showPriceRange = true;\r\n if (masterProductId && recordId && masterProductId !== recordId) {\r\n showPriceRange = false;\r\n this.setState({ showPriceRange });\r\n } else if (recordId && showPriceRange) {\r\n const customAttributes = await getAttributeValuesAsync(\r\n { callerContext, queryResultSettings: {} },\r\n recordId,\r\n channelId,\r\n catalogId\r\n );\r\n\r\n this.setCustomAttributes(customAttributes, showPriceRange);\r\n }\r\n }\r\n };\r\n\r\n private setCustomAttributes = (customAttributes: AttributeValue[], showPriceRange: boolean) => {\r\n const returnObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Returns')];\r\n const detailsObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Details')];\r\n const careInstructionsObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Care Instructions')];\r\n const compositionObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Composition')];\r\n const fitObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Fit')];\r\n const productDetailsObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Product Details')];\r\n const safetyWarningObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Safety Warning')];\r\n const sleeveLengthObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Sleeve Length')];\r\n const priceRangeObj = customAttributes[customAttributes.findIndex(x => x.Name === 'PriceRange')];\r\n const discountedPriceRangeObj = customAttributes[customAttributes.findIndex(x => x.Name === 'Discounted Price Range')];\r\n\r\n const returnText = returnObj ? returnObj.TextValue : '';\r\n const detailsText = detailsObj ? detailsObj.TextValue : '';\r\n const careInstructionsText = careInstructionsObj ? careInstructionsObj.TextValue : '';\r\n const compositionText = compositionObj ? compositionObj.TextValue : '';\r\n const fitText = fitObj ? fitObj.TextValue : '';\r\n const productDetailsText = productDetailsObj ? productDetailsObj.TextValue : '';\r\n const safetyWarningText = safetyWarningObj ? safetyWarningObj.TextValue : '';\r\n const sleeveLengthText = sleeveLengthObj ? sleeveLengthObj.TextValue : '';\r\n const priceRange = priceRangeObj ? priceRangeObj.TextValue : '';\r\n const discountedPriceRange = discountedPriceRangeObj ? discountedPriceRangeObj.TextValue : '';\r\n\r\n this.setState({\r\n showPriceRange,\r\n priceRange,\r\n discountedPriceRange,\r\n returnText,\r\n detailsText,\r\n careInstructionsText,\r\n compositionText,\r\n fitText,\r\n productDetailsText,\r\n safetyWarningText,\r\n sleeveLengthText\r\n });\r\n };\r\n\r\n private renderDiscountLine = (higherPrice: string | undefined) => {\r\n return (\r\n <>\r\n {higherPrice &&
Sale on selected items
}\r\n {!higherPrice &&
Sale
}\r\n \r\n );\r\n };\r\n\r\n private _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n return <>{textBlocks[0]};\r\n };\r\n\r\n private _renderCartAndWishlistDiv = (\r\n addToCart?: IBuyboxAddToCartViewProps,\r\n addToWishlist?: IBuyboxAddToWishlistViewProps,\r\n itemId?: string\r\n ): JSX.Element | undefined => {\r\n if (!addToCart && !addToWishlist) {\r\n return undefined;\r\n }\r\n const { isSizeVariantAvailable } = this.state;\r\n const enableStockCheck = this.props.context.app.config.enableStockCheck;\r\n const { notifyMeText, contactDetailText, emailLabel, notifyMeButtonName, thankYouText, backInStockText } = this.props.config;\r\n return (\r\n
\r\n {addToCart && addToCart.errorBlock}\r\n {addToWishlist && addToWishlist.errorBlock}\r\n {!isSizeVariantAvailable && (\r\n
\r\n

\r\n \r\n {notifyMeText}\r\n

\r\n {!this.state.backInStockModalIsOpen && (\r\n
\r\n

{contactDetailText}

\r\n
\r\n \r\n {this.state.formSubmitted && !this.state.validEmail && (\r\n
\r\n \r\n {emailLabel}\r\n
\r\n )}\r\n \r\n \r\n \r\n
\r\n )}\r\n {this.state.backInStockModalIsOpen && (\r\n
\r\n
\r\n \r\n {thankYouText}\r\n
\r\n

{backInStockText}

\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n
\r\n
\r\n {addToCart && addToCart.button}\r\n
\r\n {addToWishlist && addToWishlist.button}\r\n
\r\n
\r\n );\r\n };\r\n\r\n private toggleAccordianState1 = (): void => {\r\n this.setState({\r\n isOpencustomAccordian1: !this.state.isOpencustomAccordian1,\r\n isOpencustomAccordian2: false,\r\n isOpencustomAccordian3: false\r\n });\r\n };\r\n\r\n private showThankyouNote = async () => {\r\n this.setState({ formSubmitted: true });\r\n const { email, quantity } = this.state;\r\n if (!this.validateEmail(email)) {\r\n this.setState({ validEmail: false });\r\n } else {\r\n this.setState({ validEmail: true });\r\n this.setState({ backInStockModalIsOpen: true });\r\n\r\n const emailSent = false;\r\n const product = await this.props.data.product;\r\n const dimensions = product.Dimensions;\r\n const itemId = product.ItemId;\r\n const callerContext = this.props.context.actionContext;\r\n const customerId = '';\r\n const companyName = 'mas';\r\n\r\n // Size Dimension\r\n const sizeDimension = dimensions?.filter(dimension => dimension.DimensionTypeValue === 3)[0].DimensionValue?.DimensionId;\r\n\r\n // color Dimension\r\n const colorDimension = dimensions?.filter(dimension => dimension.DimensionTypeValue === 1)[0].DimensionValue?.DimensionId;\r\n\r\n const fullProductCode = `${itemId}${colorDimension}${sizeDimension}`;\r\n\r\n const variantRecordID = product.RecordId;\r\n\r\n const addProductInterestInput = createVSI_AddPorductInterestInput(\r\n customerId,\r\n email,\r\n fullProductCode,\r\n quantity.toString(),\r\n emailSent,\r\n companyName,\r\n variantRecordID\r\n );\r\n\r\n await VSI_AddPorductInterestAction(addProductInterestInput, callerContext);\r\n }\r\n };\r\n\r\n private onChangeEmail = (event: React.ChangeEvent) => {\r\n const email = event.target.value;\r\n if (!this.validateEmail(email.toString())) {\r\n this.setState({ validEmail: false, email });\r\n } else {\r\n this.setState({ validEmail: true, email });\r\n }\r\n };\r\n\r\n private onChangeQuantity = (event: React.ChangeEvent) => {\r\n const parseQuantity = parseInt(event.target.value, 10);\r\n const quantity = parseQuantity ? parseQuantity : 1;\r\n this.setState({ quantity });\r\n };\r\n\r\n private validateEmail = (email: string) => {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(email).toLowerCase());\r\n };\r\n\r\n private toggleAccordianState2 = (): void => {\r\n this.setState({\r\n isOpencustomAccordian1: false,\r\n isOpencustomAccordian2: !this.state.isOpencustomAccordian2,\r\n isOpencustomAccordian3: false\r\n });\r\n };\r\n\r\n private toggleAccordianState3 = (): void => {\r\n this.setState({\r\n isOpencustomAccordian1: false,\r\n isOpencustomAccordian2: false,\r\n isOpencustomAccordian3: !this.state.isOpencustomAccordian3\r\n });\r\n };\r\n\r\n private _renderAccordian = () => {\r\n const {\r\n returnText,\r\n detailsText,\r\n careInstructionsText,\r\n compositionText,\r\n // fitText,\r\n productDetailsText,\r\n safetyWarningText,\r\n sleeveLengthText\r\n } = this.state;\r\n const careCompositionText = `${careInstructionsText ? `${careInstructionsText}\\n\\n` : ''}${\r\n compositionText ? `${compositionText}\\n\\n` : ''\r\n }${safetyWarningText ? `${safetyWarningText}\\n\\n` : ''}${detailsText ? `${detailsText}\\n\\n` : ''}${\r\n sleeveLengthText ? `${sleeveLengthText}` : ''\r\n }`;\r\n const productInformationText = `${productDetailsText ? `${productDetailsText}\\n\\n` : ''}`;\r\n const {\r\n config: { accordian1Title = '', accordian2Title = '', accordian3Title = '' }\r\n } = this.props;\r\n return (\r\n
\r\n {productInformationText && (\r\n \r\n )}\r\n\r\n {careCompositionText && (\r\n \r\n )}\r\n\r\n {returnText && (\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n private _renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps<{}>,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources\r\n ): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const {\r\n resources,\r\n context: {\r\n app: {\r\n config: { maxQuantityForCartLineItem }\r\n }\r\n }\r\n } = props;\r\n\r\n const { quantity } = state;\r\n\r\n const onChange = (newValue: number) => {\r\n if (callbacks.updateQuantity) {\r\n callbacks.updateQuantity(newValue);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n \r\n );\r\n };\r\n\r\n private closeAllOpenModals = () => {\r\n this.setState({\r\n sizeChartModalIsOpen: false\r\n });\r\n };\r\n\r\n private sizeChartModalTitle = (): JSX.Element => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n private sizeChartModalBody = (): JSX.Element => {\r\n const { slots } = this.props;\r\n const sizeChart = slots.sizeChart && slots.sizeChart.length > 0 ? slots.sizeChart[0] : undefined;\r\n return
{sizeChart}
;\r\n };\r\n\r\n private sizeChartModalFooter = (): JSX.Element => {\r\n return
;\r\n };\r\n\r\n private openSizeChartModal = (): void => {\r\n this.setState({ sizeChartModalIsOpen: true });\r\n };\r\n\r\n private closeSizeChartModal = (): void => {\r\n this.setState({ sizeChartModalIsOpen: false });\r\n };\r\n}\r\n\r\nexport default BuyboxView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport {\r\n ICheckoutDeliveryOption,\r\n ICheckoutDeliveryOptionEdit,\r\n ICheckoutDeliveryOptionsError,\r\n ICheckoutDeliveryOptionsList,\r\n ICheckoutDeliveryOptionsViewProps\r\n} from '@msdyn365-commerce-modules/checkout/dist/types';\r\n\r\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\r\n if (!list || list.length === 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\r\n return (\r\n \r\n
\r\n {deliveryOption.radioButton}\r\n \r\n
\r\n {deliveryOption.description}\r\n {deliveryOption.price}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\r\n return (\r\n \r\n \r\n {description}\r\n {price}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({ Error, title, message }) => {\r\n return (\r\n \r\n {title}\r\n {message}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutDeliveryOptionsView: React.FC = props => {\r\n const {\r\n CheckoutDeliveryOptions,\r\n viewState,\r\n deliveryOptions,\r\n deliveryOptionSelected,\r\n errorMessage,\r\n waiting,\r\n saveButton,\r\n editButton,\r\n cancelButton\r\n } = props;\r\n\r\n return (\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isLoading && waiting}\r\n {viewState.isError && errorMessage && }\r\n {viewState.isShowList && deliveryOptions && }\r\n {viewState.isShowSelected && deliveryOptionSelected && }\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutDeliveryOptionsView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { IComponent, IComponentProps, getUrlSync } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {}\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const {\r\n cartLabel,\r\n data: { cart }\r\n } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n if (cart) {\r\n const cartItem = `${cart.totalItemsInCart}`;\r\n const { totalItemsInCart } = cart;\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n return (\r\n 0 ? 'cart-full' : 'cart-empty'}`}\r\n href={cartLink}\r\n aria-label={label}\r\n >\r\n
\r\n {cartItem}\r\n
\r\n \r\n );\r\n }\r\n return null;\r\n});\r\n\r\nexport default CartIcon;\r\n","import classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface ICheckoutPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n}\r\nexport interface ICheckoutPriceComponent extends IComponent {}\r\n\r\nexport const CheckoutPrice: React.FC = (props: ICheckoutPriceComponentProps) => {\r\n // CustomerContextualPrice could be 0\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\nconst showStrikethroughPricing = (props: ICheckoutPriceComponentProps) => {\r\n const originalPrice = getOriginalPrice(props);\r\n\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getOriginalPrice = (props: ICheckoutPriceComponentProps) => {\r\n return Math.max(props.data.price.BasePrice || 0, props.data.price.TradeAgreementPrice || 0, props.data.price.AdjustedPrice || 0);\r\n};\r\n\r\nconst renderCurrentPrice = (props: ICheckoutPriceComponentProps): JSX.Element | undefined => {\r\n const initialPrice = formatCurrency(props, props.data.price.CustomerContextualPrice);\r\n return (\r\n \r\n {initialPrice}\r\n \r\n );\r\n};\r\n\r\nconst formatCurrency = (props: ICheckoutPriceComponentProps, price: number | undefined): string | undefined => {\r\n if (price === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (price === 0 && props.freePriceText) {\r\n return props.freePriceText;\r\n }\r\n\r\n return props.context.cultureFormatter.formatCurrency(price);\r\n};\r\n\r\nconst renderCurrentPriceWithOriginalPrice = (props: ICheckoutPriceComponentProps): JSX.Element | null => {\r\n const originalPrice = getOriginalPrice(props);\r\n const initialPrice = formatCurrency(props, originalPrice);\r\n\r\n return (\r\n <>\r\n \r\n {' '}\r\n {props.originalPriceText} {initialPrice} {props.currentPriceText} {renderCurrentPrice(props)}\r\n \r\n \r\n {initialPrice && (\r\n
\r\n \r\n
\r\n )}\r\n {props.savingsText && {props.savingsText}}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { CartLine, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { CheckoutPrice } from '../custom-components/checkout-price';\r\nimport { Quantity } from '../../utilities/quantity';\r\n\r\n/**\r\n * ICartlineResourceString: Interface for specifying the\r\n * resource strings that the component needs\r\n */\r\nexport interface ICartlineResourceString {\r\n /** Display string for discount label */\r\n discountStringText: string;\r\n /** String for size key */\r\n sizeString: string;\r\n /** String for color key */\r\n colorString: string;\r\n /** String associated with the configuration product dimension */\r\n configString: string;\r\n /** String for style key */\r\n styleString: string;\r\n /** Display string for quantity label */\r\n quantityDisplayString: string;\r\n /** Display string for quantity label */\r\n inputQuantityAriaLabel: string;\r\n /** Aria label for the decrement button in quanitity component */\r\n decrementButtonAriaLabel: string;\r\n /** Aria label for the increment button in quanitity component */\r\n incrementButtonAriaLabel: string;\r\n}\r\n\r\ninterface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n product: SimpleProduct;\r\n}\r\n\r\n/**\r\n * ICartLineProps: The props required to render cartLineitem\r\n */\r\nexport interface ICartLineProps extends IComponentProps {\r\n /** The flag to change the quantity component from interactible to static */\r\n disableQuantityInteractivity?: boolean;\r\n /** The primary image url */\r\n primaryImageUrl?: string;\r\n /** The product url */\r\n productUrl?: string;\r\n /** GridSettings for the product image in cartLine */\r\n gridSettings: IGridSettings;\r\n /** ImageSettings for the product image in cartLine */\r\n imageSettings: IImageSettings;\r\n /** Boolean flag to indicate if the item is out of stock */\r\n isOutOfStock?: boolean;\r\n /** Flag to make quantity section editable */\r\n isQuantityEditable?: boolean;\r\n /** Max quantity for line item */\r\n maxQuantity?: number;\r\n /** Current quantity for line item */\r\n currentQuantity?: number;\r\n /** Resource string for the component */\r\n resources: ICartlineResourceString;\r\n /** SalesLine flag */\r\n isSalesLine?: boolean;\r\n /** Error message to show in place of quantity */\r\n errorMessage?: string;\r\n /** Quantity onChange callback */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number): void;\r\n}\r\n\r\ninterface IDimensionStrings {\r\n /** String for size key */\r\n sizeString: string;\r\n /** String for color key */\r\n colorString: string;\r\n /** String associated with the configuration product dimension */\r\n configString: string;\r\n /** String for style key */\r\n styleString: string;\r\n}\r\n\r\nconst CartLineItemFunctions = {\r\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\r\n const comma: string = ', ';\r\n if (!Product || !Product.Dimensions) {\r\n return [];\r\n }\r\n return Product.Dimensions.map((productDimension, index) => {\r\n return (\r\n \r\n {index !== 1 && (\r\n \r\n {productDimension.DimensionTypeValue === 1\r\n ? `${productDimension.DimensionValue && productDimension.DimensionValue.Value}`\r\n : ''}\r\n \r\n )}\r\n {index === 1 && (\r\n \r\n {productDimension.DimensionTypeValue === 2\r\n ? `${comma}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`\r\n : productDimension.DimensionTypeValue === 3\r\n ? `${DimensionStrings.sizeString}\r\n ${productDimension.DimensionValue && productDimension.DimensionValue.Value}`\r\n : productDimension.DimensionTypeValue === 4\r\n ? `${comma}${DimensionStrings.styleString} ${productDimension.DimensionValue &&\r\n productDimension.DimensionValue.Value}`\r\n : ''}\r\n \r\n )}\r\n \r\n );\r\n });\r\n }\r\n};\r\n\r\nconst renderPrice = (props: ICartLineProps): JSX.Element => {\r\n const { isSalesLine } = props;\r\n const TotalAmount = props.data.cartLine && props.data.cartLine.TotalAmount ? props.data.cartLine.TotalAmount : 0;\r\n const quantity = props.data.cartLine && props.data.cartLine.Quantity ? props.data.cartLine.Quantity : 0;\r\n const netPriceAfterDiscount = TotalAmount !== 0 && quantity !== 0 ? TotalAmount / quantity : 0;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst _generateErrorMessage = (props: ICartLineProps): JSX.Element | null => {\r\n if (props.errorMessage) {\r\n return (\r\n
\r\n \r\n {props.errorMessage}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst _generateQuantityandPrice = (props: ICartLineProps): JSX.Element[] | null => {\r\n const { resources } = props;\r\n const mobileView =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? true : false;\r\n // @ts-ignore\r\n const extendedPrice = props.data.cartLine.ExtendedPrice || 0;\r\n const formattedPrice = props.context.cultureFormatter.formatCurrency(extendedPrice);\r\n const nodes = [];\r\n const errorMessage = _generateErrorMessage(props);\r\n\r\n const onChange = (newValue: number) => {\r\n if (props.quantityOnChange) {\r\n props.quantityOnChange(props.data.cartLine, newValue);\r\n }\r\n };\r\n\r\n if (props.isOutOfStock) {\r\n if (errorMessage) {\r\n nodes.push(
{errorMessage}
);\r\n return nodes;\r\n }\r\n return null;\r\n }\r\n\r\n if (props.isQuantityEditable) {\r\n if (errorMessage) {\r\n nodes.push(
{errorMessage}
);\r\n }\r\n nodes.push(\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n } else {\r\n nodes.push(\r\n
\r\n
\r\n
\r\n \r\n {props.data.cartLine.Quantity}\r\n
\r\n\r\n {mobileView && formattedPrice}\r\n
\r\n
\r\n );\r\n }\r\n\r\n nodes.push(\r\n
\r\n {formattedPrice}\r\n
\r\n );\r\n\r\n return nodes;\r\n};\r\n\r\nconst CartLine: React.FC = (props: ICartLineProps) => {\r\n const { productUrl, resources } = props;\r\n const { product } = props.data;\r\n const [cartProduct, setProduct] = useState();\r\n useEffect(() => {\r\n if (!cartProduct && props.data.product) {\r\n setProduct(props.data.product);\r\n }\r\n });\r\n const destructDimensionStrings = {\r\n sizeString: resources.sizeString,\r\n colorString: resources.colorString,\r\n styleString: resources.styleString,\r\n configString: resources.configString\r\n };\r\n const productDimensions = cartProduct && CartLineItemFunctions.renderProductDimensions(cartProduct, destructDimensionStrings);\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {product?.Name}\r\n \r\n {productDimensions && productDimensions.length > 0 ? (\r\n
{productDimensions}
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n Product ID: {product?.ItemId}\r\n
\r\n
\r\n
\r\n \r\n {props.data.cartLine.Quantity}\r\n
\r\n
\r\n
\r\n {renderPrice(props)}\r\n {_generateQuantityandPrice(props)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CartLine;\r\n","import { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nexport interface IMandsModalProps {\r\n isOpen: boolean;\r\n modalTitle?: JSX.Element | string;\r\n modalBody?: JSX.Element | string;\r\n modalFooter?: JSX.Element | string;\r\n className: string;\r\n}\r\n\r\nexport const MandsModal: React.FC = props => {\r\n return (\r\n
\r\n \r\n {props.modalTitle && {props.modalTitle}}\r\n {props.modalBody && {props.modalBody}}\r\n {props.modalFooter && {props.modalFooter}}\r\n
\r\n \r\n
\r\n );\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 { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\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 { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.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 this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\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 { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\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 IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: 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-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\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 AccountInvoiceTileLinks: 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: 'ms-account-invoice-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 AccountInvoiceTileLinks;\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 { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\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 {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: 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 AccountInvoiceTile;\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 { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as 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 { isChannelTypeB2B } 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\n if (!this.props.context.request.params.isEditor && !isChannelTypeB2B(this.props.context.request)) {\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 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 private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\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 !this.isEditAsyncCustomerFeatureEnabled;\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 {\n ArrayExtensions,\n updateCustomerPersonalization,\n updateCustomerPersonalizationInput\n} 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\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false) &&\n !this.isEditAsyncCustomerFeatureEnabled;\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 this.getDescription(customerInformation),\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [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 getDescription(customerInformation: Customer | undefined): string {\n let description = '';\n if (customerInformation !== undefined) {\n if (customerInformation.FirstName) {\n description += customerInformation.FirstName;\n }\n if (customerInformation.LastName) {\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\n }\n }\n return description;\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 && heading.text && (\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 if (!ArrayExtensions.hasElements(links)) {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n description: description && (\n \n )\n };\n }\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: (\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 MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst 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\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\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 React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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, getUrlSync } 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 statementRequestMaxDateString?: string;\n businessUserActionRetailErrorMsg: string;\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 statementRequestMaxDateString: new Date().toISOString().split('T')[0],\n businessUserActionRetailErrorMsg: ''\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, showBecomeSellerLink } = config;\n const {\n businessUserActionButtonText,\n businessUserAddUserButtonText,\n businessUserLoadingMessage,\n businessUserEmptyListMessage,\n businessUserErrorGettingUsersMessage,\n userAccountStatementLabel,\n fullOrganizationLabel,\n requestStatementButtonLabel,\n promoteToSellerActionLabel,\n requestAccountStatementActionLabel,\n requestOrganizationStatementActionLabel,\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 statementRequestMaxDateString\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: showBecomeSellerLink ? (\n \n ) : (\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 businessUserActionRetailErrorMsg: error.message\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, businessUserActionRetailErrorMsg } = 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 _promoteToSeller = () => {\n const promoteToSellerUrl = getUrlSync('businessPartnerPromotion', this.props.context.actionContext);\n if (promoteToSellerUrl && MsDyn365.isBrowser) {\n window.location.href = promoteToSellerUrl;\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 {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterItemConfig, IFooterItemProps, IHeadingData, ILinkData } from './footer-item.props.autogenerated';\n\nexport interface IFooterViewProps extends IFooterItemProps {\n heading: React.ReactNode;\n image: React.ReactNode;\n text: React.ReactNode;\n linkText: React.ReactNode;\n className?: string;\n FooterItem: IModuleProps;\n HeadingContainer: INodeProps;\n ItemContainer: INodeProps;\n Link: INodeProps;\n EditableLink: React.ReactNode;\n}\n\n/**\n *\n * FooterItem component.\n * @extends {React.PureComponent>}\n */\nexport class FooterItem extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private attributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: IFooterItemProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n // Construct telemetry attribute to render\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public render(): JSX.Element {\n const { heading, image, link, text } = this.props.config;\n const footerItemClassName = classnames('ms-footer__item', this.props.config.className);\n const linkText = link && link.linkText ? link.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n const viewProps: IFooterViewProps = {\n ...this.props,\n heading: this._createHeading(heading!),\n image: this._createImageMarkup(image!),\n text: this._createText(text!),\n linkText: this._createLinkText(link!),\n EditableLink: this._createLink(link!),\n\n FooterItem: {\n moduleProps: this.props,\n className: footerItemClassName\n },\n\n HeadingContainer: {\n className: 'ms-footer__heading'\n },\n\n ItemContainer: {\n className: 'ms-footer__link__container'\n },\n\n // @ts-expect-error\n Link: link &&\n link.linkUrl &&\n link.linkUrl.destinationUrl && {\n tag: 'a',\n role: 'link',\n className: 'ms-footer__link',\n href: link.linkUrl.destinationUrl,\n title: linkText,\n 'aria-label': link.ariaLabel,\n target: link.openInNewTab ? '_blank' : undefined,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\n ...this.attributes\n },\n className: footerItemClassName\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 handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.text = event.target.value);\n\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.link!.linkText = event.target.value);\n\n private _createLink(link: ILinkData): React.ReactNode | null {\n if (link) {\n const linkText = link.linkText ? link.linkText : '';\n\n // TODO: Update the inner tag in the anchor link to span\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-footer__link',\n linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: this.attributes!,\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n private _createLinkText(link: ILinkData): React.ReactNode | null {\n if (!link || !link.linkText) {\n return null;\n }\n\n return {link.linkText};\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _createText(text: string): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\n if (!item || !item.src || item.src.length === 0) {\n return null;\n }\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n return (\n \n );\n }\n}\n\nexport default FooterItem;\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 { IFooterViewProps } from './footer-item';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return {heading} ;\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\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 { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { Button, ITelemetryContent, getPayloadObject, getTelemetryAttributes } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classnames from 'classnames';\n\n/**\n * Class names used in component.\n */\nconst componentClassName = 'ms-order-history-with-search-and-filters-organization-wide-selector';\nconst buttonClassName = `${componentClassName}__button`;\nconst buttonActiveClassName = `${componentClassName}__active-button`;\nconst buttonInactiveClassName = `${componentClassName}__inactive-button`;\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources {\n currentUserOptionLabel: string;\n currentUserOptionAriaLabel?: string;\n organizationWideOptionLabel: string;\n organizationWideOptionAriaLabel?: string;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState interface.\n */\nexport enum OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState {\n CurrentUser,\n OrganizationWide\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData {\n customer: Customer;\n}\n\n/**\n * IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps interface.\n */\nexport interface IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n extends IComponentProps {\n className?: string;\n resources: IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorResources;\n currentSelectorState: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState;\n telemetryContent?: ITelemetryContent;\n onChange(state: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState): void;\n}\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n * @param props - Configuration of the component.\n * @returns React node.\n */\nconst OrderHistoryWithSearchAndFiltersOrganizationWideSelectorFunctionalComponent: React.FC = (\n props: IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n) => {\n // Current version doesn't include functionality for non b2b users or non-admin b2b users.\n if (!props.data.customer.IsB2bAdmin) {\n return
;\n }\n\n const [selectorState, setSelectorState] = React.useState(props.currentSelectorState);\n\n const onClickHandler = (newSelectorState: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState) => {\n setSelectorState(newSelectorState);\n props.onChange(newSelectorState);\n };\n\n // define telemetry attributes\n const currentUserOrderHistoryAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, props.resources?.currentUserOptionLabel ?? 'Current user order history')\n );\n const orgWideOrderHistoryAttributes = getTelemetryAttributes(\n props.telemetryContent!,\n getPayloadObject('click', props.telemetryContent!, props.resources?.currentUserOptionLabel ?? 'Org wide order history')\n );\n\n return (\n
\n onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.CurrentUser)}\n {...currentUserOrderHistoryAttributes}\n >\n {props.resources?.currentUserOptionLabel}\n \n onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.OrganizationWide)}\n {...orgWideOrderHistoryAttributes}\n >\n {props.resources?.organizationWideOptionLabel}\n \n
\n );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n */\nexport const OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps\n>('OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent', {\n component: OrderHistoryWithSearchAndFiltersOrganizationWideSelectorFunctionalComponent\n});\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"],"names":["Quantity","React","constructor","props","super","inputRef","_validateMin","minValue","undefined","this","min","isNaN","state","currentInput","setState","onChange","currentCount","_onIncrement","bind","_onDecrement","_handleChange","render","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","disabled","incDisabled","max","currentValue","className","id","title","decrementButtonAriaLabel","onClick","tabIndex","color","type","pattern","value","onBlur","inputQuantityAriaLabel","role","ref","incrementButtonAriaLabel","invokeCallback","prevState","e","parseInt","target","inputElement","current","HTMLInputElement","_debounce","setAttribute","toString","defaultProps","AccountProfileSection","_ref","AccountProfileItem","heading","links","description","Node","Object","assign","AccountProfile","emailSection","nameSection","data","customerInformation","result","firstName","FirstName","lastName","LastName","email","Email","Module","BuyboxDimensions","generateOnClick","dimensionTypeValue","dimensionId","async","callbacks","dimensionSelectedAsync","_getDropdownName","dimensionType","resources","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeStyle","colorName","selectedSize","componentDidMount","productDimensions","map","dimension","DimensionValues","length","DimensionTypeValue","RecordId","reaction","_this$props$data","_this$props$data2","_this$props$data3","_this$props$data4","_this$props$data5","_this$props$data6","dimen","initializeDimension","size","context","request","apiSettings","baseImageUrl","app","config","enableStockCheck","isSizeVariantAvailable","selectedColorName","i","swatchName","toLowerCase","_dimension$DimensionV","_dimension$DimensionV2","_dimension$DimensionV3","_dimension$DimensionV4","_dimension$DimensionV5","_dimension$DimensionV6","DimensionValue","Value","dv","_dv$DimensionId","DimensionId","_dv$DimensionId2","key","getDropdownName","dimensionValue","index","_sizeQuery","_dimensionValue$Value","_dimensionValue$Dimen","_colorQuery","_dimensionValue$Value2","_dimensionValue$Dimen2","dimensionItemId","sizeQuery","colorQuery","_window","_window3","_window2","_window4","URLSearchParams","window","location","search","get","error","isActive","onlyOneVariant","backgroundImageUrl","style","backgroundImage","backgroundColor","CustomCollapse","Button","isOpen","toggle","Collapse","timeout","content","createObservableDataAction","action","retailAction","input","Error","BuyboxView","componentDidUpdate","getCustomAttribute","document","addEventListener","event","keyCode","closeAllOpenModals","renderPriceRange","showDiscountedPriceRange","discountedPriceRange","priceRange","discountedLowerPrice","discountedHigherPrice","lowerPrice","higherPrice","variantDiscount","price","showPriceRange","renderDiscountLine","checkQuantity","currentQuantityCount","quantity","availableQuantity","productAvailableQuantity","ProductAvailableQuantity","AvailableQuantity","outOfStockThresholdValue","outOfStockThreshold","prevOutOfStockRecordId","newOutOfStockRecordId","product","MasterProductId","backInStockModalIsOpen","ItemId","recordId","masterProductId","channelId","actionContext","requestContext","callerContext","catalogId","customAttributes","getAttributeValuesAsync","queryResultSettings","setCustomAttributes","returnObj","findIndex","x","Name","detailsObj","careInstructionsObj","compositionObj","fitObj","productDetailsObj","safetyWarningObj","sleeveLengthObj","priceRangeObj","discountedPriceRangeObj","returnText","TextValue","detailsText","careInstructionsText","compositionText","fitText","productDetailsText","safetyWarningText","sleeveLengthText","_renderTextBlock","textBlocks","_renderCartAndWishlistDiv","addToCart","addToWishlist","itemId","notifyMeText","contactDetailText","emailLabel","notifyMeButtonName","thankYouText","backInStockText","errorBlock","validEmail","placeholder","maxLength","onChangeEmail","formSubmitted","required","onChangeQuantity","showThankyouNote","button","toggleAccordianState1","isOpencustomAccordian1","isOpencustomAccordian2","isOpencustomAccordian3","validateEmail","_dimensions$filter$0$","_dimensions$filter$0$2","emailSent","dimensions","Dimensions","customerId","companyName","sizeDimension","filter","fullProductCode","variantRecordID","addProductInterestInput","createVSI_AddPorductInterestInput","VSI_AddPorductInterestAction","parseQuantity","test","String","toggleAccordianState2","toggleAccordianState3","_renderAccordian","careCompositionText","productInformationText","accordian1Title","accordian2Title","accordian3Title","_renderQuantity","quantityComponent","extentionResources","ContainerProps","LabelContainerProps","errors","maxQuantityForCartLineItem","newValue","updateQuantity","sizeChartModalIsOpen","sizeChartModalTitle","closeSizeChartModal","sizeChartModalBody","slots","sizeChart","sizeChartModalFooter","openSizeChartModal","productsAvailability","componentWillUnmount","removeEventListener","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","productPrice","freeShipping","cultureFormatter","split","formatCurrency","DiscountAmount","MandsModal","modalTitle","modalBody","modalFooter","mediaGallery","linkText","href","linkUrl","destinationUrl","DeliveryOptionList","DeliveryOptionsList","list","deliveryOption","DeliveryOption","code","radioButton","DeliveryOptionSelected","_ref2","ErrorMessage","_ref3","message","CheckoutDeliveryOptions","viewState","deliveryOptions","deliveryOptionSelected","errorMessage","waiting","saveButton","editButton","cancelButton","isLoading","isError","isShowList","isShowSelected","isShowSaveButton","isShowEditButton","isShowCancelButton","observer","cartLabel","cart","cartLink","getUrlSync","cartItem","totalItemsInCart","label","format","CheckoutPrice","CustomerContextualPrice","classnames","showStrikethroughPricing","renderCurrentPriceWithOriginalPrice","renderCurrentPrice","originalPrice","getOriginalPrice","Math","BasePrice","TradeAgreementPrice","AdjustedPrice","initialPrice","itemProp","freePriceText","originalPriceText","currentPriceText","savingsText","CartLineItemFunctions","renderProductDimensions","Product","DimensionStrings","productDimension","sizeString","styleString","_generateQuantityandPrice","mobileView","device","Type","extendedPrice","cartLine","ExtendedPrice","formattedPrice","nodes","_generateErrorMessage","quantityOnChange","isOutOfStock","push","isQuantityEditable","maxQuantity","currentQuantity","quantityDisplayString","productUrl","cartProduct","setProduct","useState","useEffect","destructDimensionStrings","colorString","configString","Image","src","primaryImageUrl","altText","gridSettings","imageSettings","loadFailureBehavior","isSalesLine","TotalAmount","netPriceAfterDiscount","NetAmount","Price","typeName","renderPrice","Modal","autoFocus","applicationNode","zIndex","ModalHeader","ModalBody","ModalFooter","AccordionItem","moduleClassName","handleHeadingChange","accordionItemTitle","_onToggle","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","shouldComponentUpdate","nextProps","renderView","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","_objectSpread","AccordionItemContainer","moduleProps","AccordionItemContent","drawer","tag","ControlledDrawer","toggleButtonText","collapseProps","onToggle","onTextChange","accordionSlots","interactionStyle","accordionState","update","createAccordionStateInput","__decorate","_renderAccordionItemContent","items","item","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","text","_onExpandAll","_onCollapseAll","payLoad","getPayloadObject","isDisabled","headingComponent","Msdyn365","editProps","onEdit","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","getTelemetryAttributes","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","toggleAllSeparator","collapseAllText","setTimeout","_this$collapseAllButt","focus","_this$expandAllButton","AccountInvoiceTileDescription","_mapEditableLinks","linkdata","editableLinks","forEach","link","attributes","editableLink","ariaLabel","openInNewTab","additionalProperties","AccountInvoiceTile","handleLinkTextChange","linkIndex","_data$customerBalance","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","toFixed","viewProps","LinksComponent","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","url","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","DescriptionComponent","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","params","isEditor","isChannelTypeB2B","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","att","attributeDefinition","find","attribute","IsHidden","toLocaleLowerCase","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","featureState","feature","IsEnabled","disableBtn","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","attributesContainerRef","Text","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","innerRef","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","replace","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","option","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","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","Number","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","splice","Attribute","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VATNumber","VatNumber","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","nextState","observable","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","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","_renderEmailSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","ArrayExtensions","hasElements","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","computed","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","RequestsTableColumnHeader","getUserName","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","date","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","tableData","operationRequests","_request$TypeValue","_request$StatusValue","row","b2bRequestsTypeColumn","TableDataType","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","isMobile","mobileExcludedColumns","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","reqContext","URL","requestUrl","isSingleSelectOnly","actions","onDelete","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","Heading","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","b2bRequestsStatus","table","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","IsB2bAdmin","errorClassName","GetMaxLength","parsedMaxLength","forId","htmlFor","PasswordReset","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","obj","ID","newPasswordRegex","PAT","reenterPasswordRegex","verifying_blurb","loadingMessage","PasswordRegex","defaultRegex","source","isShowLoading","passwordReset","loading","modal","icon","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","defaultAADConainer","display","aadConainer","passwordResetLocalAccount","_renderLocalAccount","localAccount","_renderInput","newPasswordLabelText","confirmPasswordLabelText","PasswordResetErrorComponent","passwordEntryMismatchError","requiredFieldMissingError","fieldIncorrectError","buttonsWrapper","buttons","PasswordResetButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","labelText","wrapper","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","LocalAccount","FormInput","isRequired","fieldReference","FormLabel","asteriskText","FormButton","FormFieldError","_ref4","FormType","InputType","InputID","renderInputSection","inputs","asteriskAfterLabel","onInputChange","customClass","maxChars","BusinessOrganizationList","_this$props$config","BusinessFormDefaultInputs","businessUserFirstNameLabelText","businessUserLastNameLabelText","businessUserEmailAddressLabelText","EmailRegex","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","businessUserActionRetailErrorMsg","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","substring","possibleCell","dataCell","user","_handleDeleteIcon","displayedUserData","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","_getCurrentUrl","_getViewport","innerWidth","xs","w","sm","md","lg","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_promoteToSeller","promoteToSellerUrl","_requestStatement","currentUser","_getB2BUserId","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","BusinessPartnerUsersDataActions","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","_toggleModal","Status","_viewport","_updateViewport","submitButtonReference","addedReference","statementRequestMaxDateString","toISOString","businessUserSelectedUserDisplayName","_this$formChildRefere","_this$submitButtonRef","_this$props$data$cust","showBecomeSellerLink","businessUserActionButtonText","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","fullOrganizationLabel","requestStatementButtonLabel","promoteToSellerActionLabel","requestAccountStatementActionLabel","requestOrganizationStatementActionLabel","statementRequestModalHeaderLabel","cancelLabel","fromDateLabel","toDateLabel","submitRequestLabel","sendToEmailLabel","selectedUserLabel","hasUsers","AddUser","addUserAttributes","status","errorProps","OrganizationUserList","moduleContainer","headingTag","addUserButton","noUsersText","modalState","organizationListTable","_createTableProps","toggleModal","form","_renderUserForm","_renderUserDetails","requestAccountStatementButton","AdminRequestStatementButton","buttonReference","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","promoteToSellerLabel","onPromoteToSeller","requestStatementModal","RequestStatementModal","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","modalHeaderLabel","onSubmitRequest","selectedUser","selectedOrganizationLabel","selectedUserName","modalAriaLabel","maxDateString","tableSort","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserPaginationAriaLabel","_createTableItems","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","resourcePrefix","tableAriaLabel","tableTabIndex","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","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","fade","ButtonList","_getForm","formProps","CatalogPicker","handleTextChange","handleParagraphChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogs","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","fullUrl","searchParams","set","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","image","firstOrDefault","Images","generateImageUrl","Uri","galleryImageSettings","AltText","CatalogPickerViewFunctionComponent","FooterItem","footerItemClassName","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","onTelemetryClick","ariaHiddenAttr","viewports","q","h","lazyload","shouldSkipToMainImage","FooterItemView","_renderElement","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","viewport","navigationMenuSource","menuItemList","locale","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","xl","Navigation","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","RSItemIdInit","getFriendlyName","Url","_getNestedChildren","promotionalContent","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","shouldOpenNewTab","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","promotionalImage","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","defaultImageSettings","_categoryImage$imageS","categoryImageSettings","menuItemRef","body","_this$menuItemRef$cur","children","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","round","_renderMenu","onFocus","hoverEffect","isParent","imagesource","onMouseOver","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","componentClassName","buttonClassName","buttonActiveClassName","buttonInactiveClassName","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent","msdyn365Commerce","createComponent","component","_props$resources$curr","_props$resources","_props$resources$curr2","_props$resources2","_props$resources$curr3","_props$resources3","_props$resources4","_props$resources$curr4","_props$resources5","_props$resources6","_props$resources7","_props$resources$orga","_props$resources8","_props$resources9","_props$resources$orga2","_props$resources10","_props$resources11","_props$resources12","selectorState","setSelectorState","currentSelectorState","newSelectorState","currentUserOrderHistoryAttributes","currentUserOptionLabel","orgWideOrderHistoryAttributes","CurrentUser","currentUserOptionAriaLabel","OrganizationWide","organizationWideOptionAriaLabel","organizationWideOptionLabel","SitePicker","_cookieName","_cookieExpirationInSeconds","_escFunction","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_renderSiteOptions","_document","_document2","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","openGlyph","closeGlyph","glyphPlacement","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","preventDefault","cookies","isConsentGiven","cookieConfig","maxAge","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","imageProps","siteRedirectUrl","siteName","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView"],"sourceRoot":""}