{"version":3,"file":"static/js/35.373e8136a5b8aac2b163.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/absolute-terms-conditions/components/absolute-terms-conditions.check-box.tsx?3776","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-terms-conditions/components/absolute-terms-conditions.error-message.tsx?4e5f","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-terms-conditions/components/absolute-terms-conditions.error-title.tsx?7d69","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-terms-conditions/absolute-terms-conditions.tsx?9580","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-terms-conditions/absolute-terms-conditions.view.tsx?4b6c","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/invoice-error-component.tsx?392e","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/invoices-filter-component.tsx?7a3c","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f77b","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/helpers/invoice-status.ts?38e1","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/pay-invoice-component.tsx?245b","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/helpers/pay-invoices.ts?87b6","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/request-invoice-button.tsx?95c8","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?152f","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/invoices-table/invoices-table-component.tsx?82f9","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/make-payment-component.tsx?0c69","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/components/request-invoice-modal.tsx?e137","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/helpers/invoice-data.ts?e274","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/connelly-invoices-list.tsx?cb7a","webpack://Msdyn365.Commerce.Online/./src/modules/connelly-invoices-list/connelly-invoices-list.view.tsx?9a51","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/./src/common/address-autosuggest.ts?f5a2","webpack://Msdyn365.Commerce.Online/./src/common/address-common.ts?cf4b","webpack://Msdyn365.Commerce.Online/./src/common/address-format.data.ts?6cbf","webpack://Msdyn365.Commerce.Online/./src/common/address-format.ts?4f04","webpack://Msdyn365.Commerce.Online/./src/common/address-meta-data.ts?c6e6","webpack://Msdyn365.Commerce.Online/./src/common/address-module.data.ts?697a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-checkbox.tsx?eb1a","webpack://Msdyn365.Commerce.Online/./src/common/components/address-add.tsx?e6a6","webpack://Msdyn365.Commerce.Online/./src/common/components/address-alert.tsx?10d1","webpack://Msdyn365.Commerce.Online/./src/common/components/address-button.tsx?7f7b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-detail-item.tsx?5209","webpack://Msdyn365.Commerce.Online/./src/common/components/address-dropdown.tsx?f24b","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-alert.tsx?bcde","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-message.tsx?89ad","webpack://Msdyn365.Commerce.Online/./src/common/components/address-error-title.tsx?3926","webpack://Msdyn365.Commerce.Online/./src/common/components/address-input.tsx?8073","webpack://Msdyn365.Commerce.Online/./src/common/components/address-label.tsx?6864","webpack://Msdyn365.Commerce.Online/./src/common/components/address-list.tsx?a628","webpack://Msdyn365.Commerce.Online/./src/common/components/address-select.tsx?c1df","webpack://Msdyn365.Commerce.Online/./src/common/components/address-show.tsx?3f60","webpack://Msdyn365.Commerce.Online/./src/modules/account-management-address/account-management-address.tsx?27e7","webpack://Msdyn365.Commerce.Online/./src/modules/account-management-address/account-management-address.view.tsx?8c9f","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.tsx?299e","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.view.tsx?5078","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-checkbox.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-heading.tsx?7bbd","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca"],"sourcesContent":["/*--------------------------------------------------------------\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\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\r\n isChecked: boolean;\r\n ariaLabel?: string;\r\n disabled: boolean;\r\n id?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.isChecked\r\n * @param root0.ariaLabel\r\n * @param root0.disabled\r\n * @param root0.telemetryContent\r\n * @param root0.onChange\r\n * @param root0.id\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\r\n isChecked,\r\n ariaLabel,\r\n disabled,\r\n telemetryContent,\r\n onChange,\r\n id\r\n}) => {\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, '');\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsCheckbox;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.message\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({\r\n message\r\n}) => {\r\n if (!message) {\r\n return null;\r\n }\r\n\r\n return (\r\n

\r\n {message}\r\n

\r\n );\r\n\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsErrorMessage;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\r\n title?: string;\r\n}\r\n\r\n/**\r\n * AddPaymentForm SFC.\r\n * @param root0\r\n * @param root0.title\r\n * @extends {React.FC}\r\n */\r\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({\r\n title\r\n}) => {\r\n if (!title) {\r\n return null;\r\n }\r\n\r\n return (\r\n

\r\n {title}\r\n

\r\n );\r\n\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsErrorTitle;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { action, computed, observable, reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteTermsConditionsData } from './absolute-terms-conditions.data';\r\nimport {\r\n IAbsoluteTermsConditionsProps\r\n} from './absolute-terms-conditions.props.autogenerated';\r\nimport CheckboxComponent from './components/absolute-terms-conditions.check-box';\r\nimport ErrorMessageComponent from './components/absolute-terms-conditions.error-message';\r\nimport ErrorTitleComponent from './components/absolute-terms-conditions.error-title';\r\n\r\nexport interface ICheckoutTermsAndConditionsModuleProps extends IAbsoluteTermsConditionsProps, IModuleStateProps { }\r\n\r\nexport interface ICheckoutTermsAndConditions {\r\n termsAndConditionAcceptance: INodeProps;\r\n checkBox: React.ReactNode;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsError {\r\n error: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsViewState {\r\n isError: boolean;\r\n isShowSaveButton: boolean;\r\n isShowEditButton: boolean;\r\n isShowCancelButton: boolean;\r\n}\r\n\r\nexport interface ICheckoutTermsAndConditionsViewProps extends IAbsoluteTermsConditionsProps<{}> {\r\n checkoutTermsAndConditions: IModuleProps;\r\n isTermsAccepted: boolean;\r\n errorMessageData: string;\r\n viewState: ICheckoutTermsAndConditionsViewState;\r\n termsAndConditionsContent: ICheckoutTermsAndConditions;\r\n errorMessage?: ICheckoutTermsAndConditionsError;\r\n saveButton?: React.ReactNode;\r\n editButton?: React.ReactNode;\r\n cancelButton?: React.ReactNode;\r\n onChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onEdit(): void;\r\n onCancel(): void;\r\n termsTitle?: React.ReactNode;\r\n termsContent?: string;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutTermsAndConditions component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutTermsAndConditions extends React.Component {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n @observable private isTermsAccepted: boolean = true;\r\n\r\n @observable private errorMessage?: string;\r\n\r\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n }\r\n\r\n @computed get isDataReady(): boolean {\r\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\r\n }\r\n\r\n @computed get isShowButtons(): boolean {\r\n const { showControlButtons } = this.props.config;\r\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\r\n }\r\n\r\n @computed get isAutoSave(): boolean {\r\n const { showControlButtons } = this.props.config;\r\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\r\n }\r\n\r\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\r\n const { showCheckbox } = this.props.config;\r\n return !showCheckbox;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n when(\r\n () => this.isDataReady,\r\n async () => {\r\n await this.init();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\r\n async () => {\r\n this.isTermsAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutTermsAndConditionsModuleProps,\r\n nextState: ICheckoutTermsAndConditionsViewState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n moduleState: { isReady, hasError },\r\n config: { className }\r\n } = this.props;\r\n\r\n const { \r\n termsTitle,\r\n termsContent\r\n } = this.props.config;\r\n\r\n\r\n const TermsTitle = termsTitle && (\r\n \r\n );\r\n\r\n const TermsContent = termsContent && (\r\n ${termsContent}

`}\r\n editProps={{ onEdit: this.handleParagraphChange1, requestContext: this.props.context.request }}\r\n />\r\n );\r\n\r\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\r\n const isError = hasError;\r\n const isShowContent = !isReady;\r\n const isShowSelected = !hasError && isReady;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n isTermsAccepted: this.isTermsAccepted,\r\n errorMessageData: this.errorMessage,\r\n viewState: {\r\n isError,\r\n isShowSaveButton: isShowContent && this.isShowButtons,\r\n isShowEditButton: isShowSelected && this.isShowButtons,\r\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\r\n },\r\n checkoutTermsAndConditions: {\r\n moduleProps: this.props,\r\n className: classname('ms-checkout-terms-and-conditions', className)\r\n },\r\n termsAndConditionsContent: this.getTermsAndConditions(),\r\n errorMessage: this.getErrorMessage(),\r\n saveButton: this.getSaveButton(),\r\n editButton: this.getEditButton(),\r\n cancelButton: this.getCancelButton(),\r\n onSave: this.onSubmit,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onChange: this.onChange,\r\n termsTitle: TermsTitle,\r\n termsContent: TermsContent,\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleTextChange1 = (event: MsDyn365.ContentEditableEvent) => this.props.config.termsTitle!.text = event.target.value;\r\n public handleParagraphChange1 = (event: MsDyn365.ContentEditableEvent) => this.props.config.termsContent! = event.target.value;\r\n\r\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.description = event.target.value;\r\n\r\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\r\n const {\r\n moduleState: { isReady },\r\n config: { showCheckbox, description }\r\n } = this.props;\r\n const isDisabled = isReady && !this.isAutoSave;\r\n const isTermsAndConditionAccepted = this.isTermsAccepted;\r\n const { checkboxAriaLabel } = this.props.resources;\r\n return {\r\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\r\n checkBox: showCheckbox && ,\r\n description: \r\n };\r\n };\r\n\r\n @action\r\n private readonly init = async (): Promise => {\r\n const {\r\n data,\r\n config: { showCheckbox }\r\n } = this.props;\r\n\r\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\r\n\r\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\r\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\r\n await this.updateTermsAndConditionsAcceptance(true);\r\n this.isTermsAccepted = true;\r\n } else if (showCheckbox) {\r\n await this.updateTermsAndConditionsAcceptance(false);\r\n this.isTermsAccepted = false;\r\n }\r\n\r\n this.props.moduleState.init({\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit,\r\n status: hasInvoiceLine ? 'disabled' : (this.isTermsAccepted ? 'ready' : 'updating')\r\n });\r\n };\r\n\r\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\r\n const { errorMessageTitle } = this.props.resources;\r\n return {\r\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\r\n title: ,\r\n message: \r\n };\r\n };\r\n\r\n private readonly getCancelButton = (): React.ReactNode => {\r\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {cancelBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getSaveButton = (): React.ReactNode => {\r\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {saveBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly getEditButton = (): React.ReactNode => {\r\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\r\n return (\r\n \r\n {editBtnLabel}\r\n \r\n );\r\n };\r\n\r\n private readonly onEdit = (): void => {\r\n this.onUpdating();\r\n };\r\n\r\n private readonly onSubmit = async (): Promise => {\r\n if (!this.isTermsAccepted) {\r\n if (this.isAutoSave) {\r\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\r\n } else {\r\n this.setError(this.props.resources.errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n }\r\n } else {\r\n this.clearError();\r\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly onUpdating = () => {\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n private readonly setError = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.errorMessage = errorMessage;\r\n };\r\n\r\n private readonly onCancel = (): void => {\r\n // Reset to the saved value\r\n if (!this.props.data.checkout.result) {\r\n return;\r\n }\r\n\r\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\r\n if (!isTermsAccepted) {\r\n // It has no saved email, set to status updating and request user to fill the email form\r\n this.props.moduleState.onUpdating();\r\n\r\n } else {\r\n // It has saved email, set to status ready\r\n this.isTermsAccepted = true;\r\n this.props.moduleState.setHasError(false);\r\n this.props.moduleState.onReady();\r\n }\r\n };\r\n\r\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\r\n if (this.props.data.checkout.result) {\r\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\r\n }\r\n };\r\n\r\n private readonly clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.errorMessage = undefined;\r\n };\r\n\r\n private readonly onChange = async (event: React.ChangeEvent) => {\r\n const checked = event.target.checked;\r\n this.isTermsAccepted = checked;\r\n\r\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\r\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\r\n }\r\n\r\n if (this.isAutoSave) {\r\n await this.onSubmit();\r\n }\r\n };\r\n\r\n}\r\n\r\nexport default CheckoutTermsAndConditions;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React, {useState} from 'react';\r\n\r\nimport { ICheckoutTermsAndConditions, ICheckoutTermsAndConditionsError, ICheckoutTermsAndConditionsViewProps } from './absolute-terms-conditions';\r\n\r\nimport { Modal, ModalHeader, ModalBody, Button } from 'reactstrap';\r\n\r\nconst TermsAndCondition: React.FC = ({\r\n termsAndConditionAcceptance,\r\n checkBox,\r\n description\r\n}) => {\r\n\r\n return (\r\n \r\n {checkBox}\r\n {description}\r\n \r\n );\r\n};\r\n\r\nconst ErrorMessage: React.FC = ({\r\n error,\r\n title,\r\n message\r\n}) => {\r\n\r\n return (\r\n \r\n {title}\r\n {message}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutTermsAndConditionsView: React.FC = props => {\r\n const {\r\n checkoutTermsAndConditions,\r\n viewState,\r\n termsAndConditionsContent,\r\n errorMessage,\r\n saveButton,\r\n editButton,\r\n cancelButton,\r\n termsTitle, \r\n termsContent\r\n } = props;\r\n const [modal, setModal] = useState(false);\r\n const toggle = () => setModal(!modal);\r\n\r\n return (\r\n\r\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\r\n \r\n {viewState.isError && errorMessage && }\r\n \r\n \r\n \r\n {termsTitle}\r\n \r\n
\r\n {termsContent}\r\n
\r\n
\r\n
\r\n {viewState.isShowSaveButton && saveButton}\r\n {viewState.isShowEditButton && editButton}\r\n {viewState.isShowCancelButton && cancelButton}\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutTermsAndConditionsView;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nexport interface IInvoiceErrorProps extends IComponentProps {\r\n messageHeader?: string;\r\n errorMessage?: string;\r\n otherError?: string;\r\n showError: boolean;\r\n payInvoiceErrorModalOpen: boolean;\r\n\r\n errorDialogHeader: string;\r\n errorDialogBodyErrorTitle: string;\r\n errorDialogBodyErrorDescription: string;\r\n errorDialogFooterGoToCartButtonText: string;\r\n errorDialogFooterCancelButtonText: string;\r\n cartUrl: string;\r\n\r\n setPayInvoiceErrorModalClose(): void;\r\n}\r\n\r\nexport interface IInvoiceErrorComponent extends IComponent {\r\n}\r\n\r\nexport const InvoiceError: React.FC = ({ messageHeader, errorMessage, otherError, showError, payInvoiceErrorModalOpen, errorDialogHeader, errorDialogBodyErrorTitle, errorDialogBodyErrorDescription,\r\n errorDialogFooterGoToCartButtonText, errorDialogFooterCancelButtonText, cartUrl, setPayInvoiceErrorModalClose }) => {\r\n const errorMessages: (string | undefined)[] = [];\r\n\r\n if (otherError) {\r\n errorMessages.push(otherError);\r\n } else {\r\n errorMessages.push(errorMessage);\r\n }\r\n\r\n const className = 'msc-pay-invoice-error-dialog';\r\n\r\n return (\r\n <>\r\n 0} color='danger' assertive\r\n aria-label={messageHeader} >\r\n \r\n {errorMessages.map((message, index) => {\r\n return (\r\n
\r\n {message}\r\n
\r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n {errorDialogHeader}\r\n \r\n \r\n \r\n
\r\n
\r\n {errorDialogBodyErrorTitle}\r\n
\r\n
\r\n {errorDialogBodyErrorDescription}\r\n
\r\n
\r\n
\r\n \r\n \r\n {errorDialogFooterGoToCartButtonText}\r\n \r\n \r\n {errorDialogFooterCancelButtonText}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'InvoiceError',\r\n { component: InvoiceError }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\r\n\r\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\r\n invoicesFilterShowAll: string;\r\n}\r\n\r\nexport interface IInvoicesFilterProps extends IComponentProps {\r\n className: string;\r\n disabled: boolean;\r\n\r\n resources: IInvoicesFilterResources;\r\n\r\n currentState: InvoicesFilterState;\r\n onFilterStateChanged(state: InvoicesFilterState): void;\r\n}\r\n\r\nexport enum InvoicesFilterState {\r\n ShowAll,\r\n Paid,\r\n PartiallyPaid,\r\n Unpaid\r\n}\r\n\r\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\r\n switch (filterState) {\r\n case InvoicesFilterState.ShowAll:\r\n return resources.invoicesFilterShowAll;\r\n case InvoicesFilterState.Paid:\r\n return resources.invoiceStatusPaid;\r\n case InvoicesFilterState.PartiallyPaid:\r\n return resources.invoiceStatusPartiallyPaid;\r\n case InvoicesFilterState.Unpaid:\r\n return resources.invoiceStatusUnpaid;\r\n default:\r\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\r\n }\r\n};\r\n\r\n/**\r\n * On Click function.\r\n * @param onStateClick -Invoice filter state function.\r\n * @param filterState -Invoice filter state.\r\n * @returns Set Invoice filter state.\r\n */\r\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\r\n onStateClick(filterState);\r\n};\r\n\r\nconst renderFilterStateItem = (\r\n filterState: InvoicesFilterState,\r\n resources: IInvoicesFilterResources,\r\n className: string,\r\n onStateClick: (filterState: InvoicesFilterState) => void): React.ReactNode => {\r\n\r\n const stateStringRepresentation = InvoicesFilterState[filterState];\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\r\n const popoverRef = React.createRef();\r\n const [popoverState, setPopoverState] = React.useState(false);\r\n const togglePopover = React.useCallback(() => {\r\n setPopoverState(!popoverState);\r\n }, [popoverState]);\r\n\r\n const [filterState, setFilterState] = React.useState(props.currentState);\r\n\r\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\r\n setFilterState(clickedState);\r\n setPopoverState(false);\r\n props.onFilterStateChanged(clickedState);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {getInvoicesFilterStateResources(filterState, props.resources)}\r\n \r\n \r\n {\r\n EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\r\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\r\n })\r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'InvoicesFilterComponent',\r\n { component: InvoicesFilter }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nexport interface IInvoicesTableHeaderResources {\r\n invoicesText: string;\r\n invoiceNumberText: string;\r\n invoiceDateMobileText: string;\r\n invoiceDateText: string;\r\n invoiceUsersText: string;\r\n invoiceAmountText: string;\r\n invoiceDueDateText: string;\r\n invoiceAmountDueText: string;\r\n invoiceStatusText: string;\r\n invoiceActionsText: string;\r\n invoiceListSelectAllRadioAriaLabelText: string;\r\n}\r\n\r\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n\r\n isSelectedAll: boolean;\r\n isMobile: boolean;\r\n isAdmin: boolean;\r\n\r\n resources: IInvoicesTableHeaderResources;\r\n\r\n onSelectAll(isSelected: boolean): void;\r\n}\r\n\r\nexport interface IInvoicesTableHeaderComponent extends IComponent {\r\n}\r\n\r\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\r\n const { resources } = props;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {resources.invoiceNumberText}\r\n \r\n \r\n {resources.invoiceDateText}\r\n \r\n { props.isAdmin ? \r\n {resources.invoiceUsersText}\r\n : null }\r\n \r\n {resources.invoiceAmountText}\r\n \r\n \r\n {resources.invoiceDueDateText}\r\n \r\n \r\n {resources.invoiceAmountDueText}\r\n \r\n \r\n {resources.invoiceStatusText}\r\n \r\n \r\n {resources.invoiceActionsText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\r\n const { resources } = props;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {resources.invoicesText}\r\n \r\n \r\n {resources.invoiceDateMobileText}\r\n \r\n \r\n {' '}\r\n {/* Actions */}\r\n \r\n );\r\n};\r\n\r\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\r\n const rowClassName = `${props.className}__row`;\r\n\r\n const switchCheckedState = () => {\r\n props.onSelectAll(!props.isSelectedAll);\r\n };\r\n\r\n let headerCells: JSX.Element;\r\n if (props.isMobile) {\r\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\r\n } else {\r\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\r\n }\r\n\r\n return (\r\n \r\n \r\n {headerCells}\r\n \r\n \r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'InvoicesTableHeaderComponent',\r\n { component: InvoicesTableHeader }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface IInvoiceStatusResources {\r\n invoiceStatusNone: string;\r\n invoiceStatusUnpaid: string;\r\n invoiceStatusPartiallyPaid: string;\r\n invoiceStatusPaid: string;\r\n}\r\n\r\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\r\n switch (invoiceStatus) {\r\n\r\n case InvoicePaidStatus.None:\r\n return resources.invoiceStatusNone;\r\n\r\n case InvoicePaidStatus.Unpaid:\r\n return resources.invoiceStatusUnpaid;\r\n\r\n case InvoicePaidStatus.PartiallyPaid:\r\n return resources.invoiceStatusPartiallyPaid;\r\n\r\n case InvoicePaidStatus.Paid:\r\n return resources.invoiceStatusPaid;\r\n default:\r\n return '';\r\n }\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\r\n//import { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IPayableInvoice } from '../helpers/invoice-data';\r\nimport { payInvoices } from '../helpers/pay-invoices';\r\nimport { IInvoiceErrorState } from '../connelly-invoices-list';\r\n\r\nimport { Modal, ModalHeader, ModalBody, Button } from 'reactstrap';\r\n\r\n\r\nexport interface IPayInvoiceData {\r\n invoice: IPayableInvoice;\r\n}\r\n\r\nexport interface IPayInvoiceResources {\r\n payInvoiceButtonText: string;\r\n payInvoiceButtonAriaLabel: string;\r\n}\r\n\r\nexport interface IPayInvoiceProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n reference?: React.RefObject;\r\n resources: IPayInvoiceResources;\r\n\r\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\r\n}\r\n\r\ninterface IPayInvoiceComponent extends IComponent {\r\n}\r\n\r\nconst onClick = async (_event: React.MouseEvent, props: IPayInvoiceProps, setDisabled: (disabled: boolean) => void): Promise => {\r\n setDisabled(true);\r\n\r\n const propagateError = (errorState: IInvoiceErrorState): void => {\r\n if (props.onError) {\r\n props.onError(errorState, props.reference);\r\n }\r\n setDisabled(false);\r\n };\r\n\r\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\r\n};\r\n\r\nconst PayInvoiceComponentActions = {\r\n onClick\r\n};\r\n\r\n/**\r\n * On click handler function.\r\n * @param props -Invoice props.\r\n * @param setDisabled -Set disabled.\r\n * @returns Pay invoice component action.\r\n */\r\n// const onClickHandler = (props: IPayInvoiceProps,\r\n// setDisabled: React.Dispatch>) => async (event: React.MouseEvent) => {\r\n// await PayInvoiceComponentActions.onClick(event, props, setDisabled);\r\n// };\r\n\r\n\r\n\r\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\r\n // const [disabled, setDisabled] = useState(false);\r\n\r\n const [modal, setModal] = useState(false);\r\n const toggle = () => setModal(!modal);\r\n\r\n\r\n return (\r\n <>\r\n \r\n \r\n How to make a payment\r\n \r\n
\r\n

To make payments via ACH or WIRE use the bank account and routing information below. \r\n PLEASE NOTE: Separate methods for USA/international dealers and Canadian dealers.

\r\n

To pay by credit card call (425) 775-5416 extension 3.

\r\n

FOR USA AND INTERNATIONAL BASED DEALERS
\r\n Account Name: Connelly Skis LLC
\r\n Account Type: Checking
\r\n Account Number: 01020320675
\r\n Huntington ACH Routing Number: 041215032
\r\n Huntington Wire Routing Number: 044000024
\r\n Route Wires to: Huntington National Bank 7 Easton Oval (EA2W47) Columbus, OH 43219
\r\n If International, Huntington SWIFT Code: HUNTUS33\r\n

\r\n

\r\n FOR CANADA BASED DEALERS
\r\n BANK: Royal Bank of Canada
\r\n LOCATION: Toronto, Ontario, Canada
\r\n SWIFT: ROYCCAT2
\r\n CURRENCY TYPE: CAD
\r\n ACCOUNT NAME: Huntbk Connelly Skis, LLC
\r\n ACCOUNT NUMBER/IBAN: 1000363
\r\n TRANSIT NUMBER: 01596
\r\n FINANCIAL INSTITTUTION NUMBER: 003 \r\n

\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'PayInvoiceComponent',\r\n { component: PayInvoice, ...PayInvoiceComponentActions }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport { IInvoiceErrorState } from '../connelly-invoices-list';\r\nimport { IPayableInvoice } from './invoice-data';\r\n\r\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\r\nexport interface IAddInvoicesToCartFailureResult {\r\n failureReason: ICartActionFailureReason;\r\n}\r\n\r\nexport const payInvoices = async (invoices: IPayableInvoice[], actionContext: IActionContext, onError: (errorState: IInvoiceErrorState) => void) => {\r\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\r\n\r\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\r\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } }); return;\r\n }\r\n\r\n const cartState = await getCartState(actionContext);\r\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\r\n\r\n if (result.status !== 'SUCCESS') {\r\n onError({\r\n errorMessage: '',\r\n errorReason: { failureReason: 'CARTACTIONFAILED' },\r\n otherError: result.errorDetails?.LocalizedMessage,\r\n errorCode: result.errorDetails?.ErrorResourceId\r\n }); return;\r\n }\r\n\r\n const cartUrl = getUrlSync('cart', actionContext);\r\n if (cartUrl) {\r\n window?.location.assign(cartUrl);\r\n }\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\ninterface IRequestInvoiceButtonProps {\r\n innerReference?: React.RefObject;\r\n className: string;\r\n requestInvoiceButtonLabel: string;\r\n onClicked(): void;\r\n\r\n}\r\n\r\nexport const RequestInvoiceButton: React.FC = ({ className, onClicked, requestInvoiceButtonLabel, innerReference }) => {\r\n return (\r\n \r\n );\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { InvoiceModel } from '../../../helpers/invoice-data';\r\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\r\nimport { IInvoiceErrorState } from '../../../connelly-invoices-list';\r\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\r\nimport { RequestInvoiceButton } from '../../request-invoice-button';\r\n\r\ninterface IInvoicesTableRowData {\r\n invoice: InvoiceModel;\r\n index: number;\r\n customer: Customer;\r\n}\r\n\r\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\r\n invoiceCurrentUser: string;\r\n invoiceViewDetailsButtonText: string;\r\n invoiceViewDetailsButtonAriaLabel: string;\r\n invoiceActionsButtonTextAriaLabel?: string;\r\n invoiceRequestButtonLabel: string;\r\n invoiceListSelectRadioAriaLabelText: string;\r\n}\r\n\r\nexport interface IInvoicesTableRowProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n isMobile: boolean;\r\n invoiceReferences?: React.RefObject;\r\n payInvoiceReferences?: React.RefObject;\r\n resources: IInvoicesTableRowResources;\r\n\r\n onChange(): void;\r\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\r\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\r\n}\r\n\r\nexport interface IInvoicesTableRowComponent extends IComponent {\r\n\r\n}\r\n\r\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\r\n if (amount === undefined) {\r\n return '';\r\n }\r\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\r\n};\r\n\r\nconst 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: 'long', day: 'numeric' };\r\n return context.cultureFormatter.formatDate(date, dateOptions);\r\n};\r\n\r\n/**\r\n * Request specific invoice function.\r\n * @param props -Invoice table row props.\r\n * @param requestInvoiceButtonReference -Reference button.\r\n * @returns Call Request Invoice.\r\n */\r\nconst onRequestSpecificInvoice = (props: IInvoicesTableRowProps, requestInvoiceButtonReference: React.RefObject) => () => {\r\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\r\n};\r\n\r\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\r\n const { data: { invoice, index, customer } } = props;\r\n\r\n const isCurrentUser = !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\r\n const payInvoiceClassName = `${props.className}__pay-invoice`;\r\n\r\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\r\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\r\n const requestInvoiceButtonReference: React.RefObject = React.createRef();\r\n const payInvoiceButtonReference: React.RefObject = React.createRef();\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {invoice.id}\r\n \r\n \r\n \r\n \r\n {formatDate(props.context, invoice.invoiceDate)}\r\n \r\n \r\n { customer.IsB2bAdmin ? \r\n {invoice.customerName}\r\n { isCurrentUser ? \r\n {props.resources.invoiceCurrentUser}\r\n : null}\r\n : null }\r\n \r\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\r\n \r\n \r\n \r\n {formatDate(props.context, invoice.dueDate)}\r\n \r\n \r\n \r\n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\r\n \r\n \r\n \r\n {getInvoiceStatusText(props.resources, invoice.status)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nlet setShowPreviousActions: React.Dispatch> | undefined;\r\n\r\n/**\r\n * On Click view details function.\r\n * @param linkToInvoiceDetails -Link to invoice details.\r\n * @returns Go to invoice details.\r\n */\r\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\r\n if (MsDyn365.isBrowser) {\r\n window.location.href = linkToInvoiceDetails;\r\n }\r\n return;\r\n};\r\n\r\n/**\r\n * Toggle function.\r\n * @param isShowActions -Link to invoice details.\r\n * @param setShowActions -Link to invoice details.\r\n * @returns Go to invoice details.\r\n */\r\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\r\n const shouldShowActions = !isShowActions;\r\n if (shouldShowActions) {\r\n if (setShowPreviousActions) {\r\n setShowPreviousActions(false);\r\n }\r\n setShowActions(shouldShowActions);\r\n setShowPreviousActions = setShowActions;\r\n } else {\r\n setShowPreviousActions = undefined;\r\n setShowActions(shouldShowActions);\r\n }\r\n};\r\n\r\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\r\n const { resources: { invoiceViewDetailsButtonAriaLabel, invoiceViewDetailsButtonText, invoiceActionsButtonTextAriaLabel }, data: { index } } = props;\r\n\r\n const [showActions, setShowActions] = useState(false);\r\n\r\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\r\n\r\n const className = `${props.className}__extra-actions-cell`;\r\n const actionsContainerClassName = `${className}__actions-container`;\r\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n \r\n );\r\n};\r\n\r\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\r\n const { data: { invoice } } = props;\r\n\r\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\r\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {invoice.id}\r\n \r\n
\r\n \r\n {invoice.customerName}\r\n \r\n \r\n \r\n \r\n {formatDate(props.context, invoice.dueDate)}\r\n \r\n
\r\n \r\n {getInvoiceStatusText(props.resources, invoice.status)}\r\n \r\n \r\n \r\n {extraActionsPopup(props)}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\r\n const { data: { invoice } } = props;\r\n\r\n const onSelectLine = () => {\r\n invoice.isSelected = !invoice.isSelected;\r\n props.onChange();\r\n };\r\n\r\n let rowCells: JSX.Element;\r\n if (props.isMobile) {\r\n rowCells = getMobileRowCells(props, onSelectLine);\r\n } else {\r\n rowCells = getDesktopRowCells(props, onSelectLine);\r\n }\r\n\r\n return (\r\n \r\n {rowCells}\r\n \r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'InvoicesTableRowComponent',\r\n { component: InvoicesTableRow }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport React, { useState } from 'react';\r\n\r\nimport { InvoiceModel } from '../../helpers/invoice-data';\r\nimport { IInvoiceErrorState } from '../../connelly-invoices-list';\r\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\r\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\r\n\r\ninterface IInvoicesTableData {\r\n invoices: InvoiceModel[];\r\n customer: Customer;\r\n}\r\n\r\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {\r\n}\r\n\r\nexport interface IInvoicesTableProps extends IComponentProps {\r\n context: ICoreContext;\r\n className: string;\r\n invoiceButtonReferences?: React.RefObject[];\r\n payInvoiceButtonReferences?: React.RefObject[];\r\n resources: IInvoicesTableResources;\r\n\r\n onChange(): void;\r\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\r\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\r\n}\r\n\r\nexport interface IInvoicesTableComponent extends IComponent {\r\n}\r\n\r\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nconst getViewport = (context: ICoreContext): GridSize => {\r\n // Always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (window?.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n\r\n }\r\n }\r\n\r\n return 'xs';\r\n};\r\n\r\nconst isMobileView = (context: ICoreContext) => {\r\n const viewport = getViewport(context);\r\n return viewport === 'xs' || viewport === 'sm';\r\n};\r\n\r\n/**\r\n * On select all function.\r\n * @param props -Invoice table props.\r\n * @returns On change.\r\n */\r\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\r\n props.data.invoices.forEach((invoice) => {\r\n invoice.isSelected = isSelected;\r\n });\r\n props.onChange();\r\n};\r\n\r\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\r\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\r\n\r\n const updateViewport = () => {\r\n setIsMobile(isMobileView(props.context));\r\n };\r\n\r\n if (typeof window !== undefined && window.addEventListener) {\r\n window.addEventListener('resize', updateViewport);\r\n }\r\n const rowClassName = `${props.className}__row`;\r\n const headerClassName = `${props.className}__header`;\r\n\r\n\r\n // Nick's attempt at sorting\r\n\r\n \r\n\r\n return (\r\n \r\n invoice.isSelected)}\r\n isMobile={isMobile}\r\n isAdmin={props.data.customer.IsB2bAdmin || false}\r\n onSelectAll={onSelectAllHandler(props)}\r\n resources={props.resources}\r\n data={{}}\r\n />\r\n {\r\n props.data.invoices.map((invoice, index: number) => {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n
\r\n );\r\n};\r\n\r\n// @ts-expect-error\r\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'InvoicesTableComponent',\r\n { component: InvoicesTable }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\r\n//import { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\r\n\r\nimport { InvoiceModel } from '../helpers/invoice-data';\r\n//import { payInvoices } from '../helpers/pay-invoices';\r\nimport { IInvoiceErrorState } from '../connelly-invoices-list';\r\n\r\nimport { Modal, ModalHeader, ModalBody, Button } from 'reactstrap';\r\n\r\n\r\ninterface IMakePaymentData {\r\n invoices: InvoiceModel[];\r\n}\r\n\r\nexport interface IMakePaymentResources {\r\n makePaymentButtonText: string;\r\n makePaymentButtonAriaLabel: string;\r\n}\r\n\r\nexport interface IMakePaymentProps extends IComponentProps {\r\n context: ICoreContext;\r\n itemKey?: string;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n telemetryContent?: ITelemetryContent;\r\n navigationUrl?: string;\r\n buttonReferences?: React.RefObject;\r\n resources: IMakePaymentResources;\r\n\r\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\r\n}\r\n\r\nexport interface IMakePaymentComponent extends IComponent {\r\n}\r\n\r\n// const onClick = async (_event: React.MouseEvent, props: IMakePaymentProps, setDisabled: (disabled: boolean) => void): Promise => {\r\n// setDisabled(true);\r\n\r\n// const propagateError = (errorState: IInvoiceErrorState): void => {\r\n// if (props.onError) {\r\n// props.onError(errorState, props.buttonReferences);\r\n// }\r\n// setDisabled(false);\r\n// };\r\n\r\n// await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\r\n// };\r\n\r\n// const MakePaymentComponentActions = {\r\n// onClick\r\n// };\r\n\r\n/**\r\n * On Click function.\r\n * @param input -Make payment props.\r\n * @param setDisabled -Set Disabled.\r\n * @returns Make payment component on click.\r\n */\r\n// const onClickHandler = (input: IMakePaymentProps,\r\n// setDisabled: React.Dispatch>) => async (event: React.MouseEvent) => {\r\n// await MakePaymentComponentActions.onClick(event, input, setDisabled);\r\n// };\r\n\r\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\r\n //const { data: { invoices } } = input;\r\n // const hasInvoices = ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid));\r\n // const [disabled, setDisabled] = useState(false);\r\n\r\n\r\n const [modal, setModal] = useState(false);\r\n const toggle = () => setModal(!modal);\r\n\r\n\r\n \r\n\r\n return (\r\n <>\r\n \r\n \r\n How to make a payment\r\n \r\n
\r\n

To make payments via ACH or WIRE use the bank account and routing information below. \r\n PLEASE NOTE: Separate methods for USA/international dealers and Canadian dealers.

\r\n

To pay by credit card call (425) 775-5416 extension 3.

\r\n

FOR USA AND INTERNATIONAL BASED DEALERS
\r\n Account Name: Connelly Skis LLC
\r\n Account Type: Checking
\r\n Account Number: 01020320675
\r\n Huntington ACH Routing Number: 041215032
\r\n Huntington Wire Routing Number: 044000024
\r\n Route Wires to: Huntington National Bank 7 Easton Oval (EA2W47) Columbus, OH 43219
\r\n If International, Huntington SWIFT Code: HUNTUS33\r\n

\r\n

\r\n FOR CANADA BASED DEALERS
\r\n BANK: Royal Bank of Canada
\r\n LOCATION: Toronto, Ontario, Canada
\r\n SWIFT: ROYCCAT2
\r\n CURRENCY TYPE: CAD
\r\n ACCOUNT NAME: Huntbk Connelly Skis, LLC
\r\n ACCOUNT NUMBER/IBAN: 1000363
\r\n TRANSIT NUMBER: 01596
\r\n FINANCIAL INSTITTUTION NUMBER: 003 \r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n );\r\n\r\n};\r\n\r\n// @ts-expect-error\r\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'MakePayment',\r\n { component: MakePayment }\r\n);\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\n/* eslint-disable no-duplicate-imports */\r\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { InvoiceModel } from '../helpers/invoice-data';\r\nimport { IConnellyInvoicesListResources } from '../connelly-invoices-list.props.autogenerated';\r\n\r\ninterface IRequestInvoiceModalProps {\r\n className: string;\r\n email: string;\r\n isModalOpen: boolean;\r\n submitRequestLabel: string;\r\n modalHeaderLabel: string;\r\n sendToEmailLabel: string;\r\n cancelLabel: string;\r\n searchPlaceholderLabel: string;\r\n invoices: InvoiceModel[];\r\n invoicesFoundString: string;\r\n singleInvoiceFoundString: string;\r\n searchButtonAltText: string;\r\n resources: IConnellyInvoicesListResources;\r\n toggle(): void;\r\n onSubmitRequest(invoiceId: string): void;\r\n}\r\n\r\n/**\r\n * On submit request click function.\r\n * @param selectedInvoiceIndex -Check is busy.\r\n * @param onClosing -On closing function.\r\n * @param filteredInvoices -Invoice modal.\r\n * @param onSubmitRequest -On submit request function.\r\n * @returns Call on submit request.\r\n */\r\nconst onSubmitRequestClick = (selectedInvoiceIndex: number, onClosing: () => void,\r\n filteredInvoices: InvoiceModel[], onSubmitRequest: (invoiceId: string) => void) => () => {\r\n const defaultIndex = 0;\r\n if (selectedInvoiceIndex >= defaultIndex) {\r\n onClosing();\r\n onSubmitRequest(filteredInvoices[selectedInvoiceIndex].id);\r\n }\r\n};\r\n\r\n/**\r\n * On search input change function.\r\n * @param setSearchInput -Set search input.\r\n * @returns Set search input function.\r\n */\r\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (event: React.ChangeEvent) => {\r\n setSearchInput(event.target.value);\r\n};\r\n\r\n/**\r\n * Search entered handler.\r\n * @param invoices -InvoiceModel.\r\n * @param searchInput -String.\r\n * @param setFilteredInvoices -InvoiceModel action.\r\n * @param filteredInvoices -Filtered Invoices.\r\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\r\n * @param setShouldShowSearchResults -Show search result action.\r\n * @param setInvoiceOptions -Invoice options action.\r\n * @param selectedInvoiceIndex -Selected invoice index.\r\n * @param className -String.\r\n * @returns Set invoice options.\r\n */\r\nconst searchEnteredHandler = (invoices: InvoiceModel[], searchInput: string,\r\n setFilteredInvoices: React.Dispatch>,\r\n filteredInvoices: InvoiceModel[],\r\n setSelectedInvoiceIndex: React.Dispatch>,\r\n setShouldShowSearchResults: React.Dispatch>,\r\n setInvoiceOptions: React.Dispatch>,\r\n selectedInvoiceIndex: number,\r\n className: string) => () => {\r\n let updatedInvoices = filteredInvoices;\r\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\r\n updatedInvoices = invoices.filter((invoice) => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\r\n }\r\n\r\n setFilteredInvoices(updatedInvoices);\r\n\r\n if (ArrayExtensions.hasElements(updatedInvoices)) {\r\n setSelectedInvoiceIndex(0);\r\n } else {\r\n setSelectedInvoiceIndex(-1);\r\n }\r\n setShouldShowSearchResults(true);\r\n\r\n setInvoiceOptions(renderInvoiceOptions(updatedInvoices, setSelectedInvoiceIndex, className, selectedInvoiceIndex));\r\n};\r\n\r\n/**\r\n * On cancel function.\r\n * @param onClosing -Closing function.\r\n * @param toggle -Toggle Function.\r\n * @returns Toggle function.\r\n */\r\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\r\n onClosing();\r\n toggle();\r\n};\r\n\r\n/**\r\n * On invoice select.\r\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\r\n * @param index -Number.\r\n * @returns Set Selected Invoice Index.\r\n */\r\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\r\n setSelectedInvoiceIndex(index);\r\n};\r\n\r\nconst renderInvoiceOptions = (filteredInvoices: InvoiceModel[], setSelectedInvoiceIndex: (newIndex: number) => void, className: string, selectedInvoiceIndex: number) => {\r\n return (\r\n
\r\n {filteredInvoices.map((invoice, index) => {\r\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\r\n\r\n const radioButtonId = `invoice__${invoice.id}`;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport const RequestInvoiceModal: React.FC = ({ className, email, isModalOpen, toggle, modalHeaderLabel, sendToEmailLabel, submitRequestLabel, cancelLabel, onSubmitRequest, invoices, searchPlaceholderLabel,\r\n invoicesFoundString, singleInvoiceFoundString, searchButtonAltText, resources }) => {\r\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\r\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\r\n const [searchInput, setSearchInput] = React.useState('');\r\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\r\n const focusDelay = 110;\r\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, selectedInvoiceIndex);\r\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\r\n const focusElement = React.useRef(null);\r\n React.useEffect(() => {\r\n if (isModalOpen && focusElement.current) {\r\n setTimeout(() => {\r\n focusElement.current?.focus();\r\n }, focusDelay);\r\n }\r\n }, [isModalOpen]);\r\n\r\n /**\r\n * Sets the filtered invoices to the ones that were selected on the main screen.\r\n */\r\n const setFilteredInvoicesToSelectedInvoices = () => {\r\n setSelectedInvoiceIndex(-1);\r\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\r\n if (ArrayExtensions.hasElements(selectedInvoices)) {\r\n setFilteredInvoices(selectedInvoices);\r\n\r\n // If only one invoice selected, auto select it\r\n if (selectedInvoices.length === 1) {\r\n setSelectedInvoiceIndex(0);\r\n }\r\n\r\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, 0));\r\n } else {\r\n setFilteredInvoices(invoices);\r\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, selectedInvoiceIndex));\r\n }\r\n };\r\n\r\n const searchEntered = searchEnteredHandler(invoices,\r\n searchInput, setFilteredInvoices, filteredInvoices,\r\n setSelectedInvoiceIndex, setShouldShowSearchResults,\r\n setInvoiceOptions, selectedInvoiceIndex, className);\r\n\r\n const onClosing = () => {\r\n setSelectedInvoiceIndex(-1);\r\n setFilteredInvoices(invoices);\r\n setSearchInput('');\r\n setShouldShowSearchResults(false);\r\n };\r\n\r\n /**\r\n * Sets the invoices that are possible to select when the dialog is opened.\r\n */\r\n function onOpened() {\r\n setSearchInput('');\r\n setFilteredInvoicesToSelectedInvoices();\r\n }\r\n\r\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\r\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\r\n\r\n return (\r\n \r\n \r\n {modalHeaderLabel}\r\n \r\n \r\n
\r\n \r\n
\r\n {email}\r\n
\r\n
\r\n {shouldShowSearchResults &&\r\n
\r\n \r\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\r\n \r\n \r\n {filteredInvoices.length}\r\n \r\n \r\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\r\n \r\n
}\r\n
\r\n \r\n
\r\n {invoiceOptions}\r\n
\r\n
\r\n
\r\n \r\n \r\n {submitRequestLabel}\r\n \r\n \r\n \r\n \r\n );\r\n};\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\n/* eslint-disable no-duplicate-imports */\r\nimport { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface IPayableInvoice {\r\n readonly id: string;\r\n readonly canBePaid: boolean;\r\n}\r\n\r\n/**\r\n * Represents invoice data model.\r\n */\r\nexport class InvoiceModel implements IPayableInvoice {\r\n public id: string;\r\n\r\n public invoiceDate?: Date;\r\n\r\n public customerAccountNumber?: string;\r\n\r\n public customerName?: string;\r\n\r\n public amount?: number;\r\n\r\n public dueDate?: Date;\r\n\r\n public amountDue?: number;\r\n\r\n public status?: InvoicePaidStatus;\r\n\r\n public currencyCode?: string;\r\n\r\n public isSelected: boolean;\r\n\r\n public constructor(invoice: OrderInvoice) {\r\n this.id = invoice.Id || '';\r\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\r\n this.customerAccountNumber = invoice.CustomerAccountNumber;\r\n this.customerName = invoice.CustomerName;\r\n this.amount = invoice.TotalAmount;\r\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\r\n this.amountDue = invoice.AmountBalance;\r\n this.status = invoice.InvoicePaidStatusValue;\r\n this.currencyCode = invoice.CurrencyCode;\r\n\r\n this.isSelected = false;\r\n }\r\n\r\n public get canBePaid(): boolean {\r\n return (this.status !== InvoicePaidStatus.Paid);\r\n }\r\n}\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\n/* eslint-disable no-duplicate-imports */\r\nimport { getUrlSync } from '@msdyn365-commerce/core';\r\nimport { BusinessPartnerOperationDeliveryType, BusinessPartnerUsersDataActions, InvoicePaidStatus, InvoiceSearchCriteria, IQueryResultSettings, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\r\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\r\nimport { ArrayExtensions, getCustomer, GetCustomerInput, getInvoices, GetInvoicesInput, IQueryResultSettingsModuleConfig, QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\r\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\r\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\r\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\r\nimport { RequestInvoiceButton } from './components/request-invoice-button';\r\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\r\nimport { InvoiceModel } from './helpers/invoice-data';\r\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\r\nimport { IConnellyInvoicesListData } from './connelly-invoices-list.data';\r\nimport { IConnellyInvoicesListProps } from './connelly-invoices-list.props.autogenerated';\r\n\r\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\r\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\r\n\r\nexport interface IInvoicesListViewProps extends IConnellyInvoicesListProps {\r\n moduleProps: IModuleProps;\r\n\r\n header: JSX.Element;\r\n filter: JSX.Element;\r\n content?: JSX.Element;\r\n invoiceRequestModal?: JSX.Element;\r\n pagination?: JSX.Element;\r\n}\r\n\r\nexport interface IInvoiceErrorState {\r\n errorHost?: InvoiceErrorHost;\r\n errorReason?: IAddInvoicesToCartFailureResult;\r\n errorMessage: string;\r\n otherError?: string;\r\n errorCode?: string;\r\n}\r\n\r\nexport interface IInvoicesListState {\r\n invoices: InvoiceModel[];\r\n invoicesFilterState: InvoicesFilterState;\r\n errorState: IInvoiceErrorState;\r\n isInvoiceRequestModalOpen: boolean;\r\n isLoading: boolean;\r\n isPageLoaded: boolean;\r\n payInvoiceErrorModalOpen: boolean;\r\n selectedButtonElement?: HTMLButtonElement | null;\r\n}\r\n\r\n/**\r\n * InvoicesList component.\r\n * @extends {React.Component, IInvoicesListState>}\r\n */\r\nclass InvoicesList extends React.Component, IInvoicesListState> {\r\n private readonly _className: string = 'msc-invoices-list';\r\n\r\n private readonly payInvoiceRequestReference: React.RefObject;\r\n\r\n private readonly makePaymentReference: React.RefObject;\r\n\r\n private buttonChildReference: React.RefObject[] = [];\r\n\r\n private buttonChildPayButtonReference: React.RefObject[] = [];\r\n\r\n private readonly _queryResultSettings: IQueryResultSettings;\r\n\r\n constructor(props: IConnellyInvoicesListProps) {\r\n super(props);\r\n\r\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\r\n this.props.context.request, this.props.config as IQueryResultSettingsModuleConfig).QueryResultSettings;\r\n this.payInvoiceRequestReference = React.createRef();\r\n this.makePaymentReference = React.createRef();\r\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\r\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\r\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\r\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\r\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\r\n this._requestInvoice = this._requestInvoice.bind(this);\r\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\r\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\r\n this.state = {\r\n invoices: [],\r\n invoicesFilterState: InvoicesFilterState.ShowAll,\r\n isLoading: true,\r\n isPageLoaded: false,\r\n errorState: { errorMessage: '' },\r\n isInvoiceRequestModalOpen: false,\r\n payInvoiceErrorModalOpen: false,\r\n selectedButtonElement: null\r\n };\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IConnellyInvoicesListProps,\r\n nextState: IInvoicesListState): 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 render(): JSX.Element | null {\r\n const {\r\n config: { className = '',\r\n heading\r\n },\r\n context: {\r\n request: {\r\n channel\r\n },\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n },\r\n data: {\r\n customerBalance\r\n },\r\n resources: {\r\n invoicesListTitle,\r\n invoicesListDescTitle,\r\n invoicesListDescCount\r\n }\r\n } = this.props;\r\n\r\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\r\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\r\n\r\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\r\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\r\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\r\n\r\n const headerClassName = `${this._className}__header`;\r\n\r\n const header = (\r\n
\r\n \r\n
\r\n
\r\n {invoicesListDescTitle}\r\n
\r\n
\r\n {amountText}\r\n
\r\n
\r\n {countText}\r\n
\r\n
\r\n
\r\n );\r\n\r\n const viewProps: IInvoicesListViewProps = {\r\n ...(this.props as IConnellyInvoicesListProps),\r\n moduleProps: {\r\n moduleProps: this.props,\r\n className: classnames(this._className, className)\r\n },\r\n header,\r\n invoiceRequestModal: this._renderInvoiceRequestModal(),\r\n filter: this._renderInvoicesFilter(this._className),\r\n pagination: this._renderPagination()\r\n };\r\n\r\n if (!this.state.isPageLoaded) {\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n if (ArrayExtensions.hasElements(this.state.invoices)) {\r\n viewProps.content = this._renderListContainer();\r\n } else {\r\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\r\n }\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n await this.props.data.customer;\r\n const invoicesData = await this.props.data.invoices;\r\n this._initializeWithInvoices(invoicesData);\r\n }\r\n\r\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\r\n const invoices = invoicesData.map((invoice, index) => {\r\n this.buttonChildReference[Number(index)] = React.createRef();\r\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\r\n return new InvoiceModel(invoice);\r\n\r\n });\r\n this.setState({\r\n invoices,\r\n isLoading: false,\r\n isPageLoaded: true\r\n });\r\n }\r\n\r\n private _addInvoices(invoicesData: OrderInvoice[]): void {\r\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\r\n const invoices = this.state.invoices.concat(newInvoices);\r\n this.setState({\r\n invoices,\r\n isLoading: false\r\n });\r\n }\r\n\r\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\r\n const containerClass = `${this._className}__empty-lines__container`;\r\n const actionsContainerClass = `${containerClass}__actions`;\r\n return (\r\n
\r\n
\r\n {this.props.resources.invoiceEmptyInvoiceLinesTitle}\r\n
\r\n
\r\n {this.props.resources.invoiceEmptyInvoiceLinesDescription}\r\n
\r\n
\r\n \r\n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderListContainer(): JSX.Element {\r\n const containerClass = `${this._className}__container`;\r\n const containerHeaderClass = `${containerClass}__header`;\r\n const containerContentClass = `${containerClass}__content`;\r\n\r\n return (\r\n
\r\n
\r\n {this._renderMakePayment(containerHeaderClass)}\r\n {this._renderInvoiceRequestButton()}\r\n
\r\n
\r\n {this._renderInvoiceErrors()}\r\n
\r\n
\r\n {this._renderInvoicesList(containerContentClass)}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _updateInvoicesState(): void {\r\n this.setState({\r\n invoices: this.state.invoices\r\n });\r\n }\r\n\r\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\r\n const searchCriteria: InvoiceSearchCriteria = {};\r\n\r\n const context = this.props.context.actionContext;\r\n\r\n const businessPartner = await getCurrentAsync({ callerContext: context });\r\n searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\r\n\r\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\r\n searchCriteria.CustomerId = customer.AccountNumber;\r\n\r\n switch (state) {\r\n case InvoicesFilterState.ShowAll:\r\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\r\n break;\r\n case InvoicesFilterState.Paid:\r\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\r\n break;\r\n case InvoicesFilterState.PartiallyPaid:\r\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\r\n break;\r\n case InvoicesFilterState.Unpaid:\r\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\r\n break;\r\n default:\r\n throw new Error('Failed to process unknown invoices filter state.');\r\n }\r\n\r\n return searchCriteria;\r\n }\r\n\r\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\r\n this.setState({\r\n invoicesFilterState: state,\r\n isLoading: true\r\n });\r\n\r\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\r\n\r\n if (this._queryResultSettings.Paging) {\r\n this._queryResultSettings.Paging.Skip = 0;\r\n }\r\n\r\n const invoices = await getInvoices(new GetInvoicesInput(searchCriteria, this._queryResultSettings), this.props.context.actionContext);\r\n this._initializeWithInvoices(invoices);\r\n }\r\n\r\n private _renderInvoicesFilter(className: string): JSX.Element {\r\n const filterClassName = `${className}__filter`;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderInvoicesList(className: string): JSX.Element {\r\n const tableClassName = `${className}__table`;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\r\n const errorState = { ...newErrorState };\r\n errorState.errorHost = 'ADDINVOICETOCART';\r\n errorState.errorMessage = newErrorState.errorReason?.failureReason === 'EMPTYINPUT' ? this.props.resources.invoiceErrorInvoiceIdNotExist : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\r\n\r\n const shouldShowAdditionalInfoInPopup = errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\r\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\r\n }\r\n\r\n private _renderMakePayment(className: string): JSX.Element {\r\n const id = `${className}__make-payment`;\r\n const makePaymentResources: IMakePaymentResources = {\r\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\r\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\r\n };\r\n\r\n const selectedInvoices = this._getSelectedInvoices();\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _setPayInvoiceErrorModalClose(): void {\r\n this.setState({\r\n payInvoiceErrorModalOpen: false\r\n });\r\n this.state.selectedButtonElement?.focus();\r\n }\r\n\r\n private _renderInvoiceErrors(): JSX.Element {\r\n const {\r\n resources: { payInvoiceErrorDialogHeader, payInvoiceErrorDialogBodyErrorTitle, payInvoiceErrorDialogBodyErrorDescription,\r\n payInvoiceErrorDialogFooterGoToCartButtonText, payInvoiceErrorDialogFooterCancelButtonText }\r\n } = this.props;\r\n\r\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\r\n\r\n const errorClassName = `${this._className}__errors`;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _renderPagination(): JSX.Element | undefined {\r\n const { data, resources } = this.props;\r\n const invoices = data?.invoices?.result;\r\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n \r\n {resources.invoicesLoadMore}\r\n \r\n );\r\n }\r\n\r\n private async _loadMoreInvoices(): Promise {\r\n this.setState({ isLoading: true });\r\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\r\n if (this._queryResultSettings.Paging) {\r\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\r\n }\r\n const newInvoices = await getInvoices(new GetInvoicesInput(searchCriteria, this._queryResultSettings), this.props.context.actionContext);\r\n this._addInvoices(newInvoices);\r\n }\r\n\r\n private _renderInvoiceRequestModal(): JSX.Element {\r\n const customer = this.props.data.customer.result;\r\n const { invoiceRequestModalCancelLabel, invoiceRequestModalSubmitLabel, invoiceRequestModalHeaderLabel, invoiceRequestModalSendToEmailLabel, invoiceRequestModalSearch,\r\n invoiceRequestModalInvoiceSearchDisplay, invoiceRequestModalSingleInvoiceSearchDisplay, invoiceRequestModalSearchButton } = this.props.resources;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _onToggleInvoiceRequestModal(): void {\r\n\r\n this.setState({\r\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\r\n });\r\n if (this.state.isInvoiceRequestModalOpen) {\r\n this.state.selectedButtonElement?.focus();\r\n }\r\n }\r\n\r\n /**\r\n * Request specific invoice function.\r\n */\r\n private readonly _onToggleInvoiceRequestParentModal = () => {\r\n this.setState({\r\n selectedButtonElement: this.payInvoiceRequestReference.current\r\n }, () => {\r\n this._onToggleInvoiceRequestModal();\r\n });\r\n };\r\n\r\n private _renderInvoiceRequestButton(): JSX.Element | null {\r\n const { invoiceRequestButtonLabel } = this.props.resources;\r\n const customer = this.props.data.customer.result;\r\n\r\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\r\n return null;\r\n }\r\n\r\n return ();\r\n }\r\n\r\n private _requestInvoice(invoiceId: string): void {\r\n const context = { callerContext: this.props.context.actionContext };\r\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\r\n\r\n BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(context, b2bUserId, invoiceId, BusinessPartnerOperationDeliveryType.Email);\r\n\r\n this._onToggleInvoiceRequestModal();\r\n }\r\n\r\n private _getSelectedInvoices(): InvoiceModel[] {\r\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\r\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\r\n selectedInvoices = this.state.invoices;\r\n }\r\n\r\n return selectedInvoices;\r\n }\r\n\r\n private _requestSpecificInvoice(specificInvoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void {\r\n this.state.invoices.forEach((invoice: InvoiceModel) => {\r\n if (invoice === specificInvoice) {\r\n invoice.isSelected = true;\r\n } else {\r\n invoice.isSelected = false;\r\n }\r\n });\r\n this.setState({\r\n selectedButtonElement: requestInvoiceButtonReference.current\r\n });\r\n this._onToggleInvoiceRequestModal();\r\n }\r\n}\r\n\r\nexport default InvoicesList;\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\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IInvoicesListViewProps } from './connelly-invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\n }\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\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 IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\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 IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\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\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\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 IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

;\n};\n\nexport default AddressErrorTitleFunctionComponent;\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 IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address input.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\n const {\n id: itemId,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus: shouldUseAutoFocus,\n telemetryContent,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressInputFunctionComponent;\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 IAdressLabel {\n id: string;\n text: string;\n}\n\n/**\n * Address label.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\n const { id: itemId, text } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\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 { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\n isAsyncCustomer?: boolean;\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\n isEditAsyncCustomerFeatureEnabled?: boolean;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (\n className: string,\n addresses: Address[],\n showPrimaryButton: boolean,\n props: IAddressListInputProps,\n heading?: HeadingData\n): IAddressList => {\n const {\n resources,\n isUpdating,\n addressActionResponse,\n selectedAddress,\n addressFormat,\n onEditAddress,\n onRemoveAddress,\n onUpdatePrimaryAddress,\n addressPurposes,\n telemetryContent\n } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map(\n (address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\n const isInvalidAsyncState: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: !!isShowError,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n {\n onUpdatePrimaryAddress(address);\n }\n }}\n />\n ),\n editButton: (\n {\n onEditAddress(address);\n },\n role: 'link'\n }}\n />\n ),\n removeButton: (\n {\n onRemoveAddress(address);\n },\n role: 'link'\n }}\n />\n )\n };\n }\n )\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\n const headingComponent = heading?.text && (\n {\n // Required\n },\n requestContext: props.contextRequest\n }}\n />\n );\n\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\n const disableAddButton: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false) &&\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress, resources, addressPurposes } = props;\n const addType = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Name || ''\n : '';\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel, addType)\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressItemType, IAddressItem } from '../address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map(item => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find(\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\n );\n if (addressType) {\n const value = addressType.Name || '';\n return {\n key: item.name,\n description: (\n \n )\n };\n }\n }\n return {\n key: item.name,\n description: (\n \n )\n };\n })\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\nimport { IAccountManagementAddressData } from './account-management-address.data';\nimport { IAccountManagementAddressProps } from './account-management-address.props.autogenerated';\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewProps extends React.Component> {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: IAccountManagementAddressViewState;\n AccountAddressManagement: IModuleProps;\n isUpdating: boolean;\n showAddressList: IAddressListProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n screenReaderNotification: React.ReactNode;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountManagementAddress extends React.Component> {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address;\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private removeAddressData?: Address;\n\n private readonly addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[] = [];\n private addressPurposes: AddressPurpose[] = [];\n private readonly resources: IAddressResource;\n private readonly defaultAddressType: number = 6; // Default to Home\n private readonly telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n public constructor(props: IAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n if (this.props.data.countryRegions.result !== undefined) {\n this._setDefaultCountryRegionId();\n }\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => {\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n },\n async () => {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n await this._attachMapAutoSuggest();\n }\n }\n );\n }\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n /**\n * Should component update function.\n * @param nextProps - Account management address props.\n * @param nextState - Next state.\n * @returns - True if component should update, false otherwise.\n */\n public shouldComponentUpdate(\n nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState\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 { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\n\n // Set the feature state value for 'Async Customer Address Creation'.\n this.asyncCustomerAddressCreationFeatureIsEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n !this.isEditAsyncCustomerFeatureEnabled &&\n (customerInformation?.IsAsyncCustomer || false) && (\n \n ),\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddresList: this.currentOperation === AddressOperation.List,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\n },\n AccountAddressManagement: {\n moduleProps: this.props,\n className: classnames('ms-account-management-address', config.className)\n },\n showAddressList: this._renderListAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On Suggestion Selected Function.\n * @param result - Microsoft.Maps.ISuggestionResult.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IAccountManagementAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n };\n\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n /**\n * Render List Address Function.\n * @returns - AddressList.\n */\n private readonly _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n /**\n * Render Address title.\n * @param event - Msdyn365.ContentEditableEvent.\n */\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n config.heading!.text = event.target.value;\n };\n const heading = config.heading && {\n text: config.heading.text,\n headingTag: config.heading.tag\n };\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n addressPurposes: this.addressPurposes,\n resources: this.resources,\n heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n handleLineItemHeadingChange,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress,\n isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\n });\n };\n\n /**\n * Attach Map Auto Suggest Function.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On Address Add Update Function.\n * @param name - String.\n * @param value - String | Boolean | Number.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * On Address Add Update Input Change.\n * @param event - Input Change Event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * On Address Add Update Dropdown Change.\n * @param event - Dropdown Change Event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n this.onAddressAddUpdate(event.target.name, +event.target.value);\n } else {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n }\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * On Address Update Function.\n * @param response - Promise.\n * @param onSuccess - IAddressResponse.\n */\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n this.isUpdating = true;\n response.then(\n (result: IAddressResponse) => {\n if (result.address) {\n this.hasError = false;\n onSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n }\n this.isUpdating = false;\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n }\n );\n };\n\n /**\n * On Address Add Update Submit Function.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * On Country Change Function.\n * @param countryRegionId - String.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\n this._clearAddressFields();\n };\n\n /**\n * Get Address Format Exclude List Function.\n * @returns - Address Format Exclude List.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Get State Provinces Function.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Update CurrentOperation Function.\n * @param operation - AddressOperation.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n this._clearAddressFields();\n };\n\n /**\n * On Submit Update Primary Address Function.\n * @param address - Address.\n */\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n /**\n * Go To Edit Address Function.\n * @param address - Address.\n */\n private readonly _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n /**\n * On Remove Address Function.\n * @param address - Address.\n */\n private readonly _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n this.removeAddressData = address;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * Renders Notification screen reader text for removed address.\n * @param address - Address input.\n * @returns Notification for removed address.\n */\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\n return (\n
\n {notification}\n
\n );\n };\n\n /**\n * Go To Add Address Function.\n */\n private readonly _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n this._setDefaultCountryRegionId();\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * On Add Or Update Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n /**\n * On Update Primary Address Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n /**\n * Reset view function.\n */\n private readonly _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n };\n}\n\nexport default AccountManagementAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport * as React from 'react';\n\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressData } from './business-account-address.data';\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\n\n/**\n * Interface for IBusinessAccountAddressExtendedProps.\n */\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\n/**\n * Interface for IBusinessAccountAddressState.\n */\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\n\n/**\n * Interface for IBusinessAccountAddressViewProps.\n */\nexport interface IBusinessAccountAddressViewProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n BusinessAccountAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component, IBusinessAccountAddressState>}\n */\nclass BusinessAccountAddress extends React.Component {\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private readonly validationError: object;\n\n private readonly addressActionResponse?: IAddressResponse;\n\n private readonly isUpdating?: boolean;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 0; // Default to None (This value set in HQ as Business)\n\n private readonly shouldAutoFocus?: boolean = false;\n\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBusinessAccountAddressExtendedProps) {\n super(props);\n\n const { context, data, resources, telemetry } = this.props;\n this.addUpdateAddress = {};\n this.resources = resources;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\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 // Initializing data props\n this._dataInitialize(this.props);\n\n this._setDefaultCountryRegionId();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): 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 { renderView, config, hasError, resetAddress } = this.props;\n\n // Business-sign-up will pass this flag when cancel button is clicked\n if (resetAddress) {\n this._resetAddressFields();\n }\n\n const viewProps = {\n ...this.props,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n hasError,\n className: config.className,\n BusinessAccountAddress: {\n moduleProps: this.props,\n className: classnames('ms-business-account-address', config.className)\n },\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Reset Address.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _resetAddressFields = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n\n addressFormat.map(addressFormatItem => {\n switch (addressFormatItem.displayType) {\n case AddressItemDisplayType.Input:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n case AddressItemDisplayType.Checkbox:\n this.addUpdateAddress[addressFormatItem.name] = false;\n break;\n default:\n switch (addressFormatItem.type) {\n case AddressItemType.ThreeLetterISORegionName:\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\n break;\n case AddressItemType.AddressTypeValue:\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\n break;\n case AddressItemType.State:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n default:\n this.addUpdateAddress[addressFormatItem.name] = undefined;\n }\n }\n });\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n // Set validationError and hasError to hide error messages since in the B2B\n // request form, no errors would visually show since user wont be able to submit\n // until form is filled and correct\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Company,\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n shouldAutoFocus: this.shouldAutoFocus,\n validationError: this.validationError,\n hasError: this.props.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange\n });\n };\n\n /**\n * On Address Add Update Input Change Function.\n * @param event - Input event change function.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n /**\n * On Address Add Update Dropdown Change Function.\n * @param event - Change dropdown event.\n */\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n await this._updateCountryRegionId(event.target.value);\n } else {\n this._updateAddress(event.target.name, event.target.value);\n }\n };\n\n /**\n * Update Address Function.\n * @param name - String.\n * @param value - String.\n */\n private readonly _updateAddress = (name: string, value: string | number) => {\n const { updateForm, isRequired, resources } = this.props;\n let cleanValue = value;\n if (typeof value === 'string') {\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\n }\n set(this.addUpdateAddress, { [name]: cleanValue });\n\n if (this._isEmpty()) {\n if (isRequired) {\n updateForm(true, undefined);\n } else {\n // Reset addressFormat as if address was NOT a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, []),\n this.addressPurposes\n );\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat if address was a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, this.props.isRequired ? undefined : []),\n this.addressPurposes\n );\n\n // Verify with new rules\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n updateForm(false, this.addUpdateAddress);\n } else {\n updateForm(true, undefined);\n }\n }\n };\n\n /**\n * Is empty Function.\n * @returns - Boolean.\n */\n // Walk through array and check if valued is defined or value is not an empty string\n private readonly _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (const addressFormatItem of addressFormat) {\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\n\n // Check each input field, if value is defined and not an empty string --> address is not empty\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n /**\n * Is Input Required Function.\n * @param addressFormatItem - IAddressItem.\n * @returns - Boolean.\n */\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\n !addressFormatItem.validationRules ||\n addressFormatItem.validationRules.length === 0\n ) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {hasError && alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Business Account Address View Component.\n * @param props - Props.\n * @returns - BusinessAccountAddress Module.\n */\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n \n \n );\n};\n\nexport default BusinessAccountAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked\n };\n\n return (\n \n );\n};\nexport default AddressBillingCheckbox;\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 IAddressBillingHeading {\n text: string;\n}\n\nexport const AddressBillingHeading: React.FC = ({ text }) => (\n

{text}

\n);\n\nexport default IAddressBillingHeading;\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 { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\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 | null {\n if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n}\n\nexport default CheckoutBillingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n const quantity = 1;\n return (\n
\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n \n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getFallbackImageUrl, getSimpleProducts, ObjectExtensions, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this.state = { shippingGroups: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n const quantity = 1;\n const itemText = cartlines.length > quantity ? itemsText : singleItemText;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: `(${format(itemText, cartlines.length)})`,\n title: headingImages,\n resources: this.props.resources\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n } catch (error) {\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutShippingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {addButton}\n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n"],"names":["_ref","isChecked","ariaLabel","disabled","telemetryContent","onChange","id","payLoad","getPayloadObject","attribute","getTelemetryAttributes","React","Object","assign","className","type","name","checked","message","title","CheckoutTermsAndConditions","constructor","props","super","isTermsAccepted","handleTextChange1","event","this","config","termsTitle","text","target","value","handleParagraphChange1","termsContent","handleTextChange","description","getTermsAndConditions","moduleState","isReady","showCheckbox","isDisabled","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","resources","termsAndConditionAcceptance","checkBox","CheckboxComponent","MsDyn365","editProps","onEdit","requestContext","context","request","init","async","_this$props$data$chec","_data$checkout$result","data","hasInvoiceLine","checkout","result","checkoutCart","updateTermsAndConditionsAcceptance","onCancel","onSubmit","status","getErrorMessage","errorMessageTitle","error","tag","role","ErrorTitleComponent","ErrorMessageComponent","errorMessage","getCancelButton","cancelBtnLabel","cancelBtnAriaLabel","Button","color","onClick","getSaveButton","saveBtnLabel","saveBtnAriaLabel","getEditButton","editBtnLabel","editBtnAriaLabel","onUpdating","clearError","onReady","setError","setHasError","telemetry","newIsTermsAndConditionAccepted","undefined","_this$props$data$chec2","shouldEnableSinglePaymentAuthorizationCheckout","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","getTelemetryObject","telemetryPageName","friendlyName","isDataReady","isShowButtons","showControlButtons","hasExternalSubmitGroup","defaultTermsAndConditionAcceptedValue","when","reaction","_this$props$data$chec3","shouldComponentUpdate","nextProps","nextState","state","render","_this$props$data$chec4","hasError","TermsTitle","TermsContent","isError","isShowContent","isShowSelected","viewProps","_objectSpread","errorMessageData","viewState","isShowSaveButton","isShowEditButton","isShowCancelButton","checkoutTermsAndConditions","moduleProps","classname","termsAndConditionsContent","saveButton","editButton","cancelButton","onSave","renderView","__decorate","observable","computed","action","withModuleState","observer","TermsAndCondition","Node","ErrorMessage","_ref2","modal","setModal","useState","toggle","Module","Modal","isOpen","ModalHeader","ModalBody","InvoiceErrorComponent","msdyn365Commerce","createComponent","component","messageHeader","otherError","showError","payInvoiceErrorModalOpen","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","cartUrl","setPayInvoiceErrorModalClose","errorMessages","push","Alert","length","assertive","map","index","key","ModalFooter","href","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","Paid","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","isMobile","getMobileHeaderCells","classnames","invoiceListSelectAllRadioAriaLabelText","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceNumberText","invoiceDateText","isAdmin","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceAmountDueText","invoiceStatusText","invoiceActionsText","getInvoiceStatusText","invoiceStatus","InvoicePaidStatus","None","invoiceStatusNone","PayInvoiceComponentActions","_event","setDisabled","invoices","actionContext","onError","invoicesToAdd","filter","invoice","canBePaid","ArrayExtensions","hasElements","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","errorCode","ErrorResourceId","getUrlSync","_window","window","location","payInvoices","errorState","reference","PayInvoiceComponent","RequestInvoiceButton","onClicked","requestInvoiceButtonLabel","innerReference","formatAmount","amount","currencyCode","cultureFormatter","formatCurrency","formatDate","date","year","month","day","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isBrowser","isShowActions","setShowActions","shouldShowActions","getMobileRowCells","onSelectLine","getInvoiceDetailsPageUrlSync","invoiceRowArialabel","format","invoiceListSelectRadioAriaLabelText","isSelected","customerName","dueDate","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","showActions","actionsContainerClassName","payInvoiceClassName","typeName","payInvoiceReferences","invoiceReferences","invoiceRequestButtonLabel","extraActionsPopup","InvoicesTableRowComponent","rowCells","getDesktopRowCells","customer","isCurrentUser","StringExtensions","isNullOrWhitespace","AccountNumber","customerAccountNumber","payInvoiceButtonReference","invoiceDate","IsB2bAdmin","invoiceCurrentUser","amountDue","isMobileView","viewport","device","Type","innerWidth","gridSettings","xs","w","sm","md","lg","getViewport","onSelectAllHandler","forEach","InvoicesTableComponent","setIsMobile","updateViewport","addEventListener","headerClassName","all","invoiceButtonReferences","Number","payInvoiceButtonReferences","MakePaymentComponent","input","onSubmitRequestClick","selectedInvoiceIndex","onClosing","filteredInvoices","onSubmitRequest","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","onInvoiceSelect","onInvoiceSelectHandler","radioButtonId","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","current","setTimeout","_focusElement$current","focus","searchEntered","searchEnteredHandler","updatedInvoices","isNullOrEmpty","toLocaleUpperCase","includes","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","ref","placeholder","InvoiceModel","Id","InvoiceDate","Date","CustomerAccountNumber","CustomerName","TotalAmount","InvoiceDueDate","AmountBalance","InvoicePaidStatusValue","CurrencyCode","InvoicesList","_className","buttonChildReference","buttonChildPayButtonReference","_onToggleInvoiceRequestParentModal","setState","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","bind","_onAddToCartFailed","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","_setPayInvoiceErrorModalClose","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","_customerBalance$resu","_customerBalance$resu2","_heading$text","heading","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","replace","toString","invoicesListTitleHeading","header","Heading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","content","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoiceErrors","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","callerContext","BusinessPartnerId","getCustomer","GetCustomerInput","apiSettings","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","tableClassName","newErrorState","_newErrorState$errorR","errorHost","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","makePaymentButtonText","makePaymentButtonAriaLabel","_getSelectedInvoices","moduleId","moduleTypeName","navigationUrl","buttonReferences","_this$state$selectedB","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","errorClassName","invoiceErrorMessageHeader","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","Email","_this$state$selectedB2","invoiceId","_this$props$data$b2bU","_this$props$data$b2bU2","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","specificInvoice","InvoiceListView","focusOnCheckoutError","checkoutErrorRef","ctx","checkoutState","getCheckoutState","catch","exception","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","AutoSuggest","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","_loadMapAPI","storeSelectorStateManager","loadMapApi","lang","market","AddressCommon","getDefaultCountryRegionId","countryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","addressGenericErrorMessage","isAuthenticatedFlow","user","isAuthenticated","getStateProvinces","response","GetStateProvincesInput","getStateProvinceAction","Promise","resolve","isEmpty","address","ThreeLetterISORegionName","State","City","addCustomerAddress","updateLogisticsLocationRoleRecordId","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressTypeValue","AddressManagementInput","execAddressAction","addresses","RecordId","customerAddresses","addressPurposes","GetAddressPurposesInput","getAddressPurposesAction","addressPurpose","purpose","AddressType","LogisticsLocationRoleRecordId","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","AddressFormat","countryRegionsInfo","addressMetaData","getPrefilledAddressDropdownData","stateDefaultSelectionText","stateProvinceInfo","defaultStateText","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","validateAddressFormat","validationError","propertyName","validationtor","isValid","getAddressFormat","addressFormatItem","_inputValidation","getTranformedAddress","postalCode","ZipCode","selectedState","StateName","adminDistrict","StateId","addressLine","Street","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","validationRule","regEx","RegExp","test","get","countryRegionInfo","_getAddressDisplayFormat","ShortName","Description","set","validationRules","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","nameDisplayItem","Name","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","Phone","isPrimaryDisplayItem","IsPrimary","AddressMetaData","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","item","_addItem","Input","PhoneRegex","defaultRegex","County","Dropdown","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","Checkbox","displayType","nameKey","_validationRules","isRequired","some","rule","Required","optionalString","label","ruleType","keys","itemType","_validationRule","Format","AddressOperation","itemId","additionalAddributes","shouldBeAutoFocused","attributes","getRequriedAttribute","getAddessItems","selectedAddress","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","onInputChange","onDropdownChange","shouldAutoFocus","elementId","AddressInputComponent","AdressCheckboxComponent","displayData","selectedValue","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","AddressAddUpdate","editAddressHeading","addAddressHeading","isUpdating","addressActionResponse","AddressForm","items","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressErrorTitleComponent","AddressErrorMessageComponent","isShowLabel","labelText","mainClass","getDropdownItem","ErrorComponent","shouldUseAutoFocus","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","List","isShowList","isSelectedAddress","isShowError","isInvalidAsyncState","isEditAsyncCustomerFeatureEnabled","canRenderAsyncCustomerDataAsUnmodifiable","isAsyncCustomer","isAsyncCustomerAddressCreationFeatureEnabled","Item","showItems","AddressShow","isShowPrimaryButton","primaryButton","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","addressEditButtonText","addressEditButtonAriaLabel","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AddressList","_heading$headingTag","onAddAddress","handleLineItemHeadingChange","headingComponent","Msdyn365","headingTag","contextRequest","disableAddButton","ListAddress","isShowEmptyListMessage","emptyListMessage","addressEmptyListAddressMessage","addButton","addressAddButtonText","addressAddButtonAriaLabel","primaryAddressList","otherAddressList","getInput","_addressPurposes$find","onAddressOptionChange","addType","ichecked","additionalAttributes","addressChangeCheckboxAriaLabel","getAddressSelectItems","SelectItem","AddressSelect","SelectAddress","AddressDetail","addressTypeValue","AddressDetailItemComponent","AccountManagementAddress","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","_onSuggestionSelected","_clearAddressFields","addUpdateAddress","_this$autoSuggest","autoSuggest","_clearValidation","_dataInitialize","_data$countryRegions$","_data$addressPurposes","_data$address$result","_renderAddOrUpdateAddress","Shipping","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","_onAddressAddUpdateSubmit","_resetView","_renderListAddress","_this$props$data$cust","_this$props$context$a","_this$props$context$a2","_goToEditAddress","_onRemoveAddress","_goToAddAddress","_onSubmitUpdatePrimaryAddress","customerInformation","IsAsyncCustomer","app","_attachMapAutoSuggest","_this$autoSuggest2","isMapApiLoaded","onAddressAddUpdate","_onCountryChange","_onAddressUpdate","onSuccess","then","addressCommon","currentOperation","Update","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","TwoLetterISORegionName","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","_getStateProvinces","Add","_updateCurrentOperation","operation","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","_setDefaultCountryRegionId","autoSuggestionEnabled","BingMapsEnabled","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest4","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest5","_data$featureState","_data$featureState$re","_data$featureState$re2","_data$featureState2","_data$featureState2$r","_data$featureState2$r2","_this$props$context$a3","_this$props$context$a4","featureState","feature","IsEnabled","infoMessageBar","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","isShowAddresList","isShowAddOrUpdateAddress","AccountAddressManagement","showAddressList","showAddOrUpdateAddress","screenReaderNotification","AddressLists","_ref3","_ref4","BusinessAccountAddress","excludedList","_resetAddressFields","countryStates","_data$countryStates$r","Company","_updateAddress","_updateCountryRegionId","updateForm","cleanValue","_isEmpty","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","componentDidMount","resetAddress","_request$channel","AddressBillingCheckbox","AddressBillingHeading","CheckoutBillingAddress","_this$addUpdateAddres","Billing","_onSubmitAddress","twoLetterIsoRegionName","_initModuleState","isBillingAddressRequried","billingAddress","isBillingAddressSameAsShippingAddress","isBillingAddressSameAsShipping","Show","_updateModuleState","isCartContainsItemsForShipping","shippingAddress","_onBillingAddressSameAsShippingChange","currentTarget","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","_setBillingAddress","information","newBillingAddress","updateBillingAddress","additionalProperties","_setErrorMessage","isShowAddress","isShowSameAsShippingCheckbox","_this$props$data$chec5","removeBillingAddress","onDisable","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec6","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec7","checkoutErrorFocus","_shouldHideBillingAddressForOBO","addressBillingAddressHeading","sameAsShippingCheckbox","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","showAddress","_renderShowAddress","_this$selectedAddress","_featureState$result","_featureState$result$","_request$channel2","_request$channel3","_this$props$data$chec8","channelDeliveryOptionConfig","retailMultiplePickUpOptionEnabled","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","cart","CartLines","cartLine","_channelDeliveryOptio","_channelDeliveryOptio2","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","_this$props$data$chec9","_this$props$data$chec10","getLoyaltyAmount","loyaltyAmount","getGiftCardTotalAmount","giftCardExtends","reduce","count","giftCard","Balance","getCustomerAccountAmount","_checkoutState$custom","customerAccountAmount","shouldPaidByCard","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","_this$props$data$chec14","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","CheckoutPickupCartLines","moduleClassName","cartLines","itemTitle","isMobileCheck","variant","VariantType","Browser","xl","isShowQty","quantity","lineId","Image","imageProps","productQuantityInfo","altText","defaultImageSettings","viewports","q","h","lazyload","quality","CheckoutShippingAddress","_data$featureState$re3","_data$featureState$re4","addressListSelectedAddress","multiplePickupStoreSwitchName","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","products","_getProductsByCartLines","ChannelId","line","product","x","ProductId","shippingGroups","formatAddress","_isDelivery","_isNotPickupMode","FulfillmentStoreId","_this$props$context$r","pickupDeliveryMode","pickupMode","channelId","productInputs","ProductInput","CatalogId","getSimpleProducts","onSaveHandler","onCancelButtonHandler","_renderSelectAddress","onAddAddressHandler","_onAddressOptionChange","_onSelectAddress","addressRecordId","_isNewAddress","_clearError","_getDefaultAddress","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","country","_country$ISOCode","_canShip","defaultAddress","ShippingAddress","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","_setShippingAddress","updateHasShippingAddress","newHasShippingAddress","_checkout$result$chec","_checkout$result$chec2","_channelDeliveryOptio3","_channelDeliveryOptio4","newShippingAddress","updateShippingAddress","onPending","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_address","_featureState$result2","_featureState$result3","headingImages","itemsText","singleItemText","imageSettings","cartlines","_line$cartLine$LineId","_line$product","_line$product$Primary","_line$product2","_line$product3","_line$cartLine$Quanti","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","loadFailureBehavior","Quantity","itemText","lineImageProps","cartLineImages","isRetailMultiplePickUpOptionEnabled","showAddressSelectHandler","showAddOrUpdateAddressHandler","showAddressSelect","_this$props$data$cart","_this$props$data$cart2","_this$props$data$cart3","_this$props$data$cart4","_this$props$data$cart5","_this$props$data$cart6","_this$props$data$cart7","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","CheckoutStateInput","_this","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","createObservableDataAction","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","prototype","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateCustomerAccountAmount","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","update","updateModuleStates","WrappedComponent","_super","ModuleState","call","initializeState","_b","states","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","onSkip","getModule","getModuleByTypeName","getModuleStateManagerByTypeName","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","childId","_isPaymentSectionContainer","enableControl","__extends"],"sourceRoot":""}