{"version":3,"file":"static/js/12.f1d012151134bba9d2ca.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/nos-subscription-details/enums/invoice-status-enum.ts?3dba","webpack://Msdyn365.Commerce.Online/./src/modules/nos-subscription-details/enums/invoice-period-enum.ts?e08d","webpack://Msdyn365.Commerce.Online/./src/modules/nos-subscription-details/utils/nos-subscription-details.utils.ts?0cdc","webpack://Msdyn365.Commerce.Online/./src/modules/nos-subscription-details/nos-subscription-details.tsx?e338","webpack://Msdyn365.Commerce.Online/./src/modules/nos-subscription-details/nos-subscription-details.view.tsx?1c2e","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/buybox.view.tsx?3610","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/checkout-billing-address.view.tsx?f61a","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/carticon.component.tsx?696d","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/search.empty.tsx?8480","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/search.form.tsx?3aa8","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/search.productsuggest.tsx?dbc1","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/search.view.tsx?8e08","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/aad-generic/aad-generic.tsx?c076","webpack://Msdyn365.Commerce.Online/./src/modules/aad-generic/aad-generic.view.tsx?b418","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.tsx?2f8c","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/account-address-tile.view.tsx?ac91","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-description.tsx?4911","webpack://Msdyn365.Commerce.Online/./src/modules/account-address-tile/components/account-address-tile-links.tsx?bee7","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/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-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-attributes.tsx?bcc2","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-links.tsx?8faf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/account-profile.tsx?fe69","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/account-profile.view.tsx?b964","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-description.tsx?770a","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile/components/account-profile-text.tsx?8115","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/./src/modules/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/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/sign-in/components/sign-in-button.tsx?8d59","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-description.tsx?54a5","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-error.tsx?a75a","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-input.tsx?d840","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-label.tsx?4560","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-link.tsx?2078","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-icon.tsx?1d7f","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-loading-message.tsx?84ee","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/components/sign-in-text.tsx?76b9","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.tsx?259c","webpack://Msdyn365.Commerce.Online/./src/modules/sign-in/sign-in.view.tsx?2b3e","webpack://Msdyn365.Commerce.Online/./src/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/business-organization-list/components/small-components.tsx?c4b5","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/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","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.tsx?899b","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.view.tsx?dcdf","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/business-organization-list.view.tsx?e6ec","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/reviews-list.view.tsx?39ca"],"sourcesContent":["export enum InvoiceStatus {\r\n    UNPAID = 0,\r\n    PAID = 1\r\n}\r\n","export enum InvoicePeriod {\r\n    ONETIME = 0,\r\n    DAILY = 1,\r\n    MONTHLY = 2,\r\n    QUARTALY = 3,\r\n    SEMIANNUALLY = 4,\r\n    ANNULALY = 5\r\n}\r\n","import { InvoiceStatus } from '../enums/invoice-status-enum';\r\nimport { SubscriptionStatus } from '../enums/subscription-status-enum';\r\nimport { INosSubscriptionDetailsResources } from '../nos-subscription-details.props.autogenerated';\r\nimport { ICoreContext, IDateFormatOptions } from '@msdyn365-commerce/core';\r\nimport { InvoicePeriod } from '../enums/invoice-period-enum';\r\n\r\nexport const getSubscriptionStatus = (resources: INosSubscriptionDetailsResources, status?: number) => {\r\n    switch (status) {\r\n        case SubscriptionStatus.ACTIVE:\r\n            return resources.active;\r\n        case SubscriptionStatus.ARCHIVED:\r\n            return resources.archived;\r\n        case SubscriptionStatus.LASTBILLING:\r\n            return resources.lastBilling;\r\n        case SubscriptionStatus.ONHOLD:\r\n            return resources.onHold;\r\n        case SubscriptionStatus.TERMINATED:\r\n            return resources.terminated;\r\n        default:\r\n            return '';\r\n    }\r\n};\r\n\r\nexport const getInvoiceStatus = (resources: INosSubscriptionDetailsResources, status?: number) => {\r\n    switch (status) {\r\n        case InvoiceStatus.UNPAID:\r\n            return resources.unpaid;\r\n        case InvoiceStatus.PAID:\r\n            return resources.paid;\r\n        default:\r\n            return '';\r\n    }\r\n};\r\n\r\nexport const getInvoiceFrequency = (resources: INosSubscriptionDetailsResources, period?: number) => {\r\n    switch (period) {\r\n        case InvoicePeriod.ONETIME:\r\n            return resources.oneTime;\r\n        case InvoicePeriod.DAILY:\r\n            return resources.daily;\r\n        case InvoicePeriod.MONTHLY:\r\n            return resources.monthly;\r\n        case InvoicePeriod.QUARTALY:\r\n            return resources.quartaly;\r\n        case InvoicePeriod.SEMIANNUALLY:\r\n            return resources.semianually;\r\n        case InvoicePeriod.ANNULALY:\r\n            return resources.annually;\r\n        default:\r\n            return '';\r\n    }\r\n};\r\n\r\n/**\r\n * Formats date.\r\n * @param context - Core context.\r\n * @param date - Date to display.\r\n * @returns String value.\r\n */\r\nexport const formatDate = (context: ICoreContext, date: Date | undefined) => {\r\n    if (date === undefined) {\r\n        return '';\r\n    }\r\n\r\n    const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\r\n    return context.cultureFormatter.formatDate(date, dateOptions);\r\n};\r\n\r\n/**\r\n * Get the formatted currency.\r\n * @param props - The props.\r\n * @param price - The price.\r\n * @param shouldUseFreePriceText - The shouldUseFreePriceText.\r\n * @returns The formatted currency.\r\n */\r\nexport const formatCurrency = (props: any, currency: string | undefined, price: number | undefined): string => {\r\n    if (price === undefined) {\r\n        return '';\r\n    }\r\n\r\n    return props?.context?.cultureFormatter?.formatCurrency(price, currency);\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nimport classnames from 'classnames';\r\n\r\nimport { INosSubscriptionDetailsData } from './nos-subscription-details.data';\r\nimport { INosSubscriptionDetailsProps, INosSubscriptionDetailsResources } from './nos-subscription-details.props.autogenerated';\r\nimport { Module, Node, IModuleProps, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport getSubscriptionDetailsAction, {\r\n    GetSubscriptionDetailsInput,\r\n    IGetSubscriptionDetailsData\r\n} from '../../actions/get-subscription-details.action';\r\nimport {\r\n    formatCurrency,\r\n    formatDate,\r\n    getInvoiceFrequency,\r\n    getInvoiceStatus,\r\n    getSubscriptionStatus\r\n} from './utils/nos-subscription-details.utils';\r\nimport cancelSubscriptionAction, { CancelSubscriptionInput } from '../../actions/cancel-subscription.action';\r\nimport Button from 'reactstrap/lib/Button';\r\nimport changeCustomerReferenceAction, { ChangeCustomerReferenceInput } from '../../actions/change-customer-reference.action';\r\n\r\nexport interface INosSubscriptionDetailsViewProps extends INosSubscriptionDetailsProps<INosSubscriptionDetailsData> {\r\n    content: INodeProps;\r\n    heading: INodeProps;\r\n    billingAddress: INodeProps;\r\n    contactInformation: INodeProps;\r\n    relatedInvoices: INodeProps;\r\n    subscriptionTotals: INodeProps;\r\n    className?: string;\r\n}\r\n\r\nexport interface INosSubscriptionDetailsExtendedProps extends INosSubscriptionDetailsProps<INosSubscriptionDetailsData> {}\r\n\r\n/**\r\n * Interface for INosSubscriptionDetailsState.\r\n */\r\nexport interface INosSubscriptionDetailsState {\r\n    editCustomerReference: boolean;\r\n    isCanceled: boolean;\r\n    subscriptionDetailsData?: IGetSubscriptionDetailsData;\r\n    isModalOpen: boolean;\r\n    customerReferenceState: string;\r\n}\r\n\r\n/**\r\n *\r\n * NosSubscriptionDetails component\r\n * @extends {React.PureComponent<INosSubscriptionDetailsProps<INosSubscriptionDetailsData>>}\r\n */\r\nclass NosSubscriptionDetails extends React.PureComponent<\r\n    INosSubscriptionDetailsProps<INosSubscriptionDetailsData>,\r\n    INosSubscriptionDetailsState\r\n> {\r\n    private readonly customerReferenceRef: React.RefObject<HTMLInputElement>;\r\n\r\n    public constructor(props: INosSubscriptionDetailsExtendedProps) {\r\n        super(props);\r\n\r\n        this.state = {\r\n            editCustomerReference: false,\r\n            customerReferenceState: '',\r\n            isCanceled: false,\r\n            subscriptionDetailsData: undefined,\r\n            isModalOpen: false\r\n        };\r\n\r\n        this.customerReferenceRef = React.createRef();\r\n    }\r\n\r\n    private _initialize = async () => {\r\n        const actionInput = new GetSubscriptionDetailsInput();\r\n\r\n        await getSubscriptionDetailsAction(actionInput, this.props.context.actionContext).then(res => {\r\n            this.setState({ subscriptionDetailsData: res });\r\n            this.setState({ customerReferenceState: res.CustomerReference });\r\n            this.setState({ editCustomerReference: false });\r\n        });\r\n    };\r\n\r\n    public componentDidMount(): void {\r\n        if (this.props.context.actionContext.requestContext.user.isAuthenticated) {\r\n            // Initializing data props\r\n            void this._initialize();\r\n        }\r\n    }\r\n\r\n    public shouldComponentUpdate(nextProps: INosSubscriptionDetailsExtendedProps, nextState: INosSubscriptionDetailsState): boolean {\r\n        if (this.state === nextState && this.props.data === nextProps.data) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\r\n\r\n    public render(): JSX.Element | null {\r\n        const { resources, context } = this.props;\r\n\r\n        const modalContainer = {\r\n            moduleProps: this.props,\r\n            tag: Modal,\r\n            className: 'nos-subscription-details__dialog',\r\n            isOpen: true,\r\n            'aria-label': 'subscription-cancel',\r\n            toggle: this.closeModal,\r\n            modalTransition: { timeout: 0 },\r\n            shouldUpdateFocusToFirstElement: true\r\n        };\r\n\r\n        const modalHeaderContainer = {\r\n            tag: ModalHeader,\r\n            className: 'nos-subscription-details_modal-header',\r\n            toggle: this.closeModal,\r\n            closeButtonTabIndex: 1\r\n        };\r\n\r\n        const modalFooterContainer = { tag: ModalFooter, className: 'nos-subscription-details__modal-footer' };\r\n\r\n        const modalBodyContainer = { tag: ModalBody, className: 'nos-subscription-details__modal-body' };\r\n\r\n        const viewProps = {\r\n            ...this.props,\r\n            heading: this.props.config.heading && (\r\n                <Msdyn365.Text\r\n                    className=''\r\n                    tag={this.props.config.heading.tag || 'h1'}\r\n                    text={this.props.config.heading.text}\r\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\r\n                />\r\n            ),\r\n            className: classnames('nos-subscription-details', this.props.config.className),\r\n            content: this._renderContent(\r\n                resources,\r\n                context,\r\n                modalContainer,\r\n                modalHeaderContainer,\r\n                modalFooterContainer,\r\n                modalBodyContainer,\r\n                this.state.subscriptionDetailsData\r\n            ),\r\n            billingAddress: this._renderBillingAddress(resources, this.state.subscriptionDetailsData),\r\n            contactInformation: this._renderContactInformation(resources, this.state.subscriptionDetailsData),\r\n            relatedInvoices: this._renderRelatedInvoices(resources, context, this.state.subscriptionDetailsData),\r\n            subscriptionTotals: this._renderSubscriptionTotals(resources, this.state.subscriptionDetailsData)\r\n        };\r\n        return this.props.renderView(viewProps) as React.ReactElement;\r\n    }\r\n\r\n    private _renderContent = (\r\n        resources: INosSubscriptionDetailsResources,\r\n        context: any,\r\n        modalContainer: IModuleProps,\r\n        modalHeaderContainer: INodeProps,\r\n        modalFooterContainer: INodeProps,\r\n        modalBodyContainer: INodeProps,\r\n        subscriptionDetailsData?: IGetSubscriptionDetailsData\r\n    ) => {\r\n        const editCustomerReference = (this.state && this.state.editCustomerReference) || false;\r\n        const cancel = () => {\r\n            this.setState({ editCustomerReference: false });\r\n            this.setState({ customerReferenceState: this.state.subscriptionDetailsData?.CustomerReference || '' });\r\n        };\r\n        const handlePaymentClick = () => {\r\n            window.open(subscriptionDetailsData?.PaymentLinkUrl, '_blank');\r\n        };\r\n        return (\r\n            <>\r\n                <b>{subscriptionDetailsData?.ScheduleNumber}</b>\r\n                <div className='row nos-subscription-details__header-padding'>\r\n                    <div className='col-4'>{resources.subDetailsStatus}</div>\r\n                    <div className='col-md'>\r\n                        {getSubscriptionStatus(resources, subscriptionDetailsData?.Status)}\r\n                        {subscriptionDetailsData?.PaymentFailed && ` : ${resources.subDetailsPaymentFailed}`}\r\n                        {subscriptionDetailsData?.PaymentFailed && (\r\n                            <Button\r\n                                className='nos-subscription-details__pay-button'\r\n                                aria-label={resources.subDetailsPaymentLinkText}\r\n                                onClick={() => handlePaymentClick()}\r\n                                title={resources.subDetailsPaymentLinkText}\r\n                            >\r\n                                {resources.subDetailsPaymentLinkText}\r\n                            </Button>\r\n                        )}\r\n                    </div>\r\n                </div>\r\n                <div className='row nos-subscription-details__header-padding'>\r\n                    <div className='col-4'>{resources.subDetailsStartDate}</div>\r\n                    <div className='col-md'>\r\n                        {subscriptionDetailsData?.StartDate ? formatDate(context, new Date(subscriptionDetailsData.StartDate)) : '-'}\r\n                    </div>\r\n                </div>\r\n                <div className='row nos-subscription-details__header-padding'>\r\n                    <div className='col-4'>{resources.subDetailsNextPaymentDate}</div>\r\n                    <div className='col-md'>\r\n                        {subscriptionDetailsData?.NextPaymentDate\r\n                            ? formatDate(context, new Date(subscriptionDetailsData.NextPaymentDate))\r\n                            : '-'}\r\n                    </div>\r\n                </div>\r\n                {subscriptionDetailsData?.PaymentMethod && (\r\n                    <div className='row nos-subscription-details__header-padding'>\r\n                        <div className='col-4'>{resources.subDetailsPaymentMethod}</div>\r\n                        <div className='col-md'>\r\n                            {subscriptionDetailsData.PaymentMethod}\r\n                            {subscriptionDetailsData.CreditCardNumber && (\r\n                                <>\r\n                                    , {subscriptionDetailsData.CreditCardTypeName} {resources.endingWith}{' '}\r\n                                    {subscriptionDetailsData.CreditCardNumber}\r\n                                </>\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                )}\r\n                {subscriptionDetailsData && !editCustomerReference && (\r\n                    <div className='row nos-subscription-details__header-padding'>\r\n                        <div className='col-4'>{resources.subDetailsCustomerReference}</div>\r\n                        <div className='col-md'>\r\n                            {subscriptionDetailsData.CustomerReference ? subscriptionDetailsData.CustomerReference : '-'}\r\n                            <Button\r\n                                className='nos-subscription-details__edit-button'\r\n                                aria-label={`${resources.editButtonText} ${resources.subDetailsCustomerReference}`}\r\n                                onClick={() => this.setState({ editCustomerReference: true })}\r\n                                title={resources.editButtonText}\r\n                            >\r\n                                {resources.editButtonText}\r\n                            </Button>\r\n                        </div>\r\n                    </div>\r\n                )}\r\n                {subscriptionDetailsData && editCustomerReference && (\r\n                    <div className='row nos-subscription-details__header-padding'>\r\n                        <div className='col-4'>{resources.subDetailsCustomerReference}</div>\r\n                        <div className='col-md'>\r\n                            <input\r\n                                type='text'\r\n                                aria-label={resources.subDetailsCustomerReference}\r\n                                className={classnames('nos-subscription-details__customer-reference-input')}\r\n                                value={this.state.customerReferenceState}\r\n                                onChange={e => this.setState({ customerReferenceState: e.target.value })}\r\n                                disabled={!editCustomerReference}\r\n                                ref={this.customerReferenceRef}\r\n                            />\r\n                            <Button\r\n                                className={classnames('nos-subscription-details__save-button')}\r\n                                aria-label={resources.saveBtnLabel}\r\n                                onClick={this.changeCustomerReference}\r\n                                title={resources.saveBtnLabel}\r\n                            >\r\n                                {resources.saveBtnLabel}\r\n                            </Button>\r\n                            <Button\r\n                                className={classnames('nos-subscription-details__cancel-button')}\r\n                                aria-label={resources.cancelButtonAriaLabel}\r\n                                onClick={cancel}\r\n                                title={resources.cancelBtnLabel}\r\n                            >\r\n                                {resources.cancelBtnLabel}\r\n                            </Button>\r\n                        </div>\r\n                    </div>\r\n                )}\r\n                {subscriptionDetailsData?.Status === 0 && (\r\n                    <div className='row nos-subscription-details__header-padding'>\r\n                        <div className='col-4'>{resources.subDetailsAction}</div>\r\n                        <div className='col-md'>\r\n                            <Button\r\n                                disabled={this.state.isCanceled}\r\n                                onClick={() => this.openModal()}\r\n                                className='ms-button__secondary-light'\r\n                            >\r\n                                {resources.subDetailsCancelSubscription}\r\n                            </Button>\r\n                            {this.state.isModalOpen && (\r\n                                <Module {...modalContainer}>\r\n                                    <Node {...modalHeaderContainer}>{resources.subDetailsCancelSubscription}</Node>\r\n                                    <Node {...modalBodyContainer}>\r\n                                        <p>{resources.cancelText}</p>\r\n                                    </Node>\r\n                                    <Node {...modalFooterContainer}>\r\n                                        <Button onClick={() => this.closeModal()} className='ms-button__primary-dark'>\r\n                                            {resources.toggleDisableText}\r\n                                        </Button>\r\n                                        <Button\r\n                                            disabled={this.state.isCanceled}\r\n                                            onClick={() => this.cancelSubscription(subscriptionDetailsData)}\r\n                                            className='ms-button__primary-light'\r\n                                        >\r\n                                            {this.state.isCanceled ? (\r\n                                                <span className='nos-subscription-details__loading'>{resources.loadingMessage}</span>\r\n                                            ) : (\r\n                                                resources.toggleEnableText\r\n                                            )}\r\n                                        </Button>\r\n                                    </Node>\r\n                                </Module>\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                )}\r\n            </>\r\n        );\r\n    };\r\n\r\n    /**\r\n     * Initiate close modal.\r\n     */\r\n    private readonly closeModal = (): void => {\r\n        this.setState({\r\n            isModalOpen: false\r\n        });\r\n    };\r\n\r\n    /**\r\n     * Initiate open modal.\r\n     */\r\n    private readonly openModal = (): void => {\r\n        this.setState({\r\n            isModalOpen: true\r\n        });\r\n    };\r\n\r\n    private cancelSubscription = async (subscriptionDetailsData?: IGetSubscriptionDetailsData) => {\r\n        if (subscriptionDetailsData) {\r\n            const actionInput = new CancelSubscriptionInput(subscriptionDetailsData.LineNum, subscriptionDetailsData.ScheduleNumber);\r\n            this.setState({ isCanceled: true });\r\n            await cancelSubscriptionAction(actionInput, this.props.context.actionContext).then(res => {\r\n                if (res?.response?.value) {\r\n                    void this._initialize();\r\n                }\r\n            });\r\n        }\r\n    };\r\n\r\n    private changeCustomerReference = async () => {\r\n        const input = this.customerReferenceRef.current;\r\n        const value = input?.value || '';\r\n        const scheduleNumber = this.state.subscriptionDetailsData?.ScheduleNumber || '';\r\n        const changeCustomerReferenceInput = new ChangeCustomerReferenceInput(scheduleNumber, value);\r\n        await changeCustomerReferenceAction(changeCustomerReferenceInput, this.props.context.actionContext).then(res => {\r\n            if (res?.response?.value) {\r\n                void this._initialize();\r\n            }\r\n        });\r\n    };\r\n\r\n    private _renderSubscriptionTotals = (\r\n        resources: INosSubscriptionDetailsResources,\r\n        subscriptionDetailsData?: IGetSubscriptionDetailsData\r\n    ) => {\r\n        return (\r\n            <React.Fragment>\r\n                <h3 className='nos-subscription-details__header-padding-m'>{resources.subDetailsSubscriptionTotals}</h3>\r\n                <table className='table'>\r\n                    <thead>\r\n                        <tr>\r\n                            <th scope='col'>{resources.subDetailsHeaderProduct}</th>\r\n                            <th scope='col'>{resources.subDetailsHeaderQuantity}</th>\r\n                            <th scope='col'></th>\r\n                            <th scope='col'>{resources.subDetailsHeaderTotal}</th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n                        <tr>\r\n                            <td>{subscriptionDetailsData?.SubscriptionLineTotals?.ItemName}</td>\r\n                            <td>{subscriptionDetailsData?.SubscriptionLineTotals?.Quantity}</td>\r\n                            <td>{resources.subDetailsHeaderSubTotal}</td>\r\n                            <td>\r\n                                {formatCurrency(\r\n                                    this.props,\r\n                                    subscriptionDetailsData?.SubscriptionLineTotals?.CurrencyCode,\r\n                                    Number(subscriptionDetailsData?.SubscriptionLineTotals?.SubTotalAmount)\r\n                                )}{' '}\r\n                                / {getInvoiceFrequency(resources, subscriptionDetailsData?.SubscriptionLineTotals?.Frequency)}\r\n                            </td>\r\n                        </tr>\r\n                        <tr>\r\n                            <td> </td>\r\n                            <td> </td>\r\n                            <td>\r\n                                {resources.subDetailsVatHeaderPercent} {subscriptionDetailsData?.SubscriptionLineTotals?.VATPercantage}\r\n                            </td>\r\n                            <td>\r\n                                {formatCurrency(\r\n                                    this.props,\r\n                                    subscriptionDetailsData?.SubscriptionLineTotals?.CurrencyCode,\r\n                                    Number(subscriptionDetailsData?.SubscriptionLineTotals?.VATAmount)\r\n                                )}\r\n                            </td>\r\n                        </tr>\r\n                        <tr>\r\n                            <td> </td>\r\n                            <td> </td>\r\n                            <td>\r\n                                <strong>{resources.subDetailsHeaderTotal}</strong>\r\n                            </td>\r\n                            <td>\r\n                                <strong>\r\n                                    {formatCurrency(\r\n                                        this.props,\r\n                                        subscriptionDetailsData?.SubscriptionLineTotals?.CurrencyCode,\r\n                                        Number(subscriptionDetailsData?.SubscriptionLineTotals?.TotalAmount)\r\n                                    )}{' '}\r\n                                    / {getInvoiceFrequency(resources, subscriptionDetailsData?.SubscriptionLineTotals?.Frequency)}\r\n                                </strong>\r\n                            </td>\r\n                        </tr>\r\n                    </tbody>\r\n                </table>\r\n            </React.Fragment>\r\n        );\r\n    };\r\n\r\n    private _renderBillingAddress = (\r\n        resources: INosSubscriptionDetailsResources,\r\n        subscriptionDetailsData?: IGetSubscriptionDetailsData\r\n    ) => {\r\n        return (\r\n            <React.Fragment>\r\n                <h3 className='nos-subscription-details__header-padding-m'>{resources.subDetailsHeaderBillingAddress}</h3>\r\n                <div>{subscriptionDetailsData?.SubscriptionAddressBillTo?.Name}</div>\r\n                <div dangerouslySetInnerHTML={{ __html: subscriptionDetailsData?.SubscriptionAddressBillTo?.FormattedAddress! }} />\r\n            </React.Fragment>\r\n        );\r\n    };\r\n\r\n    private _renderContactInformation = (\r\n        resources: INosSubscriptionDetailsResources,\r\n        subscriptionDetailsData?: IGetSubscriptionDetailsData\r\n    ) => {\r\n        return (\r\n            <React.Fragment>\r\n                <h3 className='nos-subscription-details__header-padding-m'>{resources.subDetailsHeaderContact}</h3>\r\n                <div>\r\n                    {subscriptionDetailsData?.ContactGivenName} {subscriptionDetailsData?.ContactSurname}\r\n                </div>\r\n                <div>{subscriptionDetailsData?.ContactEmailAddress}</div>\r\n            </React.Fragment>\r\n        );\r\n    };\r\n\r\n    private _renderRelatedInvoices = (\r\n        resources: INosSubscriptionDetailsResources,\r\n        context: any,\r\n        subscriptionDetailsData?: IGetSubscriptionDetailsData\r\n    ) => {\r\n        return (\r\n            <React.Fragment>\r\n                <h3 className='nos-subscription-details__header-padding-m'>{resources.subDetailsRelatedInvoices}</h3>\r\n                <table className='table'>\r\n                    <thead>\r\n                        <tr>\r\n                            <th scope='col'>{resources.subDetailsHeaderId}</th>\r\n                            <th scope='col'>{resources.subDetailsHeaderDate}</th>\r\n                            <th scope='col'>{resources.subDetailsStatus}</th>\r\n                            <th scope='col'>{resources.subDetailsHeaderTotal}</th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n                        {subscriptionDetailsData?.SubscriptionRelatedInvoices?.map(el => {\r\n                            if (el.InvoiceId && el.InvoiceId !== '') {\r\n                                return (\r\n                                    <tr key={el.InvoiceId}>\r\n                                        <td>{el.InvoiceId}</td>\r\n                                        <td>{el.InvoiceDate && formatDate(context, new Date(el.InvoiceDate))}</td>\r\n                                        <td>{getInvoiceStatus(resources, el.InvoicePaymentStatus)}</td>\r\n                                        <td>\r\n                                            <strong>\r\n                                                {el.InvoiceTotalAmount\r\n                                                    ? formatCurrency(this.props, el.InvoiceCurrencyCode, Number(el.InvoiceTotalAmount))\r\n                                                    : '-'}\r\n                                            </strong>\r\n                                        </td>\r\n                                    </tr>\r\n                                );\r\n                            } else {\r\n                                return undefined;\r\n                            }\r\n                        })}\r\n                    </tbody>\r\n                </table>\r\n            </React.Fragment>\r\n        );\r\n    };\r\n}\r\n\r\nexport default NosSubscriptionDetails;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { INosSubscriptionDetailsViewProps } from './nos-subscription-details';\r\n\r\nexport default (props: INosSubscriptionDetailsViewProps) => {\r\n    const { content, billingAddress, contactInformation, relatedInvoices, subscriptionTotals, heading, className } = props;\r\n\r\n    return (\r\n        <div className={className}>\r\n            {heading}\r\n            <div className='nos-subscription-details__subscription-detail-item'>{content}</div>\r\n            <div className='nos-subscription-details__subscription-detail-item'>{subscriptionTotals}</div>\r\n            <div className='nos-subscription-details__subscription-detail-item'>{relatedInvoices}</div>\r\n            <div className='row'>\r\n                <div className='col-12 col-sm-6'>\r\n                    <div className='nos-subscription-details__subscription-detail-item'>{billingAddress}</div>\r\n                </div>\r\n                <div className='col-12 col-sm-6'>\r\n                    <div className='nos-subscription-details__subscription-detail-item'>{contactInformation}</div>\r\n                </div>\r\n            </div>\r\n        </div>\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\nimport * as React from 'react';\r\nimport { ICreateActionContext, TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { IncrementalQuantity, Module, Node, ITelemetryContent, getTelemetryAttributes, getPayloadObject, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport { IBuyboxData, IBuyboxResources as IBuyboxExtentionResources } from '@msdyn365-commerce-modules/buybox';\r\nimport {\r\n\tIBuyboxAddToCartViewProps,\r\n\tIBuyboxCallbacks,\r\n\tIBuyboxKeyInPriceViewProps,\r\n\tIBuyboxProductConfigureDropdownViewProps,\r\n\tIBuyboxProductConfigureViewProps,\r\n\tIBuyboxProductQuantityViewProps,\r\n\tIBuyboxState\r\n} from '@msdyn365-commerce-modules/buybox/src/modules/buybox/../../common';\r\nimport { IBuyboxViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/buybox/./buybox';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IBuyboxExtensionData } from './buybox.data';\r\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxProps } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport getPriceAction, { GetGraduatedPriceInput } from '../../../actions/get-graduated-price.action';\r\n\r\n// TODO: use correct \"React way\" instead of hacky/ugly quick solution\r\nconst _fetchGraduatedPrice = async (newValue: number, state: IBuyboxState, props: IBuyboxProps<IBuyboxData>) => {\r\n\tconst productId = state.productPrice?.ProductId || 0;\r\n\tconst catalogId = state.productPrice?.CatalogId || 0;\r\n\tconst actionInput = new GetGraduatedPriceInput(newValue, productId, catalogId);\r\n\r\n\tawait getPriceAction(actionInput, props.context.actionContext).then(res => {\r\n\t\tconst priceElements = document.querySelectorAll('.msc-price__actual');\r\n\t\tpriceElements.forEach(item => item.innerHTML = props.context.cultureFormatter.formatCurrency(res.ProductPrice));\r\n\t});\r\n};\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks, context: ICreateActionContext, state: IBuyboxState, props: any) => (newValue: number): boolean => {\r\n\tif (callbacks.updateQuantity) {\r\n\r\n\t\t// Call API only if user isAuthenticated optherwise the request will fail\r\n\t\tif (context.requestContext.user.isAuthenticated) {\r\n\t\t\t// Fetch from custom API endpoint to get graduated price\r\n\t\t\t_fetchGraduatedPrice(newValue, state, props);\r\n\t\t}\r\n\r\n\t\treturn callbacks.updateQuantity(newValue);\r\n\t}\r\n\treturn true;\r\n};\r\n\r\n/**\r\n * RenderQuantity.\r\n * @param quantityComponent - QuantityComponent.\r\n * @param callbacks - Callbacks.\r\n * @param props - Props.\r\n * @param state - State.\r\n * @param extentionResources - ExtentionResources.\r\n * @param quantityLimitsMessages - QuantityLimitsMessages.\r\n * @param max - Max.\r\n * @param telemetryContent - TelemetryContent.\r\n * @param unitOfMeasure - Unit Of Measure.\r\n * @returns -- Returns.\r\n */\r\nconst renderQuantity = (\r\n\tquantityComponent: IBuyboxProductQuantityViewProps,\r\n\tcallbacks: IBuyboxCallbacks,\r\n\tprops: IBuyboxProps<IBuyboxData>,\r\n\tstate: IBuyboxState,\r\n\textentionResources: IBuyboxExtentionResources,\r\n\tquantityLimitsMessages: React.ReactNode,\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n\tmax: number | undefined,\r\n\ttelemetryContent?: ITelemetryContent,\r\n\tunitOfMeasure?: React.ReactNode\r\n): JSX.Element => {\r\n\t// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n\tconst { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\tconst { resources } = props;\r\n\tconst { quantity } = state;\r\n\r\n\treturn (\r\n\t\t<Node {...ContainerProps}>\r\n\t\t\t<Node {...LabelContainerProps}>\r\n\t\t\t\t{heading}\r\n\t\t\t\t{errors}\r\n\t\t\t</Node>\r\n\r\n\t\t\t<IncrementalQuantity\r\n\t\t\t\tid='ms-buybox__product-quantity-input'\r\n\t\t\t\tmax={max}\r\n\t\t\t\tcurrentCount={quantity}\r\n\t\t\t\tonChange={onChangeHandler(callbacks, props.context.actionContext, state, props)}\r\n\t\t\t\tinputQuantityAriaLabel={resources.inputQuantityAriaLabel}\r\n\t\t\t\tdecrementButtonAriaLabel={resources.decrementButtonAriaLabel}\r\n\t\t\t\tincrementButtonAriaLabel={resources.incrementButtonAriaLabel}\r\n\t\t\t\tminQuantityText={extentionResources.minQuantityText}\r\n\t\t\t\tmaxQuantityText={extentionResources.maxQuantityText}\r\n\t\t\t\ttelemetryContent={telemetryContent}\r\n\t\t\t/>\r\n\t\t\t{unitOfMeasure}\r\n\t\t\t{quantityLimitsMessages}\r\n\t\t</Node>\r\n\t);\r\n};\r\n\r\nconst BuyboxView: React.FC<IBuyboxViewProps & IBuyboxExtentionProps<IBuyboxData & IBuyboxExtensionData>> = props => {\r\n\tconst {\r\n\t\tModuleProps,\r\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n\t\tMediaGalleryContainerProps,\r\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n\t\tProductInfoContainerProps,\r\n\t\taddToCart,\r\n\t\tconfigure,\r\n\t\tdescription,\r\n\t\tquantity,\r\n\t\tprice,\r\n\t\ttitle,\r\n\t\tinventoryLabel,\r\n\t\tkeyInPrice,\r\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Buybox.tsx file\r\n\t\tmax,\r\n\t\tunitOfMeasure,\r\n\t\tcallbacks,\r\n\t\tstate,\r\n\t\tresources,\r\n\t\tquantityLimitsMessages,\r\n\t\ttelemetryContent,\r\n\t} = props;\r\n\r\n\tconst [periodValue, setPeriodValue] = React.useState(resources.monthlyPeriodOption);\r\n\tconst period = {\r\n\t\tContainerProps: {},\r\n\t\theading: <label>{resources.periodLabel}</label>,\r\n\t\tfrequencies: (\r\n\t\t\t<select className='msc-dropdown__select' onChange={event => setPeriodValue(event.target.value)} disabled>\r\n\t\t\t\t<option>{periodValue}</option>\r\n\t\t\t</select>\r\n\t\t),\r\n\t\tdisableSubscriptionPeriodDropdown: props.config.disableSubscriptionPeriodDropdown\r\n\t};\r\n\tlet skuText: string = props.resources.skuText;\r\n\tskuText += ` ${props.data.product.result?.ItemId}`;\r\n\r\n\treturn (\r\n\t\t<Module {...ModuleProps}>\r\n\t\t\t<div className='row no-gutters'>\r\n\t\t\t\t<div className='col-12 col-sm-6 col-md-4'>\r\n\t\t\t\t\t<div className='ms-buybox__container'>\r\n\t\t\t\t\t\t<Node {...MediaGalleryContainerProps}>{props.mediaGallery}</Node>\r\n\t\t\t\t\t\t<Node {...ProductInfoContainerProps}>\r\n\t\t\t\t\t\t\t{title}\r\n\t\t\t\t\t\t\t{description}\r\n\t\t\t\t\t\t\t<Node className='msc-buybox__sku-text' tag='p'>\r\n\t\t\t\t\t\t\t\t{skuText}\r\n\t\t\t\t\t\t\t</Node>\r\n\t\t\t\t\t\t\t{unitOfMeasure}\r\n\t\t\t\t\t\t\t{period && _renderPeriod(period)}\r\n\t\t\t\t\t\t\t{configure && _renderConfigure(configure)}\r\n\t\t\t\t\t\t\t<Node className='ms-buybox__quantity'>\r\n\t\t\t\t\t\t\t\t{quantity &&\r\n\t\t\t\t\t\t\t\t\trenderQuantity(\r\n\t\t\t\t\t\t\t\t\t\tquantity,\r\n\t\t\t\t\t\t\t\t\t\tcallbacks,\r\n\t\t\t\t\t\t\t\t\t\tprops,\r\n\t\t\t\t\t\t\t\t\t\tstate,\r\n\t\t\t\t\t\t\t\t\t\tresources,\r\n\t\t\t\t\t\t\t\t\t\tquantityLimitsMessages,\r\n\t\t\t\t\t\t\t\t\t\tmax,\r\n\t\t\t\t\t\t\t\t\t\ttelemetryContent,\r\n\t\t\t\t\t\t\t\t\t\tunitOfMeasure\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Node>\r\n\t\t\t\t\t\t\t{inventoryLabel}\r\n\t\t\t\t\t\t\t{keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n\t\t\t\t\t\t\t{price}\r\n\t\t\t\t\t\t\t{addToCart && _renderAddToCart(addToCart, props)}\r\n\t\t\t\t\t\t</Node>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div className='col-12 col-sm-6 col-md-8'>\r\n\t\t\t\t\t{_renderTextBlock(props.slots && props.slots.textBlocks)}\r\n\t\t\t\t\t{ArrayExtensions.hasElements(props.slots.productSpecification) ? (\r\n\t\t\t\t\t\t<Node className='msc-buybox__product-specification'>{props.slots.productSpecification[0]}</Node>\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</Module>\r\n\t);\r\n};\r\n\r\n/**\r\n * RenderTextBlock.\r\n * @param textBlock - textBlock react node array.\r\n * @returns -- Returns.\r\n */\r\nconst _renderTextBlock = (textBlock: React.ReactNode[]): JSX.Element | undefined => {\r\n\tif (!textBlock || textBlock.length === 0) {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\treturn (\r\n\t\t<div className='ms-buybox__text-block-container'>\r\n\t\t\t{textBlock && textBlock.length > 0\r\n\t\t\t\t? textBlock.map((textBlock: React.ReactNode, index: number) => {\r\n\t\t\t\t\treturn <React.Fragment key={index}>{textBlock}</React.Fragment>;\r\n\t\t\t\t})\r\n\t\t\t\t: null}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps, props: any): JSX.Element => {\r\n\tconst { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n\tconst payLoad = getPayloadObject('click', props.telemetryContent!, 'business-sign-up', '');\r\n\tconst payload = getPayloadObject(TelemetryEvent.AddToCart, props.telemetryContent!, '', '');\r\n\tconst attributes = getTelemetryAttributes(props.telemetryContent!, payload);\r\n\r\n\tlet businessSignUpUrl;\r\n\tif (props.context.app.routes?.businessPartnerSelection?.destinationUrl) {\r\n\t\tbusinessSignUpUrl = props.context.app.routes.businessPartnerSelection?.destinationUrl;\r\n\t} else {\r\n\t\tbusinessSignUpUrl = props.context.request.url.requestUrl.origin + (props.context.request?.sitePath ?? '');\r\n\t}\r\n\r\n\tconst _registerButton = (\r\n\t\t<a\r\n\t\t\ttitle={props.resources.registerLinkText}\r\n\t\t\tclassName='msc-cart-icon msc-btn'\r\n\t\t\thref={businessSignUpUrl}\r\n\t\t\taria-label={props.resources.registerLinkText}\r\n\t\t\t{...attributes}\r\n\t\t\tonClick={onTelemetryClick(props.telemetryContent!, payLoad, 'business-sign-up')}\r\n\t\t>\r\n\t\t\t{props.resources.registerLinkText}\r\n\t\t</a>\r\n\t);\r\n\r\n\tconst payLoadLink = getPayloadObject('click', props.telemetryContent!, 'sign-in', '');\r\n\r\n\tconst _loginButton = (\r\n\t\t<a\r\n\t\t\ttitle={props.resources.loginLinkText}\r\n\t\t\tclassName='msc-cart-icon msc-btn'\r\n\t\t\thref={props.context.request.user.signInUrl}\r\n\t\t\taria-label={props.resources.loginLinkText}\r\n\t\t\t{...attributes}\r\n\t\t\tonClick={onTelemetryClick(props.telemetryContent!, payLoadLink, 'sign-in')}\r\n\t\t>\r\n\t\t\t{props.resources.loginLinkText}\r\n\t\t</a>\r\n\t);\r\n\r\n\r\n\treturn (\r\n\t\t<Node {...ContainerProps}>\r\n\t\t\t{errorBlock}\r\n\t\t\t{button}\r\n\t\t\t{!props.context.request.user.isAuthenticated && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{_registerButton} { ' | '} {_loginButton}\r\n\t\t\t\t</>\r\n            )}\r\n\t\t</Node>\r\n\t);\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n\tconst { ContainerProps, dropdowns } = configure;\r\n\r\n\treturn <Node {...ContainerProps}>{dropdowns.map(_renderConfigureDropdown)}</Node>;\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n\tconst { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n\treturn (\r\n\t\t<Node {...ContainerProps}>\r\n\t\t\t<Node {...LabelContainerProps}>\r\n\t\t\t\t{heading}\r\n\t\t\t\t{errors}\r\n\t\t\t</Node>\r\n\t\t\t{select}\r\n\t\t</Node>\r\n\t);\r\n};\r\n\r\nconst _renderPeriod = (period: any): JSX.Element | null => {\r\n\tconst { ContainerProps, LabelContainerProps, heading, frequencies, disableSubscriptionPeriodDropdown } = period;\r\n\tconst isDisableSubscriptionPeriodDropdown = disableSubscriptionPeriodDropdown;\r\n\r\n\tif (isDisableSubscriptionPeriodDropdown) {\r\n\t\treturn null;\r\n\t}\r\n\treturn (\r\n\t\t<Node {...ContainerProps}>\r\n\t\t\t<Node {...LabelContainerProps}>{heading}</Node>\r\n\t\t\t{frequencies}\r\n\t\t</Node>\r\n\t);\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n\tconst { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n\treturn (\r\n\t\t<Node {...ContainerProps}>\r\n\t\t\t<Node {...LabelContainerProps}>{heading}</Node>\r\n\t\t\t{input}\r\n\t\t</Node>\r\n\t);\r\n};\r\n\r\nexport default BuyboxView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n    IAddressShowItem,\r\n    IAddressShowProps,\r\n    IAddressAddItem,\r\n    IAddressAddUpdateProps,\r\n    ICheckoutBillingAddressViewProps\r\n} from '@msdyn365-commerce-modules/address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC<IAddressShowProps> = ({ AddressDetail, items }) => {\r\n    return (\r\n        <Node {...AddressDetail}>\r\n            {items.map((item: IAddressShowItem) => {\r\n                return <>{item.description}</>;\r\n            })}\r\n        </Node>\r\n    );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address Heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - IAddressError.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - AddressForm Node.\r\n */\r\nconst AddressAddUpdate: React.FC<IAddressAddUpdateProps> = ({\r\n    AddressForm,\r\n    heading,\r\n    items,\r\n    hasError,\r\n    error,\r\n    isShowSaveButton,\r\n    saveButton,\r\n    isShowCancelButton,\r\n    cancelButton\r\n}) => {\r\n    return (\r\n        <Node {...AddressForm}>\r\n            {heading}\r\n            {items.map((item: IAddressAddItem) => {\r\n                const { AddressItem, key, label, alert, input } = item;\r\n                return (\r\n                    <Node {...AddressItem} key={key}>\r\n                        {label}\r\n                        {alert}\r\n                        {input}\r\n                    </Node>\r\n                );\r\n            })}\r\n            {hasError && (\r\n                <Node {...error.AddressError}>\r\n                    {error.title}\r\n                    {error.message}\r\n                </Node>\r\n            )}\r\n            {isShowSaveButton && saveButton}\r\n            {isShowCancelButton && cancelButton}\r\n        </Node>\r\n    );\r\n};\r\n\r\n/**\r\n * Checkout Billing Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutBillingAddress Module.\r\n */\r\nconst CheckoutBillingAddressView: React.FC<ICheckoutBillingAddressViewProps> = props => {\r\n    const { CheckoutBillingAddress, checkoutErrorRef, alert, viewState, showAddress, showAddOrUpdateAddress } = props;\r\n\r\n    return (\r\n        <Module {...CheckoutBillingAddress} ref={checkoutErrorRef}>\r\n            {alert}\r\n            {viewState.isShowAddress && <AddressShow {...showAddress} />}\r\n            {viewState.isShowAddOrUpdateAddress && <AddressAddUpdate {...showAddOrUpdateAddress} />}\r\n        </Module>\r\n    );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\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<ICartIconData> {\r\n    className?: string;\r\n    cartLabel: string;\r\n    cartQtyLabel: string;\r\n    telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent<ICartIconComponentProps> {}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC<ICartIconComponentProps>}\r\n */\r\nconst CartIcon: React.FC<ICartIconComponentProps> = observer((props: ICartIconComponentProps) => {\r\n    const {\r\n        cartLabel,\r\n        cartQtyLabel,\r\n        data: { cart }\r\n    } = props;\r\n\r\n    // If there are invoice lines, don't update mini cart item quantity\r\n    const cartItem = cart ? cart.totalItemsInCart : 0;\r\n    const qtyLabel = format(cartQtyLabel, cartItem);\r\n    const label = format(cartLabel, cartItem);\r\n\r\n    // Construct telemetry attribute to render\r\n    const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n    const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n    const style: React.CSSProperties = {\r\n        visibility: cart ? 'visible' : 'hidden'\r\n    };\r\n    return (\r\n        <React.Fragment>\r\n            {props.context.request.user.isAuthenticated && (\r\n                <div className='msc-cart-icon__count' aria-hidden style={style}\r\n                    title={label}\r\n                    aria-label={label}\r\n                    {...attributes}>\r\n                        {qtyLabel}\r\n                </div>\r\n            )}\r\n        </React.Fragment>\r\n    );\r\n});\r\n\r\n// @ts-expect-error\r\n// prettier-ignore\r\nexport const CartIconComponent: React.FunctionComponent<ICartIconComponentProps> = msdyn365Commerce.createComponentOverride<ICartIconComponent>('CartIcon', { component: CartIcon, ...CartIconComponentActions });\r\n\r\nexport default CartIconComponent;\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 { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps<ISearchData>): JSX.Element | null => {\r\n    const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n    if (!noSearchResultImage || !noSearchResultImage.src) {\r\n        return null;\r\n    }\r\n    const imageSettings = {\r\n        lazyload: true,\r\n        viewports: {\r\n            xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\r\n        }\r\n    };\r\n    return (\r\n        <Image\r\n            altText={noSearchResultImage.altText}\r\n            className='msc-autoSuggest__productResults-no-results-image-img'\r\n            gridSettings={props.context.request.gridSettings!}\r\n            src={noSearchResultImage.src}\r\n            requestContext={props.context.request}\r\n            imageSettings={imageSettings}\r\n        />\r\n    );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nexport const AutoSuggestEmptyComponent = (props: ISearchProps<ISearchData>): JSX.Element => {\r\n    return (\r\n        <Node className='msc-autoSuggest__productResults-empty-content'>\r\n            <div className='msc-autoSuggest__productResults-empty-no-results-image'>{renderProductNotFoundResultsImage(props)}</div>\r\n            <div className='msc-autoSuggest__productResults-empty-text-content'>\r\n                <h3 className='msc-autoSuggest__productResults-empty-heading'>{props.resources.emptySearchTextHeading}</h3>\r\n                <div className='msc-autoSuggest__productResults-empty-text'>{props.resources.emptySearchText}</div>\r\n            </div>\r\n        </Node>\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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\nimport { AutoSuggestEmptyComponent } from './search.empty';\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\r\n    return (\r\n        <Button className='ms-search__form-control__clear' title={clearSearchButtonText || 'Clear'} onClick={clearSearch}>\r\n            {clearSearchButtonText || 'Clear'}\r\n        </Button>\r\n    );\r\n};\r\n\r\n/**\r\n * Render Search form.\r\n * @param form -Form view props.\r\n * @param searchForm -Search Form props.\r\n * @param formWrapper -Form Wrapper props.\r\n * @param clearSearchButtonText -The Clear button text.\r\n * @param props -The props for resource.\r\n * @param isSearchText -Is SearchText flag for input text.\r\n * @param clearSearch -Clear Search callback.\r\n * @returns -The JSX Element.\r\n */\r\nexport const FormComponent = (\r\n    form: ISearchFormViewProps,\r\n    searchForm: INodeProps,\r\n    formWrapper: INodeProps,\r\n    clearSearchButtonText: string,\r\n    props: ISearchProps<ISearchData>,\r\n    isSearchText: boolean,\r\n    clearSearch: () => void\r\n): JSX.Element => {\r\n\r\n    return (\r\n        <Node {...searchForm}>\r\n            {form.cancelBtn}\r\n            <Node {...formWrapper}>\r\n                {form.input}\r\n                {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\r\n                {!isSearchText ? AutoSuggestEmptyComponent(props) : null}\r\n            </Node>\r\n        </Node>\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 { IImageData, Image } from '@msdyn365-commerce/core';\r\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param productSuggestionsHeading -The products suggestion result heading.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\r\n    const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\r\n\r\n    return <div className='msc-autoSuggest__productResults-title'>{productAutoSuggestionHeading}</div>;\r\n};\r\n\r\n/**\r\n * Render Products Suggestion result heading.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResultsImage = (props: ISearchProps<ISearchData>): JSX.Element | null => {\r\n    const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\r\n    if (!noSearchResultImage || !noSearchResultImage.src) {\r\n        return null;\r\n    }\r\n    return (\r\n        <Image\r\n            altText={noSearchResultImage.altText}\r\n            className='msc-autoSuggest__productResults-no-results-image-img'\r\n            gridSettings={props.context.request.gridSettings!}\r\n            src={noSearchResultImage.src}\r\n        />\r\n    );\r\n};\r\n\r\n/**\r\n * Render Products No result section.\r\n * @param props -The props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductNotFoundResults = (props: ISearchProps<ISearchData>): JSX.Element => {\r\n    return (\r\n        <Node className='msc-autoSuggest__productResults-no-results-content'>\r\n            <div className='msc-autoSuggest__productResults-no-results-image'>{renderProductNotFoundResultsImage(props)}</div>\r\n            <div className='msc-autoSuggest__productResults-no-results-content-title'>{props.resources.noResultContentHeadingText}</div>\r\n            <div className='msc-autoSuggest__productResults-no-results-content-paragraph'>\r\n                {props.resources.noResultContentParagraphText}\r\n            </div>\r\n        </Node>\r\n    );\r\n};\r\n\r\n/**\r\n * Render Product suggestion result.\r\n * @param productSuggest -The product suggest Node props.\r\n * @param ulProduct -The List Node props.\r\n * @param props -The props.\r\n * @param productSuggestions -The Product suggestion result.\r\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\r\n * @param isLoadingNode - The autosuggestion loading node.\r\n * @returns The JSX Element.\r\n */\r\nexport const ProductSuggestionsComponent = (\r\n    productSuggest: INodeProps,\r\n    ulProduct: INodeProps,\r\n    props: ISearchProps<ISearchData>,\r\n    productSuggestions?: ISearchProductViewProps,\r\n    isLoadingAutoSuggest?: boolean,\r\n    isLoadingNode?: React.ReactNode\r\n): JSX.Element => {\r\n    const liProduct: INodeProps = {\r\n        tag: 'li',\r\n        className: 'msc-no-result-content'\r\n    };\r\n    return productSuggestions ? (\r\n        <Node {...productSuggest}>\r\n            {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n            <Node {...ulProduct}>\r\n                {isLoadingAutoSuggest && isLoadingNode}\r\n                {!isLoadingAutoSuggest &&\r\n                    productSuggestions.items.map((item, index) => {\r\n                        return (\r\n                            <Node {...item.LiProduct} key={item.id ?? index}>\r\n                                <Node {...item.AProduct}>\r\n                                    {item.thumbnail}\r\n                                    {item.text}\r\n                                </Node>\r\n                            </Node>\r\n                        );\r\n                    })}\r\n            </Node>\r\n        </Node>\r\n    ) : (\r\n        <Node {...productSuggest}>\r\n            {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\r\n            <Node {...ulProduct}>\r\n                <Node {...liProduct}>{renderProductNotFoundResults(props)}</Node>\r\n            </Node>\r\n        </Node>\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\r\nimport { format, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useEffect, useState } from 'react';\r\n\r\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\r\n// import { CategorySuggestionsComponent } from './components/search.categorysuggest';\r\nimport { FormComponent } from './components/search.form';\r\n// import { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\r\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\r\n\r\n/**\r\n * Render Title for AutoSuggest.\r\n * @param searchSuggestionHeading -The heading resource string.\r\n * @param searchText -The search string.\r\n * @returns -The JSX Element.\r\n */\r\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\r\n    const searchTextString = '\"'.concat(searchText.concat('\"'));\r\n    const searchAutoSuggestionHeading = searchSuggestionHeading\r\n        ? format(searchSuggestionHeading, searchTextString)\r\n        : `Search for ${searchTextString}`;\r\n\r\n    return <Node className='msc-autoSuggest__search-title'>{searchAutoSuggestionHeading}</Node>;\r\n};\r\n\r\n/**\r\n * Search View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst SearchView: React.FC<ISearchViewProps & ISearchProps<ISearchData>> = (\r\n    props: ISearchViewProps & ISearchProps<ISearchData>\r\n): JSX.Element => {\r\n    const {\r\n        Search,\r\n        AutoSuggestAriaLabel,\r\n        AutoSuggestAriaLabelText,\r\n        searchText,\r\n        AutoSuggest,\r\n        // KeywordSuggest,\r\n        ProductSuggest,\r\n        // UlKeyword,\r\n        UlProduct,\r\n        form,\r\n        // autosuggestKeyword,\r\n        autosuggestProduct,\r\n        SearchForm,\r\n        FormWrapper,\r\n        label,\r\n        isLoadingAutoSuggest,\r\n        isLoadingNode,\r\n    } = props;\r\n\r\n    const { searchSuggestionHeading, clearSearchButtonText } = props.resources;\r\n\r\n    const [searchTextString, setSearchTextString] = useState<string>();\r\n\r\n    useEffect(() => {\r\n        setSearchTextString(searchText);\r\n    }, [searchText]);\r\n\r\n    /**\r\n     * ClearSearch callback method to clear search string.\r\n     */\r\n    const clearSearch = (): void => {\r\n        setSearchTextString('');\r\n\r\n        const propsForm = props.form as ISearchFormViewProps;\r\n        const propsFormInput = propsForm.input as React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;\r\n        const propsFormInputCurrent = (propsFormInput.ref as React.RefObject<HTMLInputElement>).current;\r\n\r\n        if (propsFormInputCurrent) {\r\n            propsFormInputCurrent.value = '';\r\n        }\r\n\r\n        propsFormInput.value = '';\r\n        props.searchText = '';\r\n        props.FormWrapper.action = '';\r\n    };\r\n\r\n    AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\r\n        ? `${AutoSuggest.className} show`\r\n        : `${AutoSuggest.className} hide`;\r\n    const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\r\n\r\n    return (\r\n        <Module {...Search}>\r\n            {label}\r\n            {FormComponent(\r\n                form as ISearchFormViewProps,\r\n                SearchForm,\r\n                FormWrapper,\r\n                clearSearchButtonText,\r\n                props,\r\n                isSearchText,\r\n                clearSearch\r\n            )}\r\n            {props.isSearchFormExpanded && (\r\n                <Node {...AutoSuggest}>\r\n                    {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n                        <Node {...AutoSuggestAriaLabel}>{AutoSuggestAriaLabelText}</Node>\r\n                    ) : (\r\n                        ''\r\n                    )}\r\n                    {!StringExtensions.isNullOrEmpty(searchTextString) ? (\r\n                        <>\r\n                            <Node className='msc-autoSuggest__search-title-container'>\r\n                                {renderTitle(searchSuggestionHeading, searchText)}\r\n                            </Node>\r\n                            <Node className='msc-autoSuggest__results-container'>\r\n                                {/* <Node className='msc-autoSuggest__results'>\r\n                                    {CategorySuggestionsComponent(\r\n                                        categorySuggestionHeading,\r\n                                        noResultText,\r\n                                        props,\r\n                                        isLoadingAutoSuggest,\r\n                                        isLoadingNode\r\n                                    )}\r\n                                    {KeywordSuggestionsComponent(\r\n                                        KeywordSuggest,\r\n                                        UlKeyword,\r\n                                        keywordsHeading,\r\n                                        noResultText,\r\n                                        autosuggestKeyword,\r\n                                        isLoadingAutoSuggest,\r\n                                        isLoadingNode\r\n                                    )}\r\n                                </Node> */}\r\n                                {ProductSuggestionsComponent(\r\n                                    ProductSuggest,\r\n                                    UlProduct,\r\n                                    props,\r\n                                    autosuggestProduct,\r\n                                    isLoadingAutoSuggest,\r\n                                    isLoadingNode\r\n                                )}\r\n                            </Node>\r\n                        </>\r\n                    ) : null}\r\n                </Node>\r\n            )}\r\n        </Module>\r\n    );\r\n};\r\nexport default SearchView;\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<IAccordionItemData> {\n    interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component<IAccordionItemExtentedProps>}\n */\n@observer\nclass AccordionItem extends React.Component<IAccordionItemExtentedProps> {\n    private readonly moduleClassName: string = 'ms-accordion-item';\n\n    private readonly telemetryContent?: ITelemetryContent;\n\n    constructor(props: IAccordionItemProps<IAccordionItemData>) {\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<IAccordionItemData>): 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<IAccordionItemViewProps> = props => {\n    const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n    return (\n        <Module {...AccordionItemContainer}>\n            <Node {...drawer}>\n                <Node {...AccordionItemContent}>\n                    {accordionSlots &&\n                        accordionSlots.accordionItemContent &&\n                        accordionSlots.accordionItemContent.length &&\n                        _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n                </Node>\n            </Node>\n        </Module>\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 <React.Fragment key={index}>{item}</React.Fragment>;\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<IAccordionProps<IAccordionData>>}\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<IAccordionProps<IAccordionData>>}\n */\n@observer\nclass Accordion extends React.PureComponent<IAccordionProps<IAccordionData>, IAccordianState> {\n    private readonly telemetryContent?: ITelemetryContent;\n\n    private readonly payLoad: IPayLoad;\n\n    private readonly expandAllButtonRef: React.RefObject<HTMLButtonElement> = React.createRef<HTMLButtonElement>();\n\n    private readonly collapseAllButtonRef: React.RefObject<HTMLButtonElement> = React.createRef<HTMLButtonElement>();\n\n    constructor(props: IAccordionProps<IAccordionData>) {\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            <Msdyn365.Text\n                className='ms-accordion-header-section__heading'\n                tag={heading.tag || 'h1'}\n                text={heading.text}\n                editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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                <button\n                    disabled={this.state.isDisabled}\n                    className='ms-accordion_ExpandAll'\n                    aria-label={`${resources.expandAllText} ${heading?.text ? heading.text : ''}`}\n                    onClick={this._onExpandAll}\n                    ref={this.expandAllButtonRef}\n                    {...attributeExpandAll}\n                >\n                    {resources.expandAllText}\n                </button>\n                &nbsp;\n                {resources.toggleAllSeparator}\n                &nbsp;\n                <button\n                    className='ms-accordion_CollapseAll'\n                    aria-label={`${resources.collapseAllText} ${heading?.text ? heading.text : ''}`}\n                    onClick={this._onCollapseAll}\n                    ref={this.collapseAllButtonRef}\n                    {...attributeCollapseAll}\n                    disabled={!this.state.isDisabled}\n                >\n                    {resources.collapseAllText}\n                </button>\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            <React.Fragment key={index}>\n                {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n            </React.Fragment>\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<IAccordionViewProps> = 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        <Module {...AccordionContainer}>\n            <Node {...props.HeaderSection}>\n                <Node {...props.HeadingWrapper}>{heading}</Node>\n                {props.accordionButtons && <Node {...props.accordianButtonsContainer}>{props.accordionButtons}</Node>}\n            </Node>\n            <Node {...props.accordionItemContainer}>{accordionItems}</Node>\n        </Module>\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAadGenericData } from './aad-generic.data';\nimport { IAadGenericProps } from './aad-generic.props.autogenerated';\n\nexport interface IAadGenericViewProps extends IAadGenericProps<IAadGenericData> {\n    aadGeneric: IModuleProps;\n    aadConainer: INodeProps;\n    aadAPIConainer: React.ReactNode;\n    heading?: React.ReactNode;\n}\n\n/**\n *\n * AadGeneric component.\n * @extends {React.Component<IAadGenericProps<IAadGenericData>>}\n */\nclass AadGeneric extends React.Component<IAadGenericProps<IAadGenericData>> {\n    private readonly moduleClassName: string = 'ms-aad-generic';\n\n    public componentDidMount(): void {\n        // @ts-expect-error\n        const { $i2e, $element } = window || {};\n\n        if ($i2e && $element) {\n            $i2e.insertServiceContent($element.getElementContent());\n            $element.initialize();\n        }\n    }\n\n    public shouldComponentUpdate(nextProps: IAadGenericViewProps): boolean {\n        if (nextProps.config.heading !== this.props.config.heading) {\n            return true;\n        }\n        return false;\n    }\n\n    public render(): JSX.Element | null {\n        const { className, heading } = this.props.config;\n\n        const viewProps = {\n            ...this.props,\n            aadGeneric: {\n                moduleProps: this.props,\n                className: classnames(this.moduleClassName, className)\n            },\n            aadConainer: {\n                className: `${this.moduleClassName}__container`\n            },\n            aadAPIConainer: <div id='api' />,\n            heading: heading && (\n                <Msdyn365.Text\n                    className={`${this.moduleClassName}__heading`}\n                    {...heading}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            )\n        };\n\n        return this.props.renderView(viewProps);\n    }\n\n    public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n        if (this.props.config.heading) {\n            this.props.config.heading.text = event.target.value;\n        }\n    };\n}\n\nexport default AadGeneric;\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 { IAadGenericViewProps } from './aad-generic';\n\nexport default (props: IAadGenericViewProps) => {\n    const { aadGeneric, aadConainer, aadAPIConainer, heading } = props;\n\n    return (\n        <Module {...aadGeneric}>\n            <Node {...aadConainer}>\n                {heading}\n                {aadAPIConainer}\n            </Node>\n        </Module>\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 { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps<IAccountAddressTileData> {\n    AccountAddressTile: IModuleProps;\n    className: string;\n    heading?: React.ReactNode;\n    links?: React.ReactNode;\n    description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component.\n * @extends {React.PureComponent<IAccountAddressTileProps<IAccountAddressTileData>>}\n */\nclass AccountAddressTile extends React.PureComponent<IAccountAddressTileProps<IAccountAddressTileData>> {\n    private readonly telemetryContent: ITelemetryContent;\n\n    constructor(props: IAccountAddressTileProps<IAccountAddressTileData>) {\n        super(props);\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n    }\n\n    public render(): JSX.Element {\n        const { config, resources, data } = this.props;\n        const { className, heading, links } = config;\n        const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n        const { address } = data;\n        const addressCount = (address && address.result && address.result.length) || 0;\n        const accountAddressTileDescription =\n            addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n        const description = format(accountAddressTileDescription, addressCount);\n\n        const viewProps = {\n            ...this.props,\n            className,\n            AccountAddressTile: {\n                moduleProps: this.props,\n                className: classnames('ms-account-address-tile', config.className)\n            },\n            heading: heading && heading.text && (\n                <Msdyn365.Text\n                    className='ms-account-address-tile__heading'\n                    tag={heading.tag || 'h2'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: links && links.length > 0 && (\n                <LinksComponent\n                    {...{\n                        links,\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: <DescriptionComponent 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 AccountAddressTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC<IAccountAddressTileViewProps> = props => {\n    const { AccountAddressTile, heading, description, links } = props;\n\n    return (\n        <Module {...AccountAddressTile}>\n            {heading}\n            {description}\n            {links}\n        </Module>\n    );\n};\n\nexport default AccountAddressTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountAddressTileDescription {\n    description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountAddressTileDescription: React.FC<IAccountAddressTileDescription> = ({ description }) => (\n    <p className='ms-account-address-tile__description'>{description}</p>\n);\n\nexport default IAccountAddressTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\n    links: ILinksData[];\n    requestContext: Msdyn365.IRequestContext;\n\n    /**\n     * The telemetry content\n     */\n    telemetryContent?: ITelemetryContent;\n    onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountAddressTileLinks: React.FC<IAccountAddressTileLinks> = ({ links, telemetryContent, requestContext, onTextChange }) => {\n    if (links.length === 0) {\n        return null;\n    }\n    const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n    return (\n        <div className='ms-account-address-tile__links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\n    );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n    if (!linkdata || linkdata.length === 0) {\n        return null;\n    }\n    const editableLinks: Msdyn365.ILinksData[] = [];\n    const payLoad = getPayloadObject('click', telemetryContent!, '');\n    linkdata.forEach((link, index) => {\n        payLoad.contentAction.etext = link.linkText;\n        const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n        const editableLink: Msdyn365.ILinksData = {\n            ariaLabel: link.ariaLabel,\n            className: 'ms-account-address-tile__link',\n            linkText: link.linkText,\n            linkUrl: link.linkUrl.destinationUrl,\n            openInNewTab: link.openInNewTab,\n            role: 'link',\n            additionalProperties: attributes\n        };\n        editableLinks.push(editableLink);\n    });\n\n    return editableLinks;\n};\n\nexport default AccountAddressTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps<IAccountCustomerBalanceTileData> {\n    AccountCustomerBalanceTile: IModuleProps;\n    className: string;\n    heading?: React.ReactNode;\n    content: React.ReactNode;\n    links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n    isDetailsLinkDisplayed: boolean;\n    content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component<IAccountCustomerBalanceTileProps<IAccountCustomerBalanceTileData>>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n    IAccountCustomerBalanceTileProps<IAccountCustomerBalanceTileData>,\n    IAccountCustomerBalanceTileViewState\n> {\n    @computed get hasError(): boolean {\n        return get(this.props, 'data.balance.status') !== 'SUCCESS';\n    }\n\n    private readonly telemetryContent: ITelemetryContent;\n\n    constructor(props: IAccountCustomerBalanceTileProps<IAccountCustomerBalanceTileData>) {\n        super(props);\n\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n\n        this.state = { ...this._initState() };\n\n        reaction(\n            () => this.hasError,\n            () => {\n                this.props.context.telemetry.error('Error retrieving customer account balance');\n                this.setState({\n                    content: <ErrorComponent value={this.props.resources.apiGenericErrorMessage} />\n                });\n            }\n        );\n    }\n\n    @computed get isCustomerAccountPaymentEnabled(): boolean {\n        const customerResult = get(this.props, 'data.customerInformation.result');\n\n        const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n        const isB2BSite = isChannelTypeB2B(this.props.context.request);\n        const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n        return (\n            allowOnAccountPayment &&\n            (enableCustomerAccountPayment === 'all' ||\n                (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n                (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n        );\n    }\n\n    public shouldComponentUpdate(\n        nextProps: IAccountCustomerBalanceTileProps<IAccountCustomerBalanceTileData>,\n        nextState: IAccountCustomerBalanceTileViewState\n    ): boolean {\n        if (this.state === nextState && this.props.data === nextProps.data) {\n            return false;\n        }\n        return true;\n    }\n\n    public render(): JSX.Element {\n        if (!this.isCustomerAccountPaymentEnabled) {\n            return <></>;\n        }\n\n        const { className, heading, links } = this.props.config;\n        const viewProps = {\n            ...this.props,\n            AccountCustomerBalanceTile: {\n                moduleProps: this.props,\n                className: classnames('ms-account-customer-balance-tile', className)\n            },\n            heading: heading && (\n                <Heading className='ms-account-customer-balance-tile__heading' headingTag={heading.tag} text={heading.text} />\n            ),\n            content: this.state.content,\n            links: this.state.isDetailsLinkDisplayed && (\n                <LinksComponent\n                    {...{\n                        links,\n                        onTextChange: (index: number) => (event: Msdyn365.ContentEditableEvent) => void 0,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            )\n        };\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    private _initState(): IAccountCustomerBalanceTileViewState {\n        const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n        let content: React.ReactNode;\n        let isDetailsLinkDisplayed = false;\n\n        if (this.hasError) {\n            this.props.telemetry.error('Error retrieving customer account balance');\n            content = <ErrorComponent error={this.props.resources.apiGenericErrorMessage} />;\n        } else if (\n            account.Balance === 0 &&\n            account.CreditLimit === 0 &&\n            account.InvoiceAccountBalance === 0 &&\n            account.InvoiceAccountCreditLimit === 0\n        ) {\n            // Non-established credit\n            content = <ErrorComponent error={this.props.resources.noCreditErrorMessage} />;\n        } else {\n            // Successfully retrieved balance\n            const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n            const currencyCode = get(this.props, 'context.request.channel.Currency');\n            const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n            let customerCredit = 0;\n\n            if (account.InvoiceAccountCreditLimit === 0) {\n                customerCredit = account.CreditLimit - account.Balance;\n            } else {\n                customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n            }\n\n            const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n            isDetailsLinkDisplayed = true;\n            content = (\n                <CreditComponent\n                    verbagePrefix={accountCreditVerbagePrefix}\n                    value={customerCreditFormatted}\n                    verbagePostfix={accountCreditVerbagePostfix}\n                    className='ms-account-customer-balance-tile__balance'\n                />\n            );\n        }\n\n        return { content, isDetailsLinkDisplayed };\n    }\n}\n\nexport default AccountCustomerBalanceTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC<IAccountCustomerBalanceTileViewProps> = props => {\n    const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n    return (\n        <Module {...AccountCustomerBalanceTile}>\n            {heading}\n            {content}\n            {links}\n        </Module>\n    );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n    label?: string;\n    value?: string;\n    verbagePrefix?: string;\n    verbagePostfix?: string;\n    className?: string;\n    error?: string;\n}\n\nexport const ErrorComponent: React.FC<IAccountCustomerBalanceTileInfo> = ({ error }) => (\n    <span className='ms-account-customer-balance-tile__error'>{error}</span>\n);\n\nexport const CreditComponent: React.FC<IAccountCustomerBalanceTileInfo> = ({ verbagePrefix, verbagePostfix, value, className }) => {\n    return (\n        <div className={className}>\n            {verbagePrefix}\n            <span className='ms-account-customer-balance-tile__value'>{value}</span>\n            {verbagePostfix}\n        </div>\n    );\n};\n\nexport const InfoComponent: React.FC<IAccountCustomerBalanceTileInfo> = ({ label, value, className }) => (\n    <div className={className}>\n        <span className='ms-account-customer-balance-tile__label'>{label}</span>\n        <span className='ms-account-customer-balance-tile__value'>{value}</span>\n    </div>\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n    linkText?: string;\n    linkUrl: Msdyn365.ILinkData;\n    ariaLabel?: string;\n    openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n    links: ILinksData[];\n    requestContext: Msdyn365.IRequestContext;\n\n    /**\n     * The telemetry content\n     */\n    telemetryContent?: ITelemetryContent;\n    onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC<IAccountCustomerBalanceTileLinks> = ({\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        <div className='ms-account-customer-balance-tile__links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\n    );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n    if (!linkdata || linkdata.length === 0) {\n        return null;\n    }\n    const editableLinks: Msdyn365.ILinksData[] = [];\n    const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n    linkdata.forEach((link, index) => {\n        payLoad.contentAction.etext = link.linkText;\n        const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n        const editableLink: Msdyn365.ILinksData = {\n            ariaLabel: link.ariaLabel,\n            className: 'ms-account-customer-balance-tile__link',\n            linkText: link.linkText,\n            linkUrl: link.linkUrl.destinationUrl,\n            openInNewTab: link.openInNewTab,\n            role: 'link',\n            additionalProperties: attributes\n        };\n        editableLinks.push(editableLink);\n    });\n\n    return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n    description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC<IAccountInvoiceTileDescription> = ({ description }) => (\n    <p className='ms-account-invoice-tile__description'>{description}</p>\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<IAccountInvoiceTileLinks> = ({ links, telemetryContent, requestContext, onTextChange }) => {\n    if (links.length === 0) {\n        return null;\n    }\n    const editableLinks = _mapEditableLinks(links, telemetryContent);\n    return (\n        <div className='ms-account-invoice-tile__links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\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<IAccountInvoiceTileData> {\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<IAccountInvoiceTileProps<IAccountInvoiceTileData>>}\n */\nclass AccountInvoiceTile extends React.PureComponent<IAccountInvoiceTileProps<IAccountInvoiceTileData>> {\n    private readonly telemetryContent: ITelemetryContent;\n\n    constructor(props: IAccountInvoiceTileProps<IAccountInvoiceTileData>) {\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                <Msdyn365.Text\n                    className='ms-account-invoice-tile__heading'\n                    tag={heading.tag || 'h2'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: links && links.length > 0 && (\n                <LinksComponent\n                    {...{\n                        links,\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: description && <AccountInvoiceTileDescription 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        <Module {...AccountInvoiceTile}>\n            {heading}\n            {description}\n            {links}\n        </Module>\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<IAccountLoyaltyTileLinks> = ({ links, telemetryContent, onTextChange, requestContext }) => {\n    if (links.length === 0) {\n        return null;\n    }\n    const editableLinks = _mapEditableLinks(links, telemetryContent);\n    return (\n        <div className='ms-account-loyalty-tile__links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\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<IAccountLoyaltyTileData> {\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<IAccountLoyaltyTileProps<IAccountLoyaltyTileData>>}\n */\nclass AccountLoyaltyTile extends React.PureComponent<IAccountLoyaltyTileProps<IAccountLoyaltyTileData>> {\n    private readonly telemetryContent: ITelemetryContent;\n\n    constructor(props: IAccountLoyaltyTileProps<IAccountLoyaltyTileData>) {\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                <Msdyn365.Text\n                    className='ms-account-loyalty-tile__heading'\n                    tag={heading.tag || 'h2'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: (\n                <LinksComponent\n                    {...{\n                        links: [link],\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: <DescriptionComponent 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.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<IAccountLoyaltyTileViewProps> = props => {\n    const { AccountLoyaltyTile, heading, description, links } = props;\n\n    return (\n        <Module {...AccountLoyaltyTile}>\n            {heading}\n            {description}\n            {links}\n        </Module>\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<IAccountLoyaltyTileDescription> = ({ description }) => (\n    <p className='ms-account-loyalty-tile__description'>{description}</p>\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<IAccountOrderTemplatesTileDescription> = ({ description }) => (\n    <p className='ms-account-order-templates-tile__description'>{description}</p>\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<IAccountOrderTemplatesTileLinks> = ({\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        <div className='ms-account-order-templates-tile__links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\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<IAccountOrderTemplatesTileData> {\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<IAccountOrderTemplatesTileProps<IAccountOrderTemplatesTileData>>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent<IAccountOrderTemplatesTileProps<IAccountOrderTemplatesTileData>> {\n    private readonly telemetryContent: ITelemetryContent;\n\n    constructor(props: IAccountOrderTemplatesTileProps<IAccountOrderTemplatesTileData>) {\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                <Msdyn365.Text\n                    className='ms-account-order-templates-tile__heading'\n                    tag={heading.tag}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: links && links.length > 0 && (\n                <AccountOrderTemplatesTileLinks\n                    {...{\n                        links,\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: <AccountOrderTemplatesTileDescription description={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<IAccountOrderTemplatesTileViewProps> = props => {\n    const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n    return (\n        <Module {...AccountOrderTemplatesTile}>\n            {heading}\n            {description}\n            {links}\n        </Module>\n    );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n    isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n    wrapper: INodeProps;\n    key: string;\n    label: React.ReactNode;\n    errorMessage: React.ReactNode;\n    input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n    localAccount: INodeProps;\n    items: IAccountProfileEditItem[];\n    errorMessage: React.ReactNode[];\n    buttonsWrapper: INodeProps;\n    buttons: React.ReactNode[];\n    verificationSuccessModal: INodeProps;\n    verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n    modal: INodeProps;\n    modalBody: INodeProps;\n    icon: React.ReactNode;\n    message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n    className: string;\n    viewState: IAccountProfileEditViewState;\n    loading: IAccountProfileEditLoading;\n    accountProfileEdit: IModuleProps;\n    defaultAADConainer: INodeProps;\n    aadConainer: INodeProps;\n    heading: React.ReactNode;\n    accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component<IAccountProfileEditProps<IAccountProfileEditConfig>>}\n */\n@observer\nclass AccountProfileEdit extends React.Component<IAccountProfileEditProps<IAccountProfileEditConfig>> {\n    private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n    private readonly telemetryContent: ITelemetryContent;\n\n    @observable private givenName: string;\n\n    @observable private surname: string;\n\n    @observable private email: string;\n\n    @observable private emailRegex: string;\n\n    @observable private isInitialized: boolean;\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private initializationTimer: any;\n\n    constructor(props: IAccountProfileEditProps<IAccountProfileEditConfig>) {\n        super(props);\n        this.givenName = '';\n        this.surname = '';\n        this.email = '';\n        this.emailRegex = EmailRegex.defaultRegex.source;\n        this.isInitialized = false;\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n    }\n\n    public componentDidMount(): void {\n        this._onInit();\n    }\n\n    // After successful AAD initialization, call initialize method provided by AAD to attach events.\n    public componentDidUpdate(): void {\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n            // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n            window['$element']['initialize']();\n        }\n    }\n\n    public shouldComponentUpdate(\n        nextProps: IAccountProfileEditProps<IAccountProfileEditConfig>,\n        nextState: IAccountProfileEditViewState\n    ): boolean {\n        if (this.state === nextState && this.props.data === nextProps.data) {\n            return false;\n        }\n        return true;\n    }\n\n    public render(): JSX.Element {\n        const { config, resources } = this.props;\n\n        const viewProps = {\n            ...this.props,\n            viewState: {\n                isShowLoading: !this.isInitialized\n            },\n            accountProfileEdit: {\n                moduleProps: this.props,\n                className: classnames(this.moduleClassName, config.className)\n            },\n            loading: {\n                modal: {\n                    tag: Modal,\n                    isOpen: true\n                },\n                modalBody: {\n                    tag: ModalBody\n                },\n                icon: <AccountProfileEditLoadingIconComponent className={this.moduleClassName} />,\n                message: <AccountProfileEditLoadingMessageComponent className={this.moduleClassName} message={resources.loadingMessage} />\n            },\n            defaultAADConainer: {\n                id: 'api',\n                style: { display: 'none' }\n            },\n            aadConainer: {\n                id: this.isInitialized ? 'api' : null,\n                className: `${this.moduleClassName}__container`\n            },\n            heading: config.heading && config.heading.text && (\n                <Msdyn365.Text\n                    className={`${this.moduleClassName}__heading`}\n                    {...config.heading}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            accountProfileEditLocalAccount: this._renderLocalAccount()\n        };\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n    public onTextBoxChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n        const id = event.target.id;\n        const value = event.target.value;\n\n        switch (id.toLowerCase()) {\n            case 'givenname': {\n                this.givenName = value;\n                break;\n            }\n            case 'surname': {\n                this.surname = value;\n                break;\n            }\n            case 'email': {\n                this.emailRegex = value;\n                break;\n            }\n            default:\n        }\n    };\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public _onInit = () => {\n        this._prePopulateData();\n        this._updateErrorMessage();\n\n        // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n        this.initializationTimer = setInterval(() => {\n            this._isInitializationSuccessful();\n        }, 100);\n        setTimeout(() => {\n            clearInterval(this.initializationTimer);\n        }, 10_000);\n    };\n\n    // After successful AAD initialization, remove waiting and preload any data, if needed.\n    private readonly _isInitializationSuccessful = () => {\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n            clearInterval(this.initializationTimer);\n            this.isInitialized = true;\n        }\n    };\n\n    private readonly _prePopulateData = () => {\n        const { resources } = this.props;\n        const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n            // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n            window['SA_FIELDS']['AttributeFields'].map(\n                (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n                    const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n                    switch (obj.ID.toLowerCase()) {\n                        case 'givenname': {\n                            this.givenName = value;\n                            break;\n                        }\n                        case 'surname': {\n                            this.surname = value;\n                            break;\n                        }\n                        case 'email': {\n                            this.email = value;\n                            this.emailRegex = obj.PAT;\n                            obj.PAT_DESC = invalidEmailAddressError;\n                            break;\n                        }\n                        default:\n                    }\n                }\n            );\n        }\n    };\n\n    private _htmlDecode(str: string): string {\n        const e = document.createElement('div');\n\n        e.innerHTML = str;\n        return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n    }\n\n    private readonly _updateErrorMessage = () => {\n        const { resources } = this.props;\n\n        // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n        if (window && window['CONTENT']) {\n            const message = {\n                required_field: resources.requiredFieldMissingError,\n                verifying_blurb: resources.loadingMessage\n            };\n\n            // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n            Object.assign(window['CONTENT'], message);\n        }\n    };\n\n    private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n        const { config, resources } = this.props;\n        const localAccount = {\n            localAccount: {\n                id: 'attributeList',\n                className: `${this.moduleClassName}__account-items attr`\n            },\n            items: [\n                this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n                this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n            ],\n            errorMessage: [\n                <AccountProfileEditErrorComponent\n                    key='requiredFieldMissing'\n                    id='requiredFieldMissing'\n                    className={this.moduleClassName}\n                    message={resources.requiredFieldMissingSummaryError}\n                />,\n                <AccountProfileEditErrorComponent\n                    key='fieldIncorrect'\n                    id='fieldIncorrect'\n                    className={this.moduleClassName}\n                    message={resources.fieldIncorrectError}\n                />,\n                <AccountProfileEditErrorComponent\n                    key='claimVerificationServerError'\n                    id='claimVerificationServerError'\n                    className={this.moduleClassName}\n                />\n            ],\n            buttonsWrapper: {\n                className: `${this.moduleClassName}__buttons`\n            },\n            buttons: [\n                <AccountProfileEditButtonComponent\n                    key='continue'\n                    id='continue'\n                    className={`${this.moduleClassName}__save-button`}\n                    ariaLabel={resources.saveButtonAriaLabel}\n                    text={resources.saveButtonText}\n                    telemetryContent={this.telemetryContent}\n                />,\n                <AccountProfileEditButtonComponent\n                    key='cancel'\n                    id='cancel'\n                    className={`${this.moduleClassName}__cancel-button`}\n                    ariaLabel={resources.cancelButtonText}\n                    text={resources.cancelButtonText}\n                    telemetryContent={this.telemetryContent}\n                />\n            ],\n            verificationSuccessModal: {\n                className: `${this.moduleClassName}__verifying-modal verifying-modal`\n            },\n            verificationSuccessModalMessage: {\n                id: 'verifying_blurb',\n                className: `${this.moduleClassName}__verifying-modal-message`\n            }\n        };\n\n        if (config.showEmail && this.email !== '') {\n            localAccount.items.push(\n                this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n            );\n        }\n\n        return localAccount;\n    }\n\n    private _renderInput(\n        id: string,\n        type: string,\n        value: string,\n        labelText: string,\n        maxLength?: string,\n        pattern?: string\n    ): IAccountProfileEditItem {\n        const className = `${this.moduleClassName}__account-item`;\n        return {\n            wrapper: {\n                className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n            },\n            key: id,\n            label: (\n                <AccountProfileEditLabelComponent\n                    {...{\n                        id,\n                        forId: id,\n                        className,\n                        text: labelText\n                    }}\n                />\n            ),\n            errorMessage: (\n                <AccountProfileEditErrorComponent\n                    {...{\n                        className: this.moduleClassName,\n                        type: 'item'\n                    }}\n                />\n            ),\n            input: (\n                <AccountProfileEditInputComponent\n                    {...{\n                        id,\n                        type,\n                        value,\n                        pattern,\n                        className,\n                        maxLength,\n                        onChange: this.onTextBoxChange\n                    }}\n                />\n            )\n        };\n    }\n}\n\nexport default AccountProfileEdit;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n    IAccountProfileEditItem,\n    IAccountProfileEditLoading,\n    IAccountProfileEditLocalAccount,\n    IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC<IAccountProfileEditItem> = ({ wrapper, label, errorMessage, input }) => {\n    return (\n        <Node {...wrapper}>\n            {label}\n            {errorMessage}\n            {input}\n        </Node>\n    );\n};\n\nconst LocalAccount: React.FC<IAccountProfileEditLocalAccount> = ({\n    localAccount,\n    items,\n    errorMessage,\n    buttonsWrapper,\n    buttons,\n    verificationSuccessModal,\n    verificationSuccessModalMessage\n}) => {\n    return (\n        <Node {...localAccount}>\n            {items &&\n                items.map((item: IAccountProfileEditItem) => {\n                    // eslint-disable-next-line react/jsx-key\n                    return <AccountProfileEditItem {...item} />;\n                })}\n            {errorMessage &&\n                errorMessage.map((error: React.ReactNode, index: number) => {\n                    return <React.Fragment key={index}>{error}</React.Fragment>;\n                })}\n            <Node {...buttonsWrapper}>\n                {buttons &&\n                    buttons.map((button: React.ReactNode, index: number) => {\n                        return <React.Fragment key={index}>{button}</React.Fragment>;\n                    })}\n            </Node>\n\n            <Node {...verificationSuccessModal}>\n                <Node {...verificationSuccessModalMessage} />\n            </Node>\n        </Node>\n    );\n};\n\nconst AccountProfileEditLoading: React.FC<IAccountProfileEditLoading> = ({ modal, modalBody, icon, message }) => {\n    return (\n        <Node {...modal}>\n            <Node {...modalBody}>\n                {icon}\n                {message}\n            </Node>\n        </Node>\n    );\n};\n\nconst AccountProfileEditView: React.FC<IAccountProfileEditViewProps> = props => {\n    const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n    return (\n        <Module {...accountProfileEdit}>\n            {viewState.isShowLoading && <Node {...defaultAADConainer} />}\n            {viewState.isShowLoading && <AccountProfileEditLoading {...loading} />}\n            <Node {...aadConainer}>\n                {heading}\n                {LocalAccount(accountProfileEditLocalAccount)}\n            </Node>\n        </Module>\n    );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n    id?: string;\n    className: string;\n    text: string;\n    ariaLabel: string;\n    disabled?: boolean;\n    telemetryContent?: ITelemetryContent;\n    onClick?(event: React.MouseEvent<HTMLElement>): void;\n}\n\nconst AccountProfileEditButton: React.FC<IAccountProfileEditButton> = ({\n    id,\n    className,\n    text,\n    ariaLabel,\n    disabled,\n    telemetryContent,\n    onClick\n}) => {\n    const payLoad = getPayloadObject('click', telemetryContent!, text);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n    return (\n        <Button id={id} className={className} aria-label={ariaLabel} disabled={disabled} onClick={onClick} {...attributes}>\n            {text}\n        </Button>\n    );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n    id?: string;\n    className: string;\n    type?: string;\n    message?: string;\n}\n\nconst AccountProfileEditError: React.FC<IAccountProfileEditErrorProps> = ({ id, className, type = 'page', message }) => {\n    const errorClassName = `${className}__${type}-error`;\n\n    return (\n        <div id={id} className={classnames(errorClassName, 'error', `${type}Level`)} role='alert' aria-live='assertive' aria-hidden='true'>\n            <p className={`${errorClassName}-text`}>{message}</p>\n        </div>\n    );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n    id?: string;\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    type: any;\n    value?: string;\n    pattern?: string;\n    className: string;\n    maxLength?: string;\n    onChange?(event: React.ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface IAccountProfileEditInput {\n    key: string;\n    AddressItem: INodeProps;\n    label: React.ReactNode;\n    alert: React.ReactNode;\n    input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n    if (maxLength) {\n        const parsedMaxLength = Number.parseInt(maxLength, 10);\n        if (!isNaN(parsedMaxLength)) {\n            return parsedMaxLength;\n        }\n    }\n\n    return undefined;\n};\n\nconst AccountProfileEditInput: React.FC<IAccountProfileEditInputProps> = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n    <input\n        id={id}\n        type={type}\n        value={value}\n        className={`${className}-input ${className}-${id}`}\n        pattern={pattern !== '' ? pattern : undefined}\n        aria-required='true'\n        maxLength={GetMaxLength(maxLength)}\n        onChange={onChange}\n    />\n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n    id: string;\n    forId: string;\n    className: string;\n    text: string;\n}\n\nconst AccountProfileEditLabel: React.FC<IAccountProfileEditLabel> = ({ id, forId, className, text }) => (\n    <label id={`${id}_label`} className={`${className}-label`} htmlFor={forId}>\n        {text}\n    </label>\n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n    className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC<IAccountProfileEditLoadingIcon> = ({ className }) => (\n    <div className={`${className}__loading-icon`} />\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n    className: string;\n    message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC<IAccountProfileEditLoadingMessage> = ({ className, message }) => (\n    <div className={`${className}__loading-message`}>{message}</div>\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n    Button,\n    format,\n    getPayloadObject,\n    getTelemetryAttributes,\n    getTelemetryObject,\n    IPayLoad,\n    ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from '../account-profile.data';\nimport { IAccountProfileProps } from '../account-profile.props.autogenerated';\nimport TextComponent from './account-profile-text';\n\ninterface IAttributePropertiesType {\n    Name?: string;\n    IsMandatory?: boolean;\n}\n\nexport interface IAccountProfileAttributesProps {\n    accountProfileProps: IAccountProfileProps<IAccountProfileData>;\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<string>;\n    attributeError: IDictionary<string>;\n}\n\n/**\n *\n * AccountProfileAttributes class.\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\n */\n@observer\nclass AccountProfileAttributes extends React.Component<IAccountProfileAttributesProps, IAccountProfileAttributesState> {\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<string>;\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<HTMLButtonElement>;\n\n    private readonly attributesContainerRef: React.RefObject<HTMLDivElement>;\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 = 20;\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            <div\n                ref={this.attributesContainerRef}\n                className={classnames('ms-account-profile__attributes', {\n                    'ms-account-profile__attributes-updating': this.isUpdatingAttributes\n                })}\n            >\n                {config.additionalInformationSectionHeading && (\n                    <Text\n                        className='ms-account-profile__attributes-tile__heading'\n                        tag={config.additionalInformationSectionHeading.tag || 'h2'}\n                        text={additionalInformationSectionHeading}\n                    />\n                )}\n                {config.showPhone && this._renderPhone()}\n                {config.showVatNumber && this._renderVatNumber()}\n                {elements}\n                {this.gotException && (\n                    <div className='ms-account-profile__attributes-error'>\n                        <label className='ms-account-profile__attributes-error-label'>\n                            {this.props.accountProfileProps.resources.attributesSaveExceptionMessage}\n                        </label>\n                    </div>\n                )}\n                {!edit && (\n                    <Button\n                        className={classnames('ms-account-profile__attributes-edit-button', {\n                            // Disable the toggle completely if customer is async.\n                            'ms-account-profile__attributes-edit-button-disabled': disableBtn\n                        })}\n                        aria-label={`${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`}\n                        onClick={this._enableAttributes}\n                        innerRef={this.editRef}\n                        title={resources.attributesEditButtonText}\n                        disabled={disableBtn}\n                        {...editAttributes}\n                    >\n                        {resources.attributesEditButtonText}\n                    </Button>\n                )}\n                {edit && (\n                    <Button\n                        className={classnames('ms-account-profile__attributes-save-button')}\n                        aria-label={resources.attributesSaveButtonText}\n                        onClick={this._saveAttributes}\n                        title={resources.attributesSaveButtonText}\n                        {...saveAttributes}\n                    >\n                        {resources.attributesSaveButtonText}\n                    </Button>\n                )}\n                {edit && (\n                    <Button\n                        className={classnames('ms-account-profile__attributes-cancel-button')}\n                        aria-label={resources.attributesCancelButtonText}\n                        onClick={this._disableAttributes}\n                        title={resources.attributesCancelButtonText}\n                        {...cancelAttributes}\n                    >\n                        {resources.attributesCancelButtonText}\n                    </Button>\n                )}\n            </div>\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            <div className={classnames('ms-account-profile__attributes__section', `ms-account-profile__attributes-${className}`)}>\n                {phoneSectionHeading && <Text className='ms-account-profile__attributes__section-heading' tag='h3' text={heading} />}\n                <input\n                    type='text'\n                    aria-label={heading}\n                    className={classnames(\n                        this.attributeClassName,\n                        'ms-account-profile__attributes_input',\n                        `ms-account-profile__attributes_input-edit-${editAttributes}`,\n                        `ms-account-profile__${className}-input`\n                    )}\n                    onChange={this._onPhoneChange}\n                    value={this.state.phone || ''}\n                    disabled={!editAttributes}\n                />\n                {this._renderError('Phone')}\n            </div>\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            <div className={classnames('ms-account-profile__attributes__section', `ms-account-profile__attributes-${className}`)}>\n                {vatNumberSectionHeading && <Text className='ms-account-profile__attributes__section-heading' tag='h3' text={heading} />}\n                <input\n                    type='text'\n                    aria-label={heading}\n                    className={classnames(\n                        this.attributeClassName,\n                        'ms-account-profile__attributes_input',\n                        `ms-account-profile__attributes_input-edit-${editAttributes}`,\n                        `ms-account-profile__${className}-input`\n                    )}\n                    onChange={this._onVatNumberChange}\n                    value={this.state.vatNumber || ''}\n                    disabled={!editAttributes}\n                />\n                {this._renderError('VATNumber')}\n            </div>\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            <div className={classnames('ms-account-profile__attributes__section', `ms-account-profile__attributes-${className}`)}>\n                <Text className='ms-account-profile__attributes__section-heading' tag='h3' text={displayName} />\n                <input\n                    type='text'\n                    aria-label={customAttribute.Name}\n                    className={classnames(\n                        this.attributeClassName,\n                        'ms-account-profile__attributes_input',\n                        `ms-account-profile__attributes_input-edit-${edit}`,\n                        `ms-account-profile__${className}-input`\n                    )}\n                    onChange={this._onAttributeChange(customAttribute)}\n                    value={this.state.attributes[customAttribute.Name || ''] || ''}\n                    disabled={!editAttributes}\n                    aria-required={attributeProps.IsMandatory || false}\n                />\n                {this._renderError(customAttribute.Name || '')}\n            </div>\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                <div className={classnames('ms-account-profile__attributes__section', `ms-account-profile__attributes-${className}`)}>\n                    <Text className='ms-account-profile__attributes__section-heading' tag='h3' text={displayName} />\n                    <select\n                        id={`ms-account-profile__attributes-${className}`}\n                        aria-label={customAttribute.Name}\n                        className={classnames(\n                            this.attributeClassName,\n                            'ms-account-profile__attributes_select',\n                            `ms-account-profile__attributes_select-edit-${edit}`,\n                            `ms-account-profile__attributes-${className}_select`\n                        )}\n                        onChange={this._onAttributeSelect(customAttribute)}\n                        disabled={!editAttributes}\n                        aria-required={attributeProps.IsMandatory || false}\n                    >\n                        {hasNoValue && (\n                            <option\n                                className='ms-account-profile__attributes_select__option'\n                                key='blank'\n                                selected={hasNoValue}\n                                aria-selected={hasNoValue}\n                            />\n                        )}\n                        {customAttribute.EnumerationDetails.map(option => {\n                            const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\n                            return (\n                                <option\n                                    className='ms-account-profile__attributes_select__option'\n                                    key={option.EnumerationValue}\n                                    selected={selected}\n                                    aria-selected={selected}\n                                >\n                                    {option.EnumerationValue}\n                                </option>\n                            );\n                        })}\n                    </select>\n                </div>\n            );\n        }\n        return (\n            <div className={classnames('ms-account-profile__attributes__section', `ms-account-profile__attributes-${className}`)}>\n                <Text className='ms-account-profile__attributes__section-heading' tag='h3' text={displayName} />\n                <input\n                    type='text'\n                    aria-label={customAttribute.Name}\n                    className={classnames(\n                        this.attributeClassName,\n                        'ms-account-profile__attributes_input',\n                        `ms-account-profile__attributes_input-edit-${edit}`,\n                        `ms-account-profile__${className}-input`\n                    )}\n                    onChange={this._onAttributeChange(customAttribute)}\n                    value={this.state.attributes[customAttribute.Name || ''] || ''}\n                    disabled={!editAttributes}\n                    aria-required={attributeProps.IsMandatory || false}\n                />\n                {this._renderError(customAttribute.Name || '')}\n            </div>\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            <div\n                className={classnames(\n                    'ms-account-profile__attributes__section',\n                    'ms-account-profile__attributes__section__toggle',\n                    `ms-account-profile__attributes-${className}`\n                )}\n            >\n                <Text className='ms-account-profile__attributes__section-heading' tag='h3' text={displayName} />\n                {render && (\n                    <div\n                        className={`ms-account-profile__attributes__section__toggle-wrapper ms-account-profile__attributes__section__toggle-${toggleState}`}\n                    >\n                        <TextComponent\n                            className='ms-account-profile__attributes__section__toggle-disable-text'\n                            text={this.props.accountProfileProps.resources.toggleDisableText}\n                        />\n                        <Button\n                            className={classnames(\n                                this.attributeClassName,\n                                'ms-account-profile__attributes__section__toggle-button',\n                                `ms-account-profile__attributes__section__toggle-${toggleState}-button`\n                            )}\n                            aria-label={`${arialabel}`}\n                            aria-pressed={ariaPressed}\n                            value={value}\n                            onClick={this._onAttributeCheck(customAttribute, toggleValue)}\n                            disabled={!editAttributes}\n                        />\n                        <TextComponent\n                            className='ms-account-profile__attributes__section__toggle-enable-text'\n                            text={this.props.accountProfileProps.resources.toggleEnableText}\n                        />\n                    </div>\n                )}\n            </div>\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                <div className='ms-account-profile__attributes-error' role='alert' aria-live='assertive'>\n                    <label className='ms-account-profile__attributes-error-label'>{error}</label>\n                </div>\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<HTMLInputElement>): void => {\n        const value = event.target.value;\n        this.setState({ phone: value });\n    };\n\n    private readonly _onVatNumberChange = (event: React.ChangeEvent<HTMLInputElement>): 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<Element> = 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<HTMLInputElement>) => {\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<HTMLElement>\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<HTMLSelectElement>) => {\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<string> = {};\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<string> = {};\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<string> = {};\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<IAccountProfileLinks> = ({ links, telemetryContent, requestContext, onTextChange }) => {\n    if (links.length === 0) {\n        return null;\n    }\n    const editableLinks = _mapEditableLinks(links, telemetryContent);\n    return (\n        <div className='ms-account-profile__section-links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\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<IAccountProfileData> {\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<IAccountProfileProps<IAccountProfileData>>}\n */\n@observer\nclass AccountProfile extends React.Component<IAccountProfileProps<IAccountProfileData>> {\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<IAccountProfileData>) {\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<IAccountProfileData>): 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                <Msdyn365.Text className='ms-account-profile__info' text={resources.accountProcessingPendingInfoMessage} />\n            ),\n            accountProfileWrapper: {\n                className: classnames('ms-account-profile-wrapper')\n            },\n            heading: heading && (\n                <Msdyn365.Text\n                    className='ms-account-loyalty-tile__heading'\n                    tag={heading.tag || 'h2'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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                <Msdyn365.Text\n                    className='ms-account-profile__section-heading'\n                    tag={heading.tag || 'h2'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleEmailHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: links && links.length > 0 && (\n                <LinksComponent\n                    {...{\n                        links,\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: description && (\n                <DescriptionComponent className='ms-account-profile__section-description' description={description} />\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                    <Msdyn365.Text\n                        className='ms-account-profile__section-heading'\n                        tag={heading.tag || 'h2'}\n                        text={heading.text}\n                        editProps={{ onEdit: this.handleNameHeadingChange, requestContext: this.props.context.request }}\n                    />\n                ),\n                description: description && (\n                    <DescriptionComponent className='ms-account-profile__section-description' description={description} />\n                )\n            };\n        }\n        return {\n            AccountProfileItem: {\n                className\n            },\n            heading: heading && (\n                <Msdyn365.Text\n                    className='ms-account-profile__section-heading'\n                    tag={heading.tag || 'h2'}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleNameHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: (\n                <LinksComponent\n                    {...{\n                        links,\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: description && (\n                <DescriptionComponent className='ms-account-profile__section-description' description={description} />\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                <Msdyn365.Text\n                    className='ms-account-profile__section-heading'\n                    tag={preferencesSectionHeading.tag || 'h2'}\n                    text={preferencesSectionHeading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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                <Msdyn365.Text\n                    className='ms-account-profile__preference-heading'\n                    tag={sectionHeading.tag || 'h2'}\n                    text={sectionHeading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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: <TextComponent className='ms-account-profile__toggle-enable-text' text={toggleEnableText} />,\n            buttonNoText: <TextComponent className='ms-account-profile__toggle-disable-text' text={toggleDisableText} />,\n            button: (\n                <Button\n                    className={classnames('ms-account-profile__toggle-button', `ms-account-profile__toggle-${toggleState}-button`)}\n                    aria-label={enableAriaLabel}\n                    value={isOptOut.toString()}\n                    aria-pressed={!isOptOut}\n                    onClick={onClickHandler}\n                    disabled={disableBtn}\n                    {...attributes}\n                />\n            ),\n            description: <DescriptionComponent className='ms-account-profile__preference-description' description={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 <AccountProfileAttributes accountProfileProps={this.props} />;\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<IAccountPreferences> = ({ accountPreferences, heading, personalization, extraPreferences }) => {\n    return (\n        <Node {...accountPreferences}>\n            {heading}\n            <AccountPreferenceSection {...personalization} />\n            {extraPreferences &&\n                extraPreferences.map((preferenceSecton, index) => {\n                    return <AccountPreferenceSection {...preferenceSecton} key={index} />;\n                })}\n        </Node>\n    );\n};\n\nconst AccountPreferenceSection: React.FC<IAccountPreference> = ({\n    accountPreference,\n    heading,\n    description,\n    buttonWrapper,\n    buttonYesText,\n    button,\n    buttonNoText\n}) => {\n    return (\n        <Node {...accountPreference}>\n            {heading}\n            {description}\n            <Node {...buttonWrapper}>\n                {buttonNoText}\n                {button}\n                {buttonYesText}\n            </Node>\n        </Node>\n    );\n};\n\nconst AccountProfileSection: React.FC<IAccountProfileItem> = ({ AccountProfileItem, heading, links, description }) => {\n    return (\n        <Node {...AccountProfileItem}>\n            {heading}\n            {description}\n            {links}\n        </Node>\n    );\n};\n\nconst AccountProfileView: React.FC<IAccountProfileViewProps> = 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        <Module {...AccountProfile}>\n            {infoMessageBar}\n            {accountProfileWrapper && (\n                <Node {...accountProfileWrapper}>\n                    {heading}\n                    <AccountProfileSection {...emailSection} />\n                    <AccountProfileSection {...nameSection} />\n                    <AccountPreferencesSection {...preferenceSection} />\n                </Node>\n            )}\n            {customerAttributesWrapper && <Node {...customerAttributesWrapper}>{customerAttributesSection}</Node>}\n        </Module>\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<IAccountProfileDescription> = ({ className, description }) => (\n    <p className={className}>{description}</p>\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<IAccountProfileText> = ({ className, text }) => <span className={className}>{text}</span>;\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 React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n    return <p className='ms-loyalty-signup__text'>{props.text}</p>;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n    Button,\n    getPayloadObject,\n    getTelemetryAttributes,\n    getTelemetryObject,\n    IModuleProps,\n    ITelemetryContent,\n    TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n    clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps<ILoyaltySignUpData> {\n    LoyaltySignUp: IModuleProps;\n    heading: React.ReactNode;\n    memberHeading: React.ReactNode;\n    signInLink: React.ReactElement;\n    signUpText: React.ReactElement;\n    signUpButton: React.ReactElement;\n    detailsLink: React.ReactElement;\n    termsLink: React.ReactElement;\n    loading: boolean;\n    infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component<ILoyaltySignUpProps<ILoyaltySignUpData>>}\n */\n@observer\nclass LoyaltySignUp extends React.Component<ILoyaltySignUpProps<ILoyaltySignUpData>, IAccountLoyaltyJoinState> {\n    private readonly telemetryContent?: ITelemetryContent;\n    private readonly loyaltySignInAttributes: Msdyn365.IDictionary<string> | undefined;\n    private readonly loyaltySignUpAttributes: Msdyn365.IDictionary<string> | undefined;\n    private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary<string> | undefined;\n    private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary<string> | undefined;\n\n    constructor(props: ILoyaltySignUpProps<ILoyaltySignUpData>) {\n        super(props);\n        this.state = { clicked: false };\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n        const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n        this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n        payLoad.contentAction.etext = TelemetryConstant.SignUp;\n        this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n        payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n        this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n        payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n        this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n    }\n\n    public shouldComponentUpdate(nextProps: ILoyaltySignUpProps<ILoyaltySignUpData>, nextState: IAccountLoyaltyJoinState): boolean {\n        if (this.state === nextState && this.props.data === nextProps.data) {\n            return false;\n        }\n        return true;\n    }\n\n    public render(): JSX.Element | null {\n        const {\n            config: { className, heading, memberHeading },\n            resources,\n            context: {\n                actionContext,\n                request: {\n                    user: { signInUrl, isAuthenticated }\n                }\n            },\n            data\n        } = this.props;\n\n        const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n        let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n        if (MsDyn365.isBrowser) {\n            loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n        }\n        const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n        const completeClass = classname('ms-loyalty-signup', className);\n        const loyaltyCard = data.loyaltyCard;\n        const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n        const customerInformation = data.customerInformation?.result;\n\n        const invalidAsyncCustomerState: boolean =\n            (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n            (customerInformation?.IsAsyncCustomer || false);\n        const viewProps = {\n            ...this.props,\n            className: completeClass,\n            LoyaltySignUp: {\n                moduleProps: this.props,\n                className: completeClass\n            },\n            infoMessageBar: invalidAsyncCustomerState && (\n                <Msdyn365.Text className='ms-loyalty-signup__info' text={resources.accountProcessingPendingInfoMessage} />\n            ),\n            loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n            heading: !hasLoyaltyAccount && heading && heading.text && (\n                <Msdyn365.Text\n                    className='ms-loyalty-signup__heading'\n                    tag={heading.tag}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n                <Msdyn365.Text\n                    className='ms-loyalty-signup__heading'\n                    tag={memberHeading.tag}\n                    text={memberHeading.text}\n                    editProps={{ onEdit: this.handleMemberHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            signInLink: !isAuthenticated && (\n                <Button className='ms-loyalty-signup__signin' href={signInurl} {...this.loyaltySignInAttributes}>\n                    {this.props.resources.joinLoyaltyButtonText}\n                </Button>\n            ),\n            signUpText: !hasLoyaltyAccount && <SignUpText text={resources.loyaltyProgramText} />,\n            signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n                <Button\n                    className='ms-loyalty-signup__btn'\n                    disabled={invalidAsyncCustomerState}\n                    onClick={this._issueLoyalty}\n                    {...this.loyaltySignUpAttributes}\n                >\n                    {this.props.resources.joinLoyaltyButtonText}\n                </Button>\n            ),\n            detailsLink: hasLoyaltyAccount && (\n                <Button\n                    className='ms-loyalty-signup__details'\n                    href={Msdyn365.getUrlSync('loyalty', this.props.context.actionContext)}\n                    {...this.loyaltyDetailsLinkAttributes}\n                >\n                    {this.props.resources.viewLoyaltyPageText}\n                </Button>\n            ),\n            termsLink: !hasLoyaltyAccount && (\n                <Button className='ms-loyalty-signup__terms' href={termsUrl} {...this.loyaltyTermsLinkAttributes}>\n                    {this.props.resources.loyaltyTermsLinkText}\n                </Button>\n            )\n        };\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n    public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n        (this.props.config.memberHeading!.text = event.target.value);\n\n    private readonly _issueLoyalty = () => {\n        if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n            this.setState({ clicked: true });\n            const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n            issueLoyalty(input, this.props.context.actionContext)\n                .then(() => {\n                    if (MsDyn365.isBrowser) {\n                        window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n                    }\n                })\n                .catch((error: Error) => {\n                    this.setState({ clicked: false });\n                    this.props.telemetry.error(error.message);\n                    this.props.telemetry.debug('Unable to issue loyalty card');\n                });\n        }\n    };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC<ILoyaltySignUpViewProps> = props => {\n    const {\n        LoyaltySignUp,\n        heading,\n        memberHeading,\n        signInLink,\n        signUpText,\n        signUpButton,\n        detailsLink,\n        termsLink,\n        loading,\n        infoMessageBar\n    } = props;\n\n    if (loading) {\n        props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n        return null;\n    }\n\n    return (\n        <Module {...LoyaltySignUp}>\n            {infoMessageBar}\n            {memberHeading}\n            {heading}\n            {detailsLink}\n            {signUpText}\n            {termsLink}\n            {signUpButton}\n            {signInLink}\n        </Module>\n    );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n    Button,\n    getPayloadObject,\n    getTelemetryAttributes,\n    INodeProps,\n    ITelemetryContent,\n    Modal,\n    ModalBody,\n    ModalFooter,\n    ModalHeader,\n    TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n    resources: ILoyaltyTermsModalResources;\n    returnRef: React.RefObject<HTMLButtonElement> | undefined;\n    checked: boolean;\n    isOpen: boolean;\n    terms: React.ReactNode;\n    telemetryContent?: ITelemetryContent;\n    onToggle(): void;\n    onSubmit(): void;\n    onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n    loyaltyTermsHeading: string;\n    loyaltyAgreeToTerms: string;\n    joinLoyaltyTermsText: string;\n    cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n    modal: INodeProps;\n    modalHeader: INodeProps;\n    modalFooter: INodeProps;\n    modalBody: INodeProps;\n    heading: React.ReactElement;\n    cancelButton: React.ReactElement;\n    submitButton: React.ReactElement;\n    terms: React.ReactNode;\n    checkbox: React.ReactElement;\n    agreeText: React.ReactElement;\n    agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n    const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n    const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n    const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n    payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n    const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n    return {\n        modal: {\n            tag: Modal,\n            className: 'ms-loyalty-terms__modal',\n            toggle: props.onToggle,\n            applicationNode: 'renderPage',\n            isOpen: props.isOpen,\n            returnFocusRef: props.returnRef\n        },\n        modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n        modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n        modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n        cancelButton: (\n            <Button className='ms-loyalty-terms__cancel' onClick={props.onToggle} {...loyaltyTermCancelAttributes}>\n                {props.resources.cancelLoyaltyTermsText}\n            </Button>\n        ),\n        submitButton: (\n            <Button\n                className='ms-loyalty-terms__submit'\n                onClick={props.onSubmit}\n                disabled={!props.checked}\n                {...loyaltyTermSubmitAttributes}\n            >\n                {props.resources.joinLoyaltyTermsText}\n            </Button>\n        ),\n        heading: <p className='ms-loyalty-terms__heading'>{props.resources.loyaltyTermsHeading}</p>,\n        terms: props.terms,\n        agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n        checkbox: (\n            <input\n                className='ms-loyalty-terms__checkbox'\n                {...loyaltyTermCheckboxAttributes}\n                type='checkbox'\n                checked={props.checked}\n                aria-checked={props.checked}\n                onChange={props.onCheck}\n            />\n        ),\n        agreeText: <p className='ms-loyalty-terms__agree'>{props.resources.loyaltyAgreeToTerms}</p>\n    };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n    checked: boolean;\n    clicked: boolean;\n    isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps<ILoyaltyTermsData> {\n    LoyaltyTerms: IModuleProps;\n    modalToggle: React.ReactElement;\n    modal: ILoyaltyTermsModalViewProps;\n    loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component<ILoyaltyTermsProps<ILoyaltyTermsData>>}\n */\nclass LoyaltyTerms extends React.Component<ILoyaltyTermsProps<ILoyaltyTermsData>, ILoyaltyTermsState> {\n    private readonly toggleRef: React.RefObject<HTMLButtonElement>;\n\n    private readonly telemetryContent: ITelemetryContent;\n\n    public constructor(props: ILoyaltyTermsProps<ILoyaltyTermsData>) {\n        super(props);\n        this._toggle = this._toggle.bind(this);\n        this._submit = this._submit.bind(this);\n        this._checkboxChecked = this._checkboxChecked.bind(this);\n        this.toggleRef = React.createRef();\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n        let search = this.props.context.request.url.requestUrl.search;\n        let isJoining = false;\n        if (search) {\n            search = search.substring(1);\n            const qsps = search.split('&');\n            for (const qsp of qsps) {\n                const splitQsp = qsp.split('=');\n                isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n                if (isJoining) {\n                    break;\n                }\n            }\n        }\n\n        this.state = {\n            isModalOpen: isJoining,\n            checked: false,\n            clicked: false\n        };\n    }\n\n    public shouldComponentUpdate(nextProps: ILoyaltyTermsProps<ILoyaltyTermsData>, nextState: ILoyaltyTermsState): boolean {\n        if (this.state === nextState && this.props.data === nextProps.data) {\n            return false;\n        }\n        return true;\n    }\n\n    public render(): JSX.Element | null {\n        const {\n            config: { className, hideToggle },\n            resources,\n            slots: { serviceTerms },\n            data: { loyaltyCard },\n            context: {\n                request: {\n                    user: { isAuthenticated }\n                }\n            }\n        } = this.props;\n        const completeClass = classname('ms-loyalty-terms', className);\n\n        const viewProps = {\n            ...this.props,\n            className: completeClass,\n            LoyaltyTerms: {\n                moduleProps: this.props,\n                className: completeClass\n            },\n            loading: loyaltyCard.status === 'LOADING',\n            modalToggle: hideToggle !== true && (\n                <Button className='ms-loyalty-terms__toggle' onClick={this._toggle} innerRef={this.toggleRef}>\n                    {resources.joinLoyaltytermsToggleText}\n                </Button>\n            ),\n            modal:\n                isAuthenticated &&\n                loyaltyCard.result &&\n                loyaltyCard.result.CardNumber === undefined &&\n                LoyaltyTermsModal({\n                    resources: { ...resources },\n                    returnRef: this.toggleRef,\n                    checked: this.state.checked,\n                    isOpen: this.state.isModalOpen,\n                    terms: serviceTerms,\n                    telemetryContent: this.telemetryContent,\n                    onToggle: this._toggle,\n                    onSubmit: this._submit,\n                    onCheck: this._checkboxChecked\n                })\n        };\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    private _toggle(): void {\n        this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n    }\n\n    private _submit(): void {\n        if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n            this.setState({ clicked: true });\n            const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n            issueLoyalty(input, this.props.context.actionContext)\n                .then(card => {\n                    if (this.props.config.redirectToLoyalty) {\n                        window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n                    } else {\n                        getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n                            .then(fullCard => {\n                                this.props.context.actionContext.update(\n                                    new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n                                    fullCard\n                                );\n                            })\n                            .catch((error: Error) => {\n                                this.props.context.actionContext.update(\n                                    new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n                                    card\n                                );\n                                this.props.telemetry.error(error.message);\n                                this.props.telemetry.debug('Unable to fetch loyalty card');\n                            });\n                    }\n                })\n                .catch((error: Error) => {\n                    this.setState({ clicked: false });\n                    this.props.telemetry.error(error.message);\n                    this.props.telemetry.debug('Unable to issue loyalty card');\n                });\n        }\n    }\n\n    private _checkboxChecked(): void {\n        this.setState({ checked: !this.state.checked });\n    }\n}\n\nexport default LoyaltyTerms;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC<ILoyaltyTermsViewProps> = props => {\n    const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n    return !loading && modal ? (\n        <Module {...LoyaltyTerms}>\n            {modalToggle}\n            <Node {...modal.modal}>\n                <Node {...modal.modalHeader}>{modal.heading}</Node>\n                <Node {...modal.modalBody}>\n                    {modal.terms}\n                    <Node {...modal.agreeSection}>\n                        {modal.checkbox}\n                        {modal.agreeText}\n                    </Node>\n                </Node>\n                <Node {...modal.modalFooter}>\n                    {modal.submitButton}\n                    {modal.cancelButton}\n                </Node>\n            </Node>\n        </Module>\n    ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n    description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC<IAccountOrganizationUsersTileDescription> = ({ description }) => (\n    <p className='ms-account-organization-users-tile__description'>{description}</p>\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<IAccountOrganizationUsersTileLinks> = ({\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        <div className='ms-account-organization-users-tile__links'>\n            {editableLinks && editableLinks.length > 0 ? (\n                <Msdyn365.Links links={editableLinks} editProps={{ onTextChange, requestContext }} />\n            ) : null}\n        </div>\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<IOrganizationUsersTileData> {\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<IOrganizationUsersTileProps<IOrganizationUsersTileData>>}\n */\nclass OrganizationUsersTile extends React.PureComponent<IOrganizationUsersTileProps<IOrganizationUsersTileData>> {\n    private readonly telemetryContent?: ITelemetryContent;\n\n    constructor(props: IOrganizationUsersTileProps<IOrganizationUsersTileData>) {\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                <Msdyn365.Text\n                    className='ms-account-organization-users-tile__heading'\n                    tag={heading.tag}\n                    text={heading.text}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            links: links && links.length > 0 && (\n                <AccountOrganizationUsersTileLinks\n                    {...{\n                        links,\n                        onTextChange: this.handleLinkTextChange,\n                        requestContext: this.props.context.request,\n                        telemetryContent: this.telemetryContent\n                    }}\n                />\n            ),\n            description: (\n                <AccountOrganizationUsersTileDescription description={format(accountOrganizationUsersTileDescription, numUsers || 0)} />\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 { 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<HTMLElement>): void;\n}\n\nconst PasswordResetButton: React.FC<IPasswordResetButton> = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n    const payLoad = getPayloadObject('click', telemetryContent!, text);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    return (\n        <Button id={id} className={className} aria-label={ariaLabel} disabled={disabled} onClick={onClick} {...attributes}>\n            {text}\n        </Button>\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<IPasswordResetErrorProps> = ({ id, className, type = 'page', message }) => {\n    const errorClassName = `${className}__${type}-error`;\n\n    return (\n        <div id={id} className={classnames(errorClassName, 'error', `${type}Level`)} role='alert' aria-live='assertive' aria-hidden='true'>\n            <p className={`${errorClassName}-text`}>{message}</p>\n        </div>\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<HTMLInputElement>): 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<IPasswordResetInputProps> = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n    <input\n        id={id}\n        type={type}\n        value={value}\n        className={`${className}-input ${className}-${id}`}\n        pattern={pattern !== '' ? pattern : undefined}\n        aria-required='true'\n        maxLength={GetMaxLength(maxLength)}\n        onChange={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<IPasswordResetLabel> = ({ id, forId, className, text }) => (\n    <label id={`${id}_label`} className={`${className}-label`} htmlFor={forId}>\n        {text}\n    </label>\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<IPasswordResetLoadingIcon> = ({ className }) => <div className={`${className}__loading-icon`} />;\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<IPasswordResetLoadingMessage> = ({ className, message }) => (\n    <div className={`${className}__loading-message`}>{message}</div>\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<IPasswordResetProps<IPasswordResetConfig>>}\n */\n@observer\nclass PasswordReset extends React.Component<IPasswordResetProps<IPasswordResetConfig>> {\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<IPasswordResetConfig>) {\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<IPasswordResetConfig>, 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: <PasswordResetLoadingIconComponent className={this.moduleClassName} />,\n                message: <PasswordResetLoadingMessageComponent className={this.moduleClassName} message={resources.loadingMessage} />\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                <Msdyn365.Text\n                    className={`${this.moduleClassName}__heading`}\n                    {...config.heading}\n                    editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\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                <PasswordResetErrorComponent\n                    key='passwordEntryMismatch'\n                    id='passwordEntryMismatch'\n                    className={this.moduleClassName}\n                    message={resources.passwordEntryMismatchError}\n                />,\n                <PasswordResetErrorComponent\n                    key='requiredFieldMissing'\n                    id='requiredFieldMissing'\n                    className={this.moduleClassName}\n                    message={resources.requiredFieldMissingError}\n                />,\n                <PasswordResetErrorComponent\n                    key='email_fail_throttled'\n                    id='fieldIncorrect'\n                    className={this.moduleClassName}\n                    message={resources.fieldIncorrectError}\n                />,\n                <PasswordResetErrorComponent\n                    key='claimVerificationServerError'\n                    id='claimVerificationServerError'\n                    className={this.moduleClassName}\n                />\n            ],\n            buttonsWrapper: {\n                className: `${this.moduleClassName}__buttons`\n            },\n            buttons: [\n                <PasswordResetButtonComponent\n                    key='continue'\n                    id='continue'\n                    className={`${this.moduleClassName}__continue-button`}\n                    ariaLabel={resources.saveButtonAriaLabel}\n                    text={resources.saveButtonText}\n                    telemetryContent={this.telemetryContent}\n                />,\n                <PasswordResetButtonComponent\n                    key='cancel'\n                    id='cancel'\n                    className={`${this.moduleClassName}__cancel-button`}\n                    ariaLabel={resources.cancelButtonText}\n                    text={resources.cancelButtonText}\n                    telemetryContent={this.telemetryContent}\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                <PasswordResetLabelComponent\n                    {...{\n                        id,\n                        forId: id,\n                        className,\n                        text: labelText\n                    }}\n                />\n            ),\n            errorMessage: (\n                <PasswordResetErrorComponent\n                    {...{\n                        className: this.moduleClassName,\n                        type: 'item'\n                    }}\n                />\n            ),\n            input: (\n                <PasswordResetInputComponent\n                    {...{\n                        id,\n                        type,\n                        pattern,\n                        className\n                    }}\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<IPasswordResetItem> = ({ wrapper, label, errorMessage, input }) => {\n    return (\n        <Node {...wrapper}>\n            {label}\n            {errorMessage}\n            {input}\n        </Node>\n    );\n};\n\nconst LocalAccount: React.FC<IPasswordResetLocalAccount> = ({\n    localAccount,\n    items,\n    errorMessage,\n    buttonsWrapper,\n    buttons,\n    verificationSuccessModal,\n    verificationSuccessModalMessage\n}) => {\n    return (\n        <Node {...localAccount}>\n            {items &&\n                items.map((item: IPasswordResetItem) => {\n                    // eslint-disable-next-line react/jsx-key\n                    return <PasswordResetItem {...item} />;\n                })}\n            {errorMessage &&\n                errorMessage.map((error: React.ReactNode, index: number) => {\n                    return <React.Fragment key={index}>{error}</React.Fragment>;\n                })}\n            <Node {...buttonsWrapper}>\n                {buttons &&\n                    buttons.map((button: React.ReactNode, index: number) => {\n                        return <React.Fragment key={index}>{button}</React.Fragment>;\n                    })}\n            </Node>\n\n            <Node {...verificationSuccessModal}>\n                <Node {...verificationSuccessModalMessage} />\n            </Node>\n        </Node>\n    );\n};\n\nconst PasswordResetLoading: React.FC<IPasswordResetLoading> = ({ modal, modalBody, icon, message }) => {\n    return (\n        <Node {...modal}>\n            <Node {...modalBody}>\n                {icon}\n                {message}\n            </Node>\n        </Node>\n    );\n};\n\nconst PasswordResetView: React.FC<IPasswordResetViewProps> = props => {\n    const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n    return (\n        <Module {...passwordReset}>\n            {viewState.isShowLoading && <Node {...defaultAADConainer} />}\n            {viewState.isShowLoading && <PasswordResetLoading {...loading} />}\n            <Node {...aadConainer}>\n                {heading}\n                {LocalAccount(passwordResetLocalAccount)}\n            </Node>\n        </Module>\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 { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInButton {\n    id?: string;\n    className: string;\n    text: string;\n    ariaLabel: string;\n    disabled?: boolean;\n    telemetryContent?: ITelemetryContent;\n    onClick?(event: React.MouseEvent<HTMLElement>): void;\n}\n\nconst SignInButton: React.FC<ISignInButton> = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n    const payLoad = getPayloadObject('click', telemetryContent!, text);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    return (\n        <Button id={id} className={className} aria-label={ariaLabel} disabled={disabled} onClick={onClick} {...attributes}>\n            {text}\n        </Button>\n    );\n};\n\nexport default SignInButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInDescription {\n    className: string;\n    description: string;\n}\n\nconst SignInDescription: React.FC<ISignInDescription> = ({ className, description }) => <p className={className}>{description}</p>;\n\nexport default SignInDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignInErrorProps {\n    id?: string;\n    className: string;\n    type?: string;\n    message?: string;\n}\n\nconst SignInError: React.FC<ISignInErrorProps> = ({ id, className, type = 'page', message }) => {\n    const errorClassName = `${className}__${type}-error`;\n\n    return (\n        <div id={id} className={classnames(errorClassName, 'error', `${type}Level`)} role='alert' aria-live='assertive' aria-hidden='true'>\n            <p className={`${errorClassName}-text`}>{message}</p>\n        </div>\n    );\n};\n\nexport default SignInError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInInputProps {\n    id?: string;\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    type: any;\n    value?: string;\n    pattern?: string;\n    className: string;\n    maxLength?: string;\n    ariaLabel?: string;\n    onChange?(event: React.ChangeEvent<HTMLInputElement>): void;\n}\n\nexport interface ISignInInput {\n    key: string;\n    AddressItem: INodeProps;\n    label: React.ReactNode;\n    alert: React.ReactNode;\n    input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n    if (maxLength) {\n        const parsedMaxLength = Number.parseInt(maxLength, 10);\n        if (!isNaN(parsedMaxLength)) {\n            return parsedMaxLength;\n        }\n    }\n\n    return undefined;\n};\n\nconst SignInInput: React.FC<ISignInInputProps> = ({ id, type, value, pattern, className, maxLength, ariaLabel, onChange }) => (\n    <input\n        id={id}\n        type={type}\n        value={value}\n        className={`${className}-input ${className}-${id}`}\n        pattern={pattern !== '' ? pattern : undefined}\n        aria-required='true'\n        maxLength={GetMaxLength(maxLength)}\n        onChange={onChange}\n        aria-label={ariaLabel}\n    />\n);\n\nexport default SignInInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLabel {\n    id: string;\n    forId: string;\n    className: string;\n    text: string;\n}\n\nconst SignInLabel: React.FC<ISignInLabel> = ({ id, forId, className, text }) => (\n    <label id={`${id}_label`} className={`${className}-label`} htmlFor={forId}>\n        {text}\n    </label>\n);\n\nexport default SignInLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignInLink {\n    id?: string;\n    className: string;\n    href: string;\n    ariaLabel: string;\n    text: string;\n    telemetryContent?: ITelemetryContent;\n}\n\nconst SignInLink: React.FC<ISignInLink> = ({ id, className, href, telemetryContent, ariaLabel, text }) => {\n    const payLoad = getPayloadObject('click', telemetryContent!, text);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    return (\n        <a id={id} className={className} href={href} aria-label={ariaLabel} {...attributes}>\n            {text}\n        </a>\n    );\n};\n\nexport default SignInLink;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLoadingIcon {\n    className: string;\n}\n\nconst SignInLoadingIcon: React.FC<ISignInLoadingIcon> = ({ className }) => <div className={`${className}__loading-icon`} />;\n\nexport default SignInLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInLoadingMessage {\n    className: string;\n    message: string;\n}\n\nconst SignInLoadingMessage: React.FC<ISignInLoadingMessage> = ({ className, message }) => (\n    <div className={`${className}__loading-message`}>{message}</div>\n);\n\nexport default SignInLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignInText {\n    className: string;\n    text: string;\n}\n\nconst SignInText: React.FC<ISignInText> = ({ className, text }) => <span className={className}>{text}</span>;\n\nexport default SignInText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignInButtonComponent from './components/sign-in-button';\nimport SignInDescriptionComponent from './components/sign-in-description';\nimport SignInErrorComponent from './components/sign-in-error';\nimport SignInInputComponent from './components/sign-in-input';\nimport SignInLabelComponent from './components/sign-in-label';\nimport SignInLinkComponent from './components/sign-in-link';\nimport SignInLoadingIconComponent from './components/sign-in-loading-icon';\nimport SignInLoadingMessageComponent from './components/sign-in-loading-message';\nimport SignInTextComponent from './components/sign-in-text';\nimport { ISignInConfig, ISignInProps, ISignInResources } from './sign-in.props.autogenerated';\n\nexport interface ISignInViewState {\n    isShowLoading: boolean;\n}\n\nexport interface ISignInItem {\n    wrapper: INodeProps;\n    key: string;\n    label: React.ReactNode;\n    error: React.ReactNode;\n    input: React.ReactNode;\n}\n\nexport interface ISignInSocialItem {\n    key: string;\n    button: INodeProps;\n    image: React.ReactNode;\n    text: React.ReactNode;\n}\n\nexport interface ISignInB2BItem {\n    key: string;\n    button: INodeProps;\n    text: React.ReactNode;\n}\n\nexport interface ISignInSocialAccount {\n    socialAccounts: INodeProps;\n    items: ISignInSocialItem[];\n}\n\nexport interface ISignInB2BAccount {\n    socialAccounts: INodeProps;\n    items: ISignInB2BItem[];\n}\nexport interface ISignInLocalAccount {\n    localAccount: INodeProps;\n    items: ISignInItem[];\n    forgetPassword: React.ReactNode;\n    disclaimer: React.ReactNode;\n    error: React.ReactNode;\n    signInButton: React.ReactNode;\n}\n\nexport interface ISignInLoading {\n    modal: INodeProps;\n    modalBody: INodeProps;\n    icon: React.ReactNode;\n    message: React.ReactNode;\n}\n\nexport interface ISignInViewProps {\n    className: string;\n    viewState: ISignInViewState;\n    signIn: IModuleProps;\n    loading: ISignInLoading;\n    defaultAADConainer: INodeProps;\n    aadConainer: INodeProps;\n    signInSection: INodeProps;\n    signInSectionHeading: React.ReactNode;\n    signInLocalAccount: ISignInLocalAccount;\n    signInSocialAccount: ISignInSocialAccount;\n    signInB2BAccount: ISignInB2BAccount;\n    signUpSection: INodeProps;\n    signUpSectionHeading: React.ReactNode;\n    signUpDescription: React.ReactNode;\n    signUpLink: React.ReactNode;\n}\n\n/**\n * SignIn component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component<ISignInProps<ISignInData>>}\n */\n@observer\nclass SignIn extends React.Component<ISignInProps<ISignInConfig>> {\n    private readonly moduleClassName: string = 'ms-sign-in';\n\n    private readonly telemetryContent?: ITelemetryContent;\n\n    @observable private emailId: string;\n\n    @observable private emailRegex: string;\n\n    @observable private isInitialized: boolean;\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private initializationTimer: any;\n\n    constructor(props: ISignInProps<ISignInConfig>) {\n        super(props);\n        this.emailRegex = EmailRegex.defaultRegex.source;\n        this.isInitialized = false;\n        this.telemetryContent = getTelemetryObject(\n            this.props.context.request.telemetryPageName!,\n            this.props.friendlyName,\n            this.props.telemetry\n        );\n        this.emailId = 'logonIdentifier';\n    }\n\n    public componentDidMount(): void {\n        this._prePopulateData();\n        this._onInit();\n    }\n\n    // After successful AAD initialization, call initialize method provided by AAD to attach events.\n    public componentDidUpdate(): void {\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n            // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n            window['$element']['initialize']();\n        }\n    }\n\n    public shouldComponentUpdate(nextProps: ISignInProps<ISignInConfig>, nextState: ISignInViewState): boolean {\n        if (this.state === nextState && this.props.data === nextProps.data) {\n            return false;\n        }\n        return true;\n    }\n\n    public render(): JSX.Element {\n        const config: ISignInConfig = this.props.config || {};\n        const resources: ISignInResources = this.props.resources || {};\n\n        const viewProps = {\n            ...this.props,\n            viewState: {\n                isShowLoading: !this.isInitialized\n            },\n            signIn: {\n                moduleProps: this.props,\n                className: classnames(this.moduleClassName, config.className)\n            },\n            loading: {\n                modal: {\n                    tag: Modal,\n                    isOpen: true\n                },\n                modalBody: {\n                    tag: ModalBody\n                },\n                icon: <SignInLoadingIconComponent className={this.moduleClassName} />,\n                message: <SignInLoadingMessageComponent className={this.moduleClassName} message={resources.loadingMessage} />\n            },\n            defaultAADConainer: {\n                id: 'api',\n                style: { display: 'none' }\n            },\n            aadConainer: {\n                id: this.isInitialized ? 'api' : null,\n                className: `${this.moduleClassName}__container`\n            },\n            signInSection: {\n                className: `${this.moduleClassName}__sign-in-section`\n            },\n            signInSectionHeading: (\n                <Msdyn365.Text\n                    className={`${this.moduleClassName}__sign-in-heading`}\n                    {...config.signInHeading}\n                    editProps={{ onEdit: this.handleSignInHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            signInLocalAccount: {\n                localAccount: {\n                    className: `${this.moduleClassName}__account-items localAccount`\n                },\n                items: [\n                    this._renderInput(\n                        this.emailId,\n                        'email',\n                        resources.emailAddressLabelText,\n                        resources.emailAddressAriaLabel,\n                        this.emailRegex\n                    ),\n                    this._renderInput('password', 'password', resources.passwordLabelText)\n                ],\n                forgetPassword: (\n                    <SignInLinkComponent\n                        id='forgotPassword'\n                        className={`${this.moduleClassName}__forget-password`}\n                        href='#'\n                        ariaLabel={resources.forgotPasswordButtonAriaLabel}\n                        text={resources.forgotPasswordButtonText}\n                        telemetryContent={this.telemetryContent}\n                    />\n                ),\n                disclaimer: config.signInDisclaimer && (\n                    <Msdyn365.RichTextComponent\n                        className={`${this.moduleClassName}__sign-in-disclaimer`}\n                        text={config.signInDisclaimer}\n                        editProps={{ onEdit: this.handleParagraphChange, requestContext: this.props.context.request }}\n                    />\n                ),\n                error: <SignInErrorComponent className={this.moduleClassName} />,\n                signInButton: (\n                    <SignInButtonComponent\n                        id='next'\n                        className={`${this.moduleClassName}__sign-in-button`}\n                        ariaLabel={resources.loginButtonAriaLabel}\n                        text={resources.loginButtonText}\n                        telemetryContent={this.telemetryContent}\n                    />\n                )\n            },\n            signInSocialAccount: {\n                socialAccounts: {\n                    className: `${this.moduleClassName}__social-accounts`\n                },\n                items: [\n                    this._renderSocialAccount(\n                        'FacebookExchange',\n                        resources.facebookButtonText,\n                        resources.facebookButtonAriaLabel,\n                        config.facebookIcon\n                    ),\n                    this._renderSocialAccount(\n                        'MicrosoftAccountExchange',\n                        resources.microsoftButtonText,\n                        resources.microsoftButtonAriaLabel,\n                        config.microsoftIcon\n                    )\n                ]\n            },\n            signInB2BAccount: {\n                socialAccounts: {\n                    className: `${this.moduleClassName}__b2b-social-accounts`\n                },\n                items: [\n                    this._renderB2BSocialAccount(\n                        'StoreManagerB2BSignin',\n                        resources.b2bButtonText,\n                        resources.b2bButtonAriaLabel,\n                        config.displayB2bAccountManagerSignin\n                    )\n                ]\n            },\n            signUpSection: {\n                className: `${this.moduleClassName}__sign-up-section`\n            },\n            signUpSectionHeading: (\n                <Msdyn365.Text\n                    className={`${this.moduleClassName}__sign-up-heading`}\n                    {...config.signUpHeading}\n                    editProps={{ onEdit: this.handleSignUpHeadingChange, requestContext: this.props.context.request }}\n                />\n            ),\n            signUpDescription: (\n                <SignInDescriptionComponent\n                    className={`${this.moduleClassName}__sign-up-description`}\n                    description={resources.signUpDescriptionText}\n                />\n            ),\n            signUpLink: (\n                <SignInLinkComponent\n                    id='createAccount'\n                    href='#'\n                    className={`${this.moduleClassName}__sign-up-link msc-btn`}\n                    ariaLabel={resources.signUpButtonAriaLabel}\n                    text={resources.signUpButtonText}\n                    telemetryContent={this.telemetryContent}\n                />\n            )\n        };\n\n        return this.props.renderView(viewProps) as React.ReactElement;\n    }\n\n    public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.signInDisclaimer = event.target.value);\n\n    public handleSignInHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n        (this.props.config.signInHeading.text = event.target.value);\n\n    public handleSignUpHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n        (this.props.config.signUpHeading.text = event.target.value);\n\n    private readonly _onInit = () => {\n        this._prePopulateData();\n        this._updateErrorMessage();\n\n        // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n        this.initializationTimer = setInterval(() => {\n            this._isInitializationSuccessful();\n        }, 100);\n        setTimeout(() => {\n            clearInterval(this.initializationTimer);\n        }, 10_000);\n    };\n\n    // After successful AAD initialization, remove waiting and preload any data, if needed.\n    private readonly _isInitializationSuccessful = () => {\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n            clearInterval(this.initializationTimer);\n            this.isInitialized = true;\n        }\n    };\n\n    private readonly _prePopulateData = () => {\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (window && window['CONTENT'] && window['CONTENT']['email_pattern']) {\n            // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n            this.emailRegex = window['CONTENT']['email_pattern'];\n        }\n\n        // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n        if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n            // @ts-expect-error\n            this.emailId = (window.SA_FIELDS.AttributeFields || [])[0].ID || this.emailId;\n        }\n    };\n\n    private readonly _updateErrorMessage = () => {\n        const resources: ISignInResources = this.props.resources || {};\n\n        // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n        if (window && window['CONTENT']) {\n            const errorMessages = {\n                requiredField_email: resources.requriedEmailError,\n                requiredField_password: resources.requriedPasswordError,\n                invalid_email: resources.invalidEmailError,\n                invalid_password: resources.invalidPasswordError,\n                unknown_error: resources.unknownError\n            };\n\n            // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n            Object.assign(window['CONTENT'], errorMessages);\n        }\n    };\n\n    private _renderInput(id: string, type: string, labelText: string, ariaLabel?: string, pattern?: string): ISignInItem {\n        const className = `${this.moduleClassName}__account-item`;\n        return {\n            wrapper: {\n                className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n            },\n            key: id,\n            label: (\n                <SignInLabelComponent\n                    {...{\n                        id,\n                        forId: id,\n                        className,\n                        text: labelText\n                    }}\n                />\n            ),\n            error: (\n                <SignInErrorComponent\n                    {...{\n                        className: this.moduleClassName,\n                        type: 'item'\n                    }}\n                />\n            ),\n            input: (\n                <SignInInputComponent\n                    {...{\n                        id,\n                        type,\n                        pattern,\n                        className,\n                        ariaLabel\n                    }}\n                />\n            )\n        };\n    }\n\n    private _renderSocialAccount(id: string, text: string, ariaLabel: string, iconImage?: Msdyn365.IImageData): ISignInSocialItem {\n        return {\n            key: id,\n            button: {\n                id,\n                tag: 'button',\n                className: classnames(\n                    `${this.moduleClassName}__social-account`,\n                    `${this.moduleClassName}__social-account-${id}`,\n                    'accountButton',\n                    'msc-btn'\n                ),\n                'aria-label': ariaLabel\n            },\n            image: this._createImageMarkup(iconImage),\n            text: <SignInTextComponent className={`${this.moduleClassName}__social-account-text`} text={text} />\n        };\n    }\n\n    private _renderB2BSocialAccount(\n        id: string,\n        text: string,\n        ariaLabel: string,\n        _displayB2bAccountManagerSignin: boolean | undefined\n    ): ISignInB2BItem | null {\n        if (_displayB2bAccountManagerSignin) {\n            return {\n                key: id,\n                button: {\n                    id,\n                    tag: 'button',\n                    className: classnames(\n                        `${this.moduleClassName}__social-account`,\n                        `${this.moduleClassName}__social-account-${id}`,\n                        'accountButton',\n                        'msc-btn'\n                    ),\n                    'aria-label': ariaLabel\n                },\n                text: <SignInTextComponent className={`${this.moduleClassName}__social-account-text`} text={text} />\n            };\n        }\n        return null;\n    }\n\n    private _createImageMarkup(iconImage?: Msdyn365.IImageData): React.ReactNode | null {\n        if (iconImage) {\n            const imageProps = {\n                gridSettings: this.props.context.request.gridSettings || {},\n                imageSettings: iconImage && iconImage.imageSettings\n            };\n            const pictureClassName = `${this.moduleClassName}__social-account-picture`;\n            return (\n                <div className={pictureClassName}>\n                    <Msdyn365.Image\n                        className={`${pictureClassName}__image`}\n                        {...iconImage}\n                        {...imageProps}\n                        requestContext={this.props.context.request}\n                        editProps={{ key: iconImage || {}, requestContext: this.props.context.request }}\n                        shouldSkipToMainImage\n                    />\n                </div>\n            );\n        }\n        return null;\n    }\n}\n\nexport default SignIn;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n    ISignInItem,\n    ISignInLoading,\n    ISignInLocalAccount,\n    ISignInSocialAccount,\n    ISignInSocialItem,\n    ISignInB2BAccount,\n    ISignInB2BItem,\n    ISignInViewProps\n} from './sign-in';\n\nconst LocalAccount: React.FC<ISignInLocalAccount> = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n    return (\n        <Node {...localAccount}>\n            {items &&\n                items.map((item: ISignInItem) => {\n                    return (\n                        <Node key={item.key} {...item.wrapper}>\n                            {item.label}\n                            {item.error}\n                            {item.input}\n                        </Node>\n                    );\n                })}\n            {forgetPassword}\n            {disclaimer}\n            {error}\n            {signInButton}\n        </Node>\n    );\n};\n\nconst SocialAccount: React.FC<ISignInSocialAccount> = ({ socialAccounts, items }) => {\n    return (\n        <Node {...socialAccounts}>\n            {items &&\n                items.map((item: ISignInSocialItem) => {\n                    return (\n                        <Node key={item.key} {...item.button}>\n                            {item.image}\n                            {item.text}\n                        </Node>\n                    );\n                })}\n        </Node>\n    );\n};\n\nconst B2BAccount: React.FC<ISignInB2BAccount> = ({ socialAccounts, items }) => {\n    return (\n        <Node {...socialAccounts}>\n            {items &&\n                items.map((item: ISignInB2BItem) => {\n                    return (\n                        item && (\n                            <Node key={item.key} {...item.button}>\n                                {item.text}\n                            </Node>\n                        )\n                    );\n                })}\n        </Node>\n    );\n};\n\nconst SignInLoading: React.FC<ISignInLoading> = ({ modal, modalBody, icon, message }) => {\n    return (\n        <Node {...modal}>\n            <Node {...modalBody}>\n                {icon}\n                {message}\n            </Node>\n        </Node>\n    );\n};\n\nconst SignInView: React.FC<ISignInViewProps> = props => {\n    const {\n        signIn,\n        viewState,\n        loading,\n        defaultAADConainer,\n        aadConainer,\n        signInSection,\n        signUpSection,\n        signInSectionHeading,\n        signInLocalAccount,\n        signInSocialAccount,\n        signUpSectionHeading,\n        signInB2BAccount,\n        signUpDescription,\n        signUpLink\n    } = props;\n\n    return (\n        <Module {...signIn}>\n            {viewState.isShowLoading && <Node {...defaultAADConainer} />}\n            {viewState.isShowLoading && <SignInLoading {...loading} />}\n            <Node {...aadConainer}>\n                <Node {...signInSection}>\n                    {signInSectionHeading}\n                    {LocalAccount(signInLocalAccount)}\n                    {SocialAccount(signInSocialAccount)}\n                    {B2BAccount(signInB2BAccount)}\n                </Node>\n                <Node {...signUpSection}>\n                    {signUpSectionHeading}\n                    {signUpDescription}\n                    {signUpLink}\n                </Node>\n            </Node>\n        </Module>\n    );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport 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<IBusinessOrganizationListData> {\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<HTMLInputElement | HTMLTextAreaElement>) => 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: <FormLabel {...{ id, forId: id, className, text: label, asteriskText: isRequired ? asteriskAfterLabel : label }} />,\n            errorMessage: <FormFieldError {...{ className, type: 'item' }} />,\n            input: (\n                <FormInput\n                    {...{\n                        id,\n                        type,\n                        maxLength: maxChars,\n                        pattern,\n                        value,\n                        className,\n                        isRequired: isRequired === undefined ? false : isRequired,\n                        onChange: onInputChange,\n                        isDisabled,\n                        placeholder: label,\n                        fieldReference\n                    }}\n                />\n            )\n        };\n    });\n};\n\ninterface IUserTableItemProps extends ITableItemProps {\n    user: BusinessPartnerUser;\n}\n\n/**\n *\n * BusinessOrganizationList component.\n * @extends {React.PureComponent<IBusinessOrganizationListProps<IBusinessOrganizationListData>>}\n */\n@observer\nclass BusinessOrganizationList extends React.Component<\n    IBusinessOrganizationListProps<IBusinessOrganizationListData>,\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<HTMLInputElement>[] = [];\n\n    private userFormEditReference: React.RefObject<HTMLButtonElement>[] = [];\n\n    private userFormDeleteReference: React.RefObject<HTMLButtonElement>[] = [];\n\n    private readonly submitButtonReference: React.RefObject<HTMLButtonElement>;\n\n    private readonly addUserButtonReference: React.RefObject<HTMLButtonElement>;\n\n    private readonly statementRequestButtonReference: React.RefObject<HTMLButtonElement>;\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<IBusinessOrganizationListData>) {\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<HTMLInputElement>();\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<IBusinessOrganizationListData>,\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 && <Heading className={`${this.moduleClassName}__heading`} headingTag={heading.tag} text={heading.text} />,\n                addUserButton: (\n                    <Button\n                        innerRef={this.addUserButtonReference}\n                        className={`${this.moduleClassName}__add-user-button`}\n                        onClick={this._handleAddUserButtonClicked}\n                        {...addUserAttributes}\n                    >\n                        {businessUserAddUserButtonText}\n                    </Button>\n                ),\n                noUsersText: <p className={`${this.moduleClassName}__error-message`}>{errorMessage}</p>\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 && <Heading className={`${this.moduleClassName}__heading`} headingTag={heading.tag} text={heading.text} />,\n            modalState: isModalOpen,\n            addUserButton: (\n                <Button\n                    innerRef={this.addUserButtonReference}\n                    className={`${this.moduleClassName}__add-user-button`}\n                    onClick={this._handleAddUserButtonClicked}\n                    {...addUserAttributes}\n                >\n                    {businessUserAddUserButtonText}\n                </Button>\n            ),\n            organizationListTable: <Table {...this._createTableProps()} />,\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                <AdminRequestStatementButton\n                    className={classnames(this.moduleClassName, className)}\n                    buttonReference={this.statementRequestButtonReference}\n                    onRequestStatement={this._showRequestStatementModal}\n                    requestStatementButtonLabel={businessUserActionButtonText}\n                    onToggleDropdown={this._toggleStatementRequestDropdown}\n                    myUserAccountLabel={requestAccountStatementActionLabel}\n                    fullOrganizationLabel={requestOrganizationStatementActionLabel}\n                    isDropdownShowing={this.state.isStatementRequestAdminDropdownOpen}\n                    promoteToSellerLabel={promoteToSellerActionLabel}\n                    onPromoteToSeller={this._promoteToSeller}\n                />\n            ) : (\n                <AdminRequestStatementButton\n                    className={classnames(this.moduleClassName, className)}\n                    buttonReference={this.statementRequestButtonReference}\n                    onRequestStatement={this._showRequestStatementModal}\n                    requestStatementButtonLabel={requestStatementButtonLabel}\n                    onToggleDropdown={this._toggleStatementRequestDropdown}\n                    myUserAccountLabel={userAccountStatementLabel}\n                    fullOrganizationLabel={fullOrganizationLabel}\n                    isDropdownShowing={this.state.isStatementRequestAdminDropdownOpen}\n                />\n            ),\n            requestStatementModal: (\n                <RequestStatementModal\n                    email={customer?.Email || ''}\n                    isModalOpen={isStatementRequestModalOpen}\n                    toggle={this._closeStatementRequestModal}\n                    fromDateString={statementRequestFromDateString}\n                    toDateString={statementRequestToDateString}\n                    onChangeFromDate={this._updateFromDate}\n                    onChangeToDate={this._updateToDate}\n                    canSubmitRequest={this.canSubmitStatementRequest}\n                    modalHeaderLabel={statementRequestModalHeaderLabel}\n                    sendToEmailLabel={sendToEmailLabel}\n                    fromDateLabel={fromDateLabel}\n                    toDateLabel={toDateLabel}\n                    submitRequestLabel={submitRequestLabel}\n                    cancelLabel={cancelLabel}\n                    onSubmitRequest={this._requestStatement}\n                    className={classnames(this.moduleClassName, className)}\n                    selectedUserLabel={selectedUserLabel}\n                    selectedUser={\n                        this.state.statementRequestFullOrg ? this.props.resources.selectedOrganizationLabel : this.selectedUserName\n                    }\n                    modalAriaLabel={this.props.resources.modalAriaLabel}\n                    maxDateString={statementRequestMaxDateString}\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            hasActionError: false,\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                    this.setState({\n                        formType: FormType.None,\n                        isModalOpen: false\n                    });\n                })\n                .catch(error => {\n                    context.telemetry.trace(error);\n                    this.setState({\n                        hasActionError: true\n                    });\n                });\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, hasActionError } = 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                <p className={`${formClassName}-description`}>{businessUserRemoveModalDescription}</p>\n            ),\n            selectedUser: displayedUserData,\n            buttons: [\n                formType === FormType.Remove && (\n                    <Button\n                        innerRef={this.submitButtonReference}\n                        key='action-remove'\n                        className={`${formClassName}-remove-user-button`}\n                        onClick={handleRemoveButton}\n                    >\n                        {businessUserRemoveUserButtonText}\n                    </Button>\n                ),\n                <Button key='action-cancel' className={`${formClassName}-cancel`} onClick={this._toggleModal}>\n                    {formType === FormType.Remove ? businessUserCancelRemoveUserButtonText : businessUserCancelButtonText}\n                </Button>\n            ],\n            errorMessage: [\n                hasActionError && (\n                    <FormFieldError\n                        key='fieldIncorrect'\n                        id='fieldIncorrect'\n                        className={`${formClassName}-error`}\n                        message={businessUserErrorUpdatingUsersMessage}\n                    />\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                <p className={`${formClassName}-all-required-msg`}>{businessUserAllFieldsRequiredMessage}</p>\n            ),\n            inputs: renderInputSection(formItems, `${formClassName}-item`, asteriskAfterLabel, this._onInputChange),\n            buttons: [\n                <FormButton\n                    key='continue'\n                    id='continue'\n                    className={`${formClassName}-save`}\n                    ariaLabel={businessUserSaveButtonArialabel}\n                    text={businessUserSaveButtonText}\n                    onClick={this._handleAddEditFormSaveButton}\n                    disabled={!isReady}\n                    telemetryContent={this.telemetryContent}\n                />,\n                <FormButton\n                    key='cancel'\n                    id='cancel'\n                    className={`${formClassName}-cancel`}\n                    ariaLabel={businessUserCancelButtonArialabel}\n                    text={businessUserCancelButtonText}\n                    onClick={this._toggleModal}\n                    telemetryContent={this.telemetryContent}\n                />\n            ],\n            errorMessage: [\n                hasFormError && (\n                    <FormFieldError\n                        key='fieldIncorrect'\n                        id='fieldIncorrect'\n                        className={this.moduleClassName}\n                        message={businessUserFieldIncorrectErrorText}\n                    />\n                ),\n                hasActionError && (\n                    <FormFieldError\n                        key='fieldIncorrect'\n                        id='fieldIncorrect'\n                        className={this.moduleClassName}\n                        message={businessUserActionRetailErrorMsg ? businessUserActionRetailErrorMsg : businessUserActionErrorText}\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<HTMLInputElement | HTMLTextAreaElement>): 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<IBusinessFormItem> = ({ wrapper, label, errorMessage, input }) => {\n    return (\n        <Node {...wrapper}>\n            {label}\n            {errorMessage}\n            {input}\n        </Node>\n    );\n};\n\nconst BusinessUserForm: React.FC<IFormViewProps> = (props: IFormViewProps) => {\n    const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n    const modalBody = (\n        <>\n            {modalDescription}\n            <Node {...FormWrapper}>\n                {inputs &&\n                    inputs.map((item: IBusinessFormItem) => {\n                        return <BusinessFormItem {...item} key={item.key} />;\n                    })}\n                {errorMessage &&\n                    errorMessage.map((error: React.ReactNode, index: number) => {\n                        return <React.Fragment key={index}>{error}</React.Fragment>;\n                    })}\n            </Node>\n        </>\n    );\n\n    const modalFooter =\n        buttons &&\n        buttons.map((button: React.ReactNode, index: number) => {\n            return <React.Fragment key={index}>{button}</React.Fragment>;\n        });\n\n    return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst BusinessUserDetails: React.FC<IFormViewProps> = (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                <Node tag='ul' className={`${FormWrapper.className}-list`}>\n                    <Node tag='li' className={`${FormWrapper.className}-list-item-name`}>\n                        {userFullName}\n                    </Node>\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                            <Node tag='li' className={`${FormWrapper.className}-list-item`} key={index}>\n                                {label}\n                                {': '}\n                                {selectedUser[data]}\n                            </Node>\n                        );\n                    })}\n                </Node>\n            </>\n        );\n    }\n\n    const modalFooter =\n        buttons &&\n        buttons.map((button: React.ReactNode, index: number) => {\n            return <React.Fragment key={index}>{button}</React.Fragment>;\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 <BusinessUserForm {...formProps} toggle={toggleModal} />;\n        case 'VIEW':\n        case 'REMOVE':\n            return <BusinessUserDetails {...formProps} toggle={toggleModal} />;\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        <Modal\n            className='msc-modal-input-required'\n            wrapClassName={className}\n            autoFocus\n            fade={false}\n            applicationNode='renderPage'\n            isOpen={isModalOpen}\n            toggle={toggleModal}\n        >\n            <ModalHeader toggle={toggleModal}>{headingSection}</ModalHeader>\n            <ModalBody>{bodySection}</ModalBody>\n            <ModalFooter>{footerSection}</ModalFooter>\n        </Modal>\n    );\n};\n\nconst BusinessOrganizationList: React.FC<IBusinessOrganizationListViewProps> = 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        <Node className='ms-business-organization-list__buttonBar'>\n            {addUserButton}\n            {requestAccountStatementButton}\n        </Node>\n    );\n\n    if (noUsersText) {\n        return (\n            <Module {...OrganizationUserList}>\n                <Node {...moduleContainer}>\n                    {heading}\n                    {ButtonList}\n                    {requestStatementModal}\n                    {noUsersText}\n                </Node>\n            </Module>\n        );\n    }\n\n    return (\n        <Module {...OrganizationUserList}>\n            <Node {...moduleContainer}>\n                {heading}\n                {ButtonList}\n                {requestStatementModal}\n                {organizationListTable}\n            </Node>\n            {form && _getForm(formType, form, toggleModal)}\n        </Module>\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 {\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<HTMLInputElement>;\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<HTMLInputElement>;\n    onChange?(event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>): void;\n}\n\nexport const FormInput: React.FC<IBusinessFormInputProps> = ({\n    id,\n    type,\n    value,\n    pattern,\n    className,\n    maxLength,\n    isRequired,\n    isDisabled,\n    onChange,\n    fieldReference,\n    placeholder\n}) => (\n    <input\n        id={id}\n        type={type}\n        value={value}\n        className={`${className}-input`}\n        pattern={pattern !== '' ? pattern : undefined}\n        aria-required={isRequired}\n        placeholder={placeholder}\n        maxLength={GetMaxLength(maxLength)}\n        onChange={onChange}\n        disabled={isDisabled}\n        ref={fieldReference}\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<IBusinessFormLabel> = ({ id, forId, className, text, asteriskText }) => (\n    <label id={`${id}_label`} className={`${className}-label`} htmlFor={forId}>\n        {format(asteriskText, text)}\n    </label>\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<HTMLElement>): void;\n}\n\nexport const FormButton: React.FC<IBusinessFormButton> = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n    const payLoad = getPayloadObject('click', telemetryContent!, text);\n    const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n    return (\n        <Button id={id} className={className} aria-label={ariaLabel} disabled={disabled} onClick={onClick} {...attributes}>\n            {text}\n        </Button>\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<IBusinessFormErrorProps> = ({ id, className, type = 'page', message }) => {\n    const errorClassName = `${className}__${type}-error`;\n\n    return (\n        <div id={id} className={classnames(errorClassName, 'error', `${type}Level`)} role='alert' aria-live='assertive' aria-hidden='true'>\n            <p className={`${errorClassName}-text`}>{message}</p>\n        </div>\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 * 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<IFooterItemConfig> {\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<IFooterItemProps<IFooterItemConfig>>}\n */\nexport class FooterItem extends React.PureComponent<IFooterItemProps<IFooterItemConfig>> {\n    private readonly telemetryContent: ITelemetryContent;\n\n    private readonly payLoad: IPayLoad;\n\n    private attributes: Msdyn365.IDictionary<string> | undefined;\n\n    constructor(props: IFooterItemProps<IFooterItemConfig>) {\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                <Msdyn365.Link\n                    link={editableLink}\n                    editProps={{ onTextChange: this.handleLinkTextChange, requestContext: this.props.context.request }}\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 <span className='ms-footer__link__text'>{link.linkText}</span>;\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            <Msdyn365.Text\n                tag={heading.tag || 'h2'}\n                text={heading.text}\n                className='ms-footer__heading__title'\n                editProps={{ onEdit: this.handleHeadingChange, requestContext: this.props.context.request }}\n            />\n        );\n    }\n\n    private _createText(text: string): React.ReactNode | null {\n        if (!text) {\n            return null;\n        }\n        return (\n            <Msdyn365.Text\n                tag='div'\n                text={text}\n                className='ms-footer-item__text'\n                editProps={{ onEdit: this.handleTextChange, requestContext: this.props.context.request }}\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            <Msdyn365.Image\n                {...item}\n                requestContext={this.props.context.request}\n                gridSettings={this.props.context.request.gridSettings!}\n                imageSettings={item.imageSettings || defaultImageSettings}\n                loadFailureBehavior='default'\n                aria-hidden={ariaHiddenAttr}\n                editProps={{ key: this.props.config.image || {}, requestContext: this.props.context.request }}\n                shouldSkipToMainImage\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<IFooterViewProps>}\n */\nexport class FooterItemView extends React.PureComponent<IFooterViewProps> {\n    public render(): JSX.Element | null {\n        const { FooterItem } = this.props;\n        return <Module {...FooterItem}>{this._renderElement(this.props)}</Module>;\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 <Node {...HeadingContainer}> {heading} </Node>;\n        } else if (Link && image) {\n            return (\n                <Node {...Link}>\n                    {linkText}\n                    {image}\n                </Node>\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.\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<IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorData> {\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<IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps> = (\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 <div className={classnames(props.className, componentClassName)} />;\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        <div className={classnames(props.className, componentClassName)}>\n            <Button\n                className={classnames(\n                    buttonClassName,\n                    selectorState === OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.CurrentUser\n                        ? buttonActiveClassName\n                        : buttonInactiveClassName\n                )}\n                aria-label={props.resources?.currentUserOptionAriaLabel ?? props.resources?.currentUserOptionLabel}\n                title={props.resources?.currentUserOptionAriaLabel ?? props.resources?.currentUserOptionLabel}\n                onClick={() => onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.CurrentUser)}\n                {...currentUserOrderHistoryAttributes}\n            >\n                {props.resources?.currentUserOptionLabel}\n            </Button>\n            <Button\n                className={classnames(\n                    buttonClassName,\n                    selectorState === OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.OrganizationWide\n                        ? buttonActiveClassName\n                        : buttonInactiveClassName\n                )}\n                aria-label={props.resources?.organizationWideOptionAriaLabel ?? props.resources?.organizationWideOptionLabel}\n                title={props.resources?.organizationWideOptionAriaLabel ?? props.resources?.organizationWideOptionLabel}\n                onClick={() => onClickHandler(OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState.OrganizationWide)}\n                {...orgWideOrderHistoryAttributes}\n            >\n                {props.resources?.organizationWideOptionLabel}\n            </Button>\n        </div>\n    );\n};\n\n/**\n * OrderHistoryWithSearchAndFiltersOrganizationWideSelector component.\n */\nexport const OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent: React.FunctionComponent<IOrderHistoryWithSearchAndFiltersOrganizationWideSelectorProps> = 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<ISitePickerConfig> {\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<ISitePickerProps<ISitePickerConfig>>}\n */\nclass SitePicker extends React.PureComponent<ISitePickerProps<ISitePickerConfig>, ISitePickerState> {\n    private readonly _cookieName: string = '_msdyn365___site_';\n\n    private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n    private readonly _sitePickerMenuNode: React.RefObject<HTMLUListElement>;\n\n    private readonly _sitePickerMenuButton: React.RefObject<HTMLButtonElement>;\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<ISitePickerConfig>),\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<HTMLAnchorElement, 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                    <a\n                        key={index}\n                        className='ms-site-picker__list__item__link'\n                        tabIndex={0}\n                        href={item?.siteRedirectUrl?.destinationUrl}\n                        aria-label={item?.siteName}\n                        onClick={this._handleChange}\n                        role='menuitem'\n                    >\n                        <span className='ms-site-picker__list__item__text'>{item?.siteName}</span>\n                        <Image\n                            requestContext={this.props.context.request}\n                            className='ms-site-picker__list__item__img'\n                            key={index}\n                            src={image?.src || ''}\n                            gridSettings={imageProps.gridSettings}\n                            imageSettings={imageProps.imageSettings}\n                            altText={image?.altText}\n                            loadFailureBehavior='hide'\n                            shouldSkipToMainImage\n                        />\n                    </a>\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            <Node {...SitePickerMenu} onClick={props.renderSiteOptions}>\n                {props.config.heading?.text}\n                <Node {...SitePickerMenuSpan} />\n            </Node>\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            <Node {...SitePickerMenuListItem} key={index}>\n                {item}\n            </Node>\n        );\n    });\n    return (\n        <Node {...SitePickerMenuList} onMouseLeave={props.resetSiteOptionsState}>\n            {options}\n        </Node>\n    );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n    const { SitePickerMobileContainer } = props;\n    return (\n        <Node {...SitePickerMobileContainer} onClick={props.renderSiteOptions}>\n            <div>\n                {props.SitePickerMenuListItemArray?.map((item, index) => {\n                    return <div key={index}>{item}</div>;\n                })}\n            </div>\n        </Node>\n    );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n    const { isMobileView, SitePicker } = props;\n    return <Module {...SitePicker}>{isMobileView ? _renderMobileView(props) : _renderDesktopView(props)}</Module>;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps<ISocialShareConfig> {\n    isConsentGiven: boolean;\n    SocialShareItemElements: React.ReactNode[];\n    SocialShare: IModuleProps;\n    SocialShareList: INodeProps;\n    SocialShareItem: INodeProps;\n    SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent<ISocialShareProps<ISocialShareConfig>>}\n */\nclass SocialShare extends React.PureComponent<ISocialShareProps<ISocialShareConfig>> {\n    constructor(props: ISocialShareProps<ISocialShareConfig>) {\n        super(props);\n    }\n\n    public render(): JSX.Element | null {\n        const { slots } = this.props;\n\n        if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n            this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n            return null;\n        }\n\n        const isConsentGiven =\n            this.props.context.request &&\n            this.props.context.request.cookies &&\n            this.props.context.request.cookies.isConsentGiven &&\n            this.props.context.request.cookies.isConsentGiven();\n\n        if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n            return null;\n        }\n\n        const viewprops = {\n            ...this.props,\n            SocialShare: {\n                moduleProps: this.props,\n                className: classnames('ms-social-share', this.props.config.className)\n            },\n            SocialShareList: {\n                'data-title': this.props.config.caption,\n                className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n                    this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n                }`,\n                tag: 'ul',\n                role: 'group'\n            },\n            SocialShareItem: {\n                className: 'ms-social-share-li',\n                tag: 'li',\n                tabIndex: '0',\n                role: 'link'\n            },\n            SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n        };\n\n        return this.props.renderView(viewprops) as React.ReactElement;\n    }\n}\n\nexport default SocialShare;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC<ISocialShareViewProps> = props => {\n    const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n    if (SocialShareItemElements.length === 0) {\n        props.context.telemetry.error('Social media list is empty, module wont render');\n        return null;\n    }\n    return (\n        <Module {...SocialShare}>\n            <Node {...SocialShareList}>\n                {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n                    return (\n                        <Node {...SocialShareItem} key={index}>\n                            {SocialShareElement}\n                        </Node>\n                    );\n                })}\n            </Node>\n        </Module>\n    );\n};\n\nexport default SocialShareView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n    IBusinessFormItem,\n    IBusinessOrganizationListViewProps,\n    IFormViewProps,\n    InputID\n} from '@msdyn365-commerce-modules/business-organization-list';\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n    IBusinessOrganizationListProps,\n    IBusinessOrganizationListResources\n} from '../definition-extensions/business-organization-list.ext.props.autogenerated';\n\n/**\n * Business Form Item component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessFormItemComponent: React.FC<IBusinessFormItem> = (props: IBusinessFormItem) => {\n    const { wrapper, label, errorMessage, input } = props;\n    return (\n        <Node {...wrapper}>\n            {label}\n            {errorMessage}\n            {input}\n        </Node>\n    );\n};\n\n/**\n * To render modal.\n * @param className - The modal classname.\n * @param isModalOpen - The boolean for modal open status.\n * @param headingSection - The heading section of modal.\n * @param bodySection - The body section of modal.\n * @param footerSection - The footer section of modal.\n * @param toggleModal - The toggle modal callback function.\n * @returns The JSX Element.\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        <Modal\n            className='msc-modal-input-required'\n            wrapClassName={className}\n            autoFocus\n            fade={false}\n            applicationNode='renderPage'\n            isOpen={isModalOpen}\n            toggle={toggleModal}\n        >\n            <ModalHeader toggle={toggleModal}>{headingSection}</ModalHeader>\n            <ModalBody>{bodySection}</ModalBody>\n            <ModalFooter>{footerSection}</ModalFooter>\n        </Modal>\n    );\n};\n\n/**\n * Business User Form component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessUserFormComponent: React.FC<IFormViewProps> = (props: IFormViewProps) => {\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n    const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n    const modalBody = (\n        <>\n            {modalDescription}\n            <Node {...FormWrapper}>\n                {inputs &&\n                    inputs.map((item: IBusinessFormItem) => {\n                        return <BusinessFormItemComponent {...item} key={item.key} />;\n                    })}\n                {errorMessage?.map((error: React.ReactNode, index: number) => {\n                    return <React.Fragment key={index.toString()}>{error}</React.Fragment>;\n                })}\n            </Node>\n        </>\n    );\n\n    const modalFooter =\n        buttons &&\n        buttons.map((button: React.ReactNode, index: number) => {\n            return <React.Fragment key={index.toString()}>{button}</React.Fragment>;\n        });\n\n    return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\n/**\n * Selected user interface.\n */\ninterface ISelectedUser {\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n    FirstName?: string;\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n    LastName?: string;\n}\n\n/**\n * Business User Details component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessUserDetailsComponent: React.FC<IFormViewProps> = (props: IFormViewProps) => {\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n    const { modalClassName, FormWrapper, modalHeading, modalDescription, buttons, errorMessage, resources, toggle } = props;\n    let modalBody = null;\n    const selectedUser = props.selectedUser as ISelectedUser | string;\n\n    if (!selectedUser) {\n        modalBody = errorMessage;\n    } else {\n        // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n        const { FirstName, LastName } = selectedUser as ISelectedUser;\n        const userFullName = `${FirstName as string} ${LastName as string}`;\n\n        modalBody = (\n            <>\n                {modalDescription}\n                <Node tag='ul' className={`${FormWrapper.className}-list`}>\n                    <Node tag='li' className={`${FormWrapper.className}-list-item-name`}>\n                        {userFullName}\n                    </Node>\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`] as string) || data;\n                        return (\n                            <Node tag='li' className={`${FormWrapper.className}-list-item`} key={index.toString()}>\n                                {label}\n                                {': '}\n                                {selectedUser[data]}\n                            </Node>\n                        );\n                    })}\n                    {errorMessage?.map((error: React.ReactNode, index: number) => {\n                        return <React.Fragment key={index.toString()}>{error}</React.Fragment>;\n                    })}\n                </Node>\n            </>\n        );\n    }\n\n    const modalFooter =\n        buttons &&\n        buttons.map((button: React.ReactNode, index: number) => {\n            return <React.Fragment key={index.toString()}>{button}</React.Fragment>;\n        });\n\n    return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\n/**\n * To get form.\n * @param type - The type of form.\n * @param formProps - The form props.\n * @param toggleModal - The toggle modal callback function.\n * @returns The JSX Element.\n */\nconst getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\n    switch (type) {\n        case 'ADD':\n        case 'EDIT':\n            return <BusinessUserFormComponent {...formProps} toggle={toggleModal} />;\n        case 'VIEW':\n        case 'REMOVE':\n            return <BusinessUserDetailsComponent {...formProps} toggle={toggleModal} />;\n        default:\n            return null;\n    }\n};\n\n/**\n * Business Organization List component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessOrganizationListComponent: React.FC<IBusinessOrganizationListViewProps &\n    IBusinessOrganizationListProps<IBusinessOrganizationListResources>> = props => {\n    // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\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        <Node className='ms-business-organization-list__buttonBar'>\n            {addUserButton}\n            {requestAccountStatementButton}\n        </Node>\n    );\n\n    if (noUsersText) {\n        return (\n            <Module {...OrganizationUserList}>\n                <Node {...moduleContainer}>\n                    {heading}\n                    <Node className='ms-business-organization-list__container-no-users'>\n                        <Node className='ms-business-organization-list__container-no-users-heading'>\n                            {props.resources.headingForEmptyUserOrganizationList}\n                        </Node>\n                        <Node className='ms-business-organization-list__container-no-users-text'>\n                            {props.resources.textForEmptyUserOrganizationList}\n                        </Node>\n                        {buttonList}\n                    </Node>\n                    {requestStatementModal}\n                    {noUsersText}\n                </Node>\n            </Module>\n        );\n    }\n\n    return (\n        <Module {...OrganizationUserList}>\n            <Node {...moduleContainer}>\n                {heading}\n                {buttonList}\n                {requestStatementModal}\n                {organizationListTable}\n            </Node>\n            {form && getForm(formType, form, toggleModal)}\n        </Module>\n    );\n};\n\nexport default BusinessOrganizationListComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n    IReportReviewModalViewProps,\n    IReviewCardViewProps,\n    IReviewsListData,\n    IReviewsListResources,\n    IReviewsListState,\n    IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\n\n/**\n * Build Review Card.\n * @param props - Review Card ViewProps.\n * @param resources - Resource Strings.\n * @param isUserReview - User review flag.\n * @returns JSX Element.\n */\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\n    return (\n        <Node {...props.cardProps}>\n            <Node {...props.headerProps}>\n                <div>\n                    {props.rating}\n                    {props.date}\n                </div>\n                {props.name}\n            </Node>\n            <Node {...props.cardBodyProps}>\n                <Node {...props.reviewProps}>\n                    {props.reviewTitle}\n                    {props.reviewText}\n                </Node>\n                <Node {...props.responseProps}>\n                    {props.responseName}\n                    {props.responseDate}\n                    {props.responseText}\n                </Node>\n                <Node {...props.controlsProps}>\n                    {isUserReview ? undefined : <p className='ms-reviews-list__helpful'>{resources.wasReviewHelpfulText}</p>}\n                    {props.like}\n                    {props.dislike}\n                    {props.edit}\n                </Node>\n            </Node>\n        </Node>\n    );\n};\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps<IReviewsListData>): JSX.Element => {\n    const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n    const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n    const defaultImageSettings: IImageSettings = {\n        viewports: {\n            xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n            sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n            md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n            lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n            xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n        },\n        lazyload: true,\n        cropFocalRegion: true\n    };\n\n    return (\n        <Image\n            src={imageUrl ?? ''}\n            gridSettings={props.context.request.gridSettings!}\n            imageSettings={props.config.imageSettings ? props.config.imageSettings : defaultImageSettings}\n        />\n    );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps<IReviewsListData>): JSX.Element => {\n    const product = props.data.product.result;\n    return (\n        <Node className='ms-review-product-description'>\n            <div className='ms-review-product-image'>{renderProductImage(props)}</div>\n            <div className='ms-review-product-details'>\n                <div className='ms-review-product-title'>{product?.Name}</div>\n                <div className='ms-review-product-brand-name'>{product?.Name}</div>\n                <div className='ms-review-product-sku-id'>{product?.ItemId}</div>\n            </div>\n        </Node>\n    );\n};\n\n/**\n * Build Review modal.\n * @param props - Review list ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps<IReviewsListData>): JSX.Element => {\n    const { resources, moduleProps, reviewModal } = props;\n    return (\n        <Module {...reviewModal.modal} {...moduleProps}>\n            {reviewModal.modalHeader}\n            <Node {...reviewModal.modalBody}>\n                <Node {...reviewModal.form}>\n                    <Node className='ms-review-product'>\n                        {renderProductDescription(props)}\n                        <Node {...reviewModal.inputRow} className='ms-review-product__rating'>\n                            <div className='ms-review-product__overallProductRatingLabel'>{resources.selectRatingLabel}</div>\n                            {reviewModal.rating}\n                        </Node>\n                    </Node>\n                    <Node {...reviewModal.inputRow} className='ms-review-product__title'>\n                        {resources.reviewTitleLabel}\n                        {reviewModal.titleInput}\n                    </Node>\n                    <Node {...reviewModal.inputRow} className='ms-review-product__write-review'>\n                        {resources.reviewTextLabel}\n                        {reviewModal.textInput}\n                    </Node>\n                    {reviewModal.privacyPolicyUrl}\n                    {reviewModal.error}\n                </Node>\n            </Node>\n            <Node {...reviewModal.modalFooter}>\n                {reviewModal.submitButton}\n                {reviewModal.cancelButton}\n            </Node>\n        </Module>\n    );\n};\n\n/**\n * Build Review modal.\n * @param props - Review modal ViewProps.\n * @param state - Review List State.\n * @returns JSX Element.\n */\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n    return (\n        <Node {...props.modal}>\n            <Node {...props.modalHeader}>{state.reported ? props.headerSubmitted : props.header}</Node>\n            <Node {...props.modalBody}>\n                {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n            </Node>\n            <Node {...props.modalFooter}>{state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}</Node>\n        </Node>\n    );\n};\n\n/**\n * ReviewsList view.\n * @param props - Ratings ReviewsList ViewProps.\n * @returns ReviewsList view module.\n */\nconst ReviewsListview: React.FC<IReviewsListViewProps & IReviewsListProps<IReviewsListData>> = props => {\n    const {\n        filterByDropdown,\n        heading,\n        moduleProps,\n        noReviewsMessage,\n        noReviewsWithFilterMessage,\n        pageControls,\n        refineReviewsProps,\n        reportReviewModal,\n        reviewsListProps,\n        reviewCards,\n        sortByDropdown,\n        state,\n        userReview,\n        resources\n    } = props;\n\n    if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\n        return <Module {...moduleProps}>{noReviewsMessage}</Module>;\n    }\n\n    return (\n        <Module {...moduleProps}>\n            {heading}\n            <Node {...refineReviewsProps}>\n                {sortByDropdown}\n                {filterByDropdown}\n            </Node>\n            <Node {...reviewsListProps}>\n                {userReview && buildReviewCard(userReview, resources, true)}\n                {reviewCards.map(review => {\n                    return buildReviewCard(review, resources, false);\n                })}\n            </Node>\n            {!ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\n            {pageControls}\n            {createReviewModal(props)}\n            {createReportModal(reportReviewModal, state)}\n        </Module>\n    );\n};\n\nexport default ReviewsListview;\n"],"names":["InvoiceStatus","InvoicePeriod","getInvoiceFrequency","resources","period","ONETIME","oneTime","DAILY","daily","MONTHLY","monthly","QUARTALY","quartaly","SEMIANNUALLY","semianually","ANNULALY","annually","formatDate","context","date","undefined","cultureFormatter","year","month","day","formatCurrency","props","currency","price","_props$context","NosSubscriptionDetails","React","constructor","super","_initialize","async","actionInput","GetSubscriptionDetailsInput","getSubscriptionDetailsAction","this","actionContext","then","res","setState","subscriptionDetailsData","customerReferenceState","CustomerReference","editCustomerReference","handleHeadingChange","event","config","heading","text","target","value","_renderContent","modalContainer","modalHeaderContainer","modalFooterContainer","modalBodyContainer","state","ScheduleNumber","className","subDetailsStatus","getSubscriptionStatus","status","SubscriptionStatus","ACTIVE","active","ARCHIVED","archived","LASTBILLING","lastBilling","ONHOLD","onHold","TERMINATED","terminated","Status","PaymentFailed","subDetailsPaymentFailed","Button","subDetailsPaymentLinkText","onClick","window","open","PaymentLinkUrl","title","subDetailsStartDate","StartDate","Date","subDetailsNextPaymentDate","NextPaymentDate","PaymentMethod","subDetailsPaymentMethod","CreditCardNumber","CreditCardTypeName","endingWith","subDetailsCustomerReference","editButtonText","type","classnames","onChange","e","disabled","ref","customerReferenceRef","saveBtnLabel","changeCustomerReference","cancelButtonAriaLabel","cancel","_this$state$subscript","cancelBtnLabel","subDetailsAction","isCanceled","openModal","subDetailsCancelSubscription","isModalOpen","Module","Object","assign","Node","cancelText","closeModal","toggleDisableText","cancelSubscription","loadingMessage","toggleEnableText","CancelSubscriptionInput","LineNum","cancelSubscriptionAction","_res$response","response","_this$state$subscript2","input","current","scheduleNumber","changeCustomerReferenceInput","ChangeCustomerReferenceInput","changeCustomerReferenceAction","_res$response2","_renderSubscriptionTotals","_subscriptionDetailsD","_subscriptionDetailsD2","_subscriptionDetailsD3","_subscriptionDetailsD4","_subscriptionDetailsD5","_subscriptionDetailsD6","_subscriptionDetailsD7","_subscriptionDetailsD8","_subscriptionDetailsD9","_subscriptionDetailsD10","_subscriptionDetailsD11","subDetailsSubscriptionTotals","scope","subDetailsHeaderProduct","subDetailsHeaderQuantity","subDetailsHeaderTotal","SubscriptionLineTotals","ItemName","Quantity","subDetailsHeaderSubTotal","CurrencyCode","Number","SubTotalAmount","Frequency","subDetailsVatHeaderPercent","VATPercantage","VATAmount","TotalAmount","_renderBillingAddress","_subscriptionDetailsD12","_subscriptionDetailsD13","subDetailsHeaderBillingAddress","SubscriptionAddressBillTo","Name","dangerouslySetInnerHTML","__html","FormattedAddress","_renderContactInformation","subDetailsHeaderContact","ContactGivenName","ContactSurname","ContactEmailAddress","_renderRelatedInvoices","_subscriptionDetailsD14","subDetailsRelatedInvoices","subDetailsHeaderId","subDetailsHeaderDate","SubscriptionRelatedInvoices","map","el","InvoiceId","key","InvoiceDate","getInvoiceStatus","UNPAID","unpaid","PAID","paid","InvoicePaymentStatus","InvoiceTotalAmount","InvoiceCurrencyCode","componentDidMount","requestContext","user","isAuthenticated","shouldComponentUpdate","nextProps","nextState","data","render","moduleProps","tag","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","ModalHeader","closeButtonTabIndex","ModalFooter","ModalBody","viewProps","_objectSpread","Msdyn365","editProps","onEdit","request","content","billingAddress","contactInformation","relatedInvoices","subscriptionTotals","renderView","onChangeHandler","callbacks","newValue","updateQuantity","_state$productPrice","_state$productPrice2","productId","productPrice","ProductId","catalogId","CatalogId","GetGraduatedPriceInput","getPriceAction","document","querySelectorAll","forEach","item","innerHTML","ProductPrice","_fetchGraduatedPrice","_renderTextBlock","textBlock","length","index","_renderAddToCart","addToCart","_props$context$app$ro","ContainerProps","errorBlock","button","payLoad","getPayloadObject","telemetryContent","payload","TelemetryEvent","AddToCart","attributes","getTelemetryAttributes","businessSignUpUrl","_props$context$app$ro2","_props$context$reques","_props$context$reques2","app","routes","businessPartnerSelection","destinationUrl","url","requestUrl","origin","sitePath","_registerButton","registerLinkText","href","onTelemetryClick","payLoadLink","_loginButton","loginLinkText","signInUrl","_renderConfigure","configure","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderPeriod","frequencies","disableSubscriptionPeriodDropdown","_renderKeyInPrice","keyInPrice","_props$data$product$r","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","description","quantity","inventoryLabel","max","unitOfMeasure","quantityLimitsMessages","periodValue","setPeriodValue","monthlyPeriodOption","periodLabel","skuText","product","result","ItemId","mediaGallery","renderQuantity","quantityComponent","extentionResources","IncrementalQuantity","id","currentCount","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","slots","textBlocks","ArrayExtensions","hasElements","productSpecification","AddressShow","_ref","AddressDetail","items","AddressAddUpdate","_ref2","AddressForm","hasError","error","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","AddressItem","label","alert","AddressError","message","CheckoutBillingAddress","checkoutErrorRef","viewState","showAddress","showAddOrUpdateAddress","isShowAddress","isShowAddOrUpdateAddress","CartIcon","observer","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","format","style","visibility","CartIconComponent","msdyn365Commerce","createComponentOverride","component","AutoSuggestEmptyComponent","noSearchResultImage","src","Image","altText","gridSettings","imageSettings","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptySearchTextHeading","emptySearchText","FormComponent","form","searchForm","formWrapper","clearSearchButtonText","isSearchText","clearSearch","cancelBtn","renderClearButton","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","searchText","AutoSuggest","ProductSuggest","UlProduct","autosuggestProduct","SearchForm","FormWrapper","isLoadingAutoSuggest","isLoadingNode","searchSuggestionHeading","searchTextString","setSearchTextString","useState","useEffect","StringExtensions","isNullOrEmpty","propsFormInput","propsFormInputCurrent","action","isSearchFormExpanded","renderTitle","concat","searchAutoSuggestionHeading","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","_item$id","LiProduct","AProduct","thumbnail","AccordionItem","moduleClassName","accordionItemTitle","_onToggle","bind","getTelemetryObject","telemetryPageName","friendlyName","telemetry","accordionExpandedStateResult","accordionExpandedState","expanded","isAllExpanded","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","ControlledDrawer","toggleButtonText","collapseProps","onToggle","onTextChange","accordionSlots","interactionStyle","accordionState","update","createAccordionStateInput","__decorate","_renderAccordionItemContent","accordionItemContent","Accordion","expandAllButtonRef","collapseAllButtonRef","_onExpandAll","_onCollapseAll","isDisabled","headingComponent","accordionViewProps","AccordionContainer","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","_getAccordionItem","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","CollapseAll","attributeCollapseAll","showToggleAll","expandAllText","toggleAllSeparator","collapseAllText","setTimeout","_this$collapseAllButt","focus","_this$expandAllButton","AadGeneric","$i2e","$element","insertServiceContent","getElementContent","initialize","aadGeneric","aadConainer","aadAPIConainer","AccountAddressTile","handleLinkTextChange","linkIndex","links","linkText","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","LinksComponent","DescriptionComponent","_mapEditableLinks","linkdata","editableLinks","link","editableLink","ariaLabel","linkUrl","openInNewTab","role","additionalProperties","push","AccountCustomerBalanceTile","_initState","reaction","ErrorComponent","apiGenericErrorMessage","get","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","isCustomerAccountPaymentEnabled","Heading","headingTag","isDetailsLinkDisplayed","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","computed","AccountInvoiceTileDescription","AccountInvoiceTile","_data$customerBalance","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","OpenInvoiceBalance","AccountLoyaltyTile","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","params","isEditor","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","AccountProfileEdit","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","EmailRegex","defaultRegex","source","componentDidUpdate","isShowLoading","accountProfileEdit","loading","modal","modalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","display","accountProfileEditLocalAccount","_renderLocalAccount","str","createElement","childNodes","nodeValue","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","emailAddressLabelText","labelText","maxLength","pattern","wrapper","AccountProfileEditLabelComponent","forId","AccountProfileEditInputComponent","observable","AccountProfileEditItem","AccountProfileEditLoading","_ref3","LocalAccount","errorClassName","GetMaxLength","parsedMaxLength","parseInt","isNaN","htmlFor","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","split","att","attributeDefinition","find","attribute","IsHidden","toLocaleLowerCase","RecordId","_renderAttribute","edit","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","customerInformation","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","Value","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","_onAttributeCheck","attributeName","attributeError","isNullOrWhitespace","attributePayloadData","name","isMandatory","MsDyn365","isBrowser","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","customer","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","String","DecimalValue","StringValue","BooleanValue","keys","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","includes","trimValue","trim","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","NameTranslations","KeyName","Phone","VATNumber","VatNumber","updateCustomerAttributesInput","AccountNumber","apiSettings","updateCustomerAttributes","initialCustomerAttributes","exception","debug","element","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonWrapper","buttonYesText","buttonNoText","toString","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","_this$props$context$a","editButtonAriaLabel","invalidAsyncCustomerState","shouldRenderAttributes","editLink","infoMessageBar","accountProcessingPendingInfoMessage","accountProfileWrapper","emailSection","_renderEmailSection","Email","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","FirstName","LastName","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","clicked","IssueLoyaltyInput","issueLoyalty","location","catch","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","termsUrl","loyaltyJoinUrl","signInurl","completeClass","classname","hasLoyaltyAccount","CardTenderTypeValue","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","applicationNode","returnFocusRef","returnRef","modalHeader","modalFooter","cancelLoyaltyTermsText","submitButton","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","_submit","_checkboxChecked","toggleRef","search","isJoining","substring","qsps","qsp","splitQsp","hideToggle","serviceTerms","modalToggle","joinLoyaltytermsToggleText","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","GetLoyaltyCardInput","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","OrganizationUsersTile","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","users","accountOrganizationUsersTileDescription","IsB2bAdmin","PasswordReset","newPasswordRegex","reenterPasswordRegex","PasswordRegex","passwordReset","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","passwordResetLocalAccount","newPasswordLabelText","confirmPasswordLabelText","PasswordResetErrorComponent","passwordEntryMismatchError","PasswordResetButtonComponent","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","handleParagraphChange","signInDisclaimer","handleSignInHeadingChange","signInHeading","handleSignUpHeadingChange","signUpHeading","emailId","SA_FIELDS","AttributeFields","errorMessages","requiredField_email","requriedEmailError","requiredField_password","requriedPasswordError","invalid_email","invalidEmailError","invalid_password","invalidPasswordError","unknown_error","unknownError","signIn","SignInLoadingIconComponent","SignInLoadingMessageComponent","signInSection","signInSectionHeading","signInLocalAccount","emailAddressAriaLabel","passwordLabelText","forgetPassword","SignInLinkComponent","forgotPasswordButtonAriaLabel","forgotPasswordButtonText","disclaimer","SignInErrorComponent","signInButton","SignInButtonComponent","loginButtonAriaLabel","loginButtonText","signInSocialAccount","socialAccounts","_renderSocialAccount","facebookButtonText","facebookButtonAriaLabel","facebookIcon","microsoftButtonText","microsoftButtonAriaLabel","microsoftIcon","signInB2BAccount","_renderB2BSocialAccount","b2bButtonText","b2bButtonAriaLabel","displayB2bAccountManagerSignin","signUpSection","signUpSectionHeading","signUpDescription","SignInDescriptionComponent","signUpDescriptionText","signUpLink","signUpButtonAriaLabel","signUpButtonText","SignInLabelComponent","SignInInputComponent","iconImage","image","_createImageMarkup","SignInTextComponent","_displayB2bAccountManagerSignin","imageProps","pictureClassName","shouldSkipToMainImage","SignInLoading","_ref4","SocialAccount","B2BAccount","FormType","InputType","InputID","renderInputSection","inputs","asteriskAfterLabel","onInputChange","customClass","maxChars","isRequired","fieldReference","FormLabel","asteriskText","FormFieldError","FormInput","placeholder","BusinessOrganizationList","_this$props$config","BusinessFormDefaultInputs","businessUserFirstNameLabelText","businessUserLastNameLabelText","businessUserEmailAddressLabelText","SpendingLimit","businessUserSpendingLimitLabelText","delayFocus","formChildReference","userFormEditReference","userFormDeleteReference","_handleAddUserButtonClicked","newForm","formItems","newUser","B2BUserId","Random","Guid","generateGuid","isFormActive","formType","Add","referenceBack","addUserButtonReference","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","reload","trace","addOrganizationUser","AddOrganizationUserInput","businessUserActionRetailErrorMsg","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","lastName","possibleCell","dataCell","_handleDeleteIcon","displayedUserData","TableDataType","Price","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","_getCurrentUrl","reqContext","URL","_getViewport","device","Type","innerWidth","sm","md","lg","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_promoteToSeller","promoteToSellerUrl","_requestStatement","currentUser","_getB2BUserId","statementRequest","FromDate","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","BusinessPartnerUsersDataActions","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","_onSelectRow","records","selectedRow","rowProps","isSelected","row","_toggleModal","mobileExcludedColumns","_viewport","_updateViewport","submitButtonReference","addedReference","statementRequestMaxDateString","toISOString","businessUserSelectedUserDisplayName","addEventListener","componentWillUnmount","removeEventListener","_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","errorProps","OrganizationUserList","moduleContainer","addUserButton","noUsersText","modalState","organizationListTable","Table","_createTableProps","toggleModal","_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","showPagination","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserPaginationAriaLabel","columnSortAriaLabel","tableData","_createTableItems","headings","isMobile","sortable","rows","editLinkText","deleteLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","enableToModify","actionLinkText","showCheckBoxes","isSortable","resourcePrefix","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","nextText","paginationText","isSingleSelectOnly","tableAriaLabel","tableTabIndex","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","actions","onDelete","onView","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","StatusValue","FullName","buttonReferences","delete","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","modalClassName","modalHeading","modalDescription","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","FormButton","BusinessFormItem","BusinessUserForm","_renderModal","BusinessUserDetails","userFullName","headingSection","bodySection","footerSection","wrapClassName","autoFocus","fade","ButtonList","_getForm","formProps","FooterItem","handleTextChange","footerItemClassName","_createHeading","_createText","_createLinkText","EditableLink","_createLink","HeadingContainer","ItemContainer","Link","ariaHiddenAttr","loadFailureBehavior","FooterItemView","_renderElement","componentClassName","buttonClassName","buttonActiveClassName","buttonInactiveClassName","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorState","OrderHistoryWithSearchAndFiltersOrganizationWideSelectorComponent","createComponent","_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","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","viewport","_document","_document2","body","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","openGlyph","closeGlyph","glyphPlacement","isMobileView","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","preventDefault","cookies","isConsentGiven","cookieConfig","maxAge","set","defaultImageSettings","xl","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","tabIndex","siteRedirectUrl","siteName","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","SocialShare","socialShareItems","viewprops","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","SocialShareView","SocialShareElement","BusinessFormItemComponent","renderModal","BusinessUserFormComponent","BusinessUserDetailsComponent","buttonList","headingForEmptyUserOrganizationList","textForEmptyUserOrganizationList","getForm","buildReviewCard","isUserReview","cardProps","headerProps","rating","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","wasReviewHelpfulText","like","dislike","renderProductDescription","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","cropFocalRegion","renderProductImage","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","isFilterApplied","review","reviewModal","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","createReviewModal","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton"],"sourceRoot":""}