{"version":3,"file":"static/js/18.0f1e686bc64c25ce5a8e.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-list.tsx?15b4","webpack://Msdyn365.Commerce.Online/./src/modules/mands-account-management-address/mands-account-management-address.tsx?44df","webpack://Msdyn365.Commerce.Online/./src/modules/mands-account-management-address/mands-account-management-address.view.tsx?2fc8","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-billing-address/checkout-errors/checkout-errors.ts?76ea","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/address-common.ts?2ba7","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/address-format.data.ts?6cd4","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/address-format.ts?c325","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/address-meta-data.ts?a5cf","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/address-module.data.ts?ab7b","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-alert.tsx?f686","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-dropdown.tsx?3a43","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-label.tsx?21b4","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-add.tsx?be9f","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-button.tsx?1cb0","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-error-message.tsx?37e9","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-error-title.tsx?25f1","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-input.tsx?c4cc","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-detail-item.tsx?50f2","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-show.tsx?f84b","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-select.tsx?407e","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-error-alert.tsx?df30","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/mands-c-checkout-shipping-address.tsx?7936","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/mands-c-checkout-shipping-address.view.tsx?e4c5","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-billing-checkbox.tsx?f04c","webpack://Msdyn365.Commerce.Online/./src/modules/mands-c-checkout-shipping-address/common/components/address-billing-heading.tsx?0d0d","webpack://Msdyn365.Commerce.Online/./src/modules/mands-checkout-billing-address/mands-checkout-billing-address.tsx?0c08","webpack://Msdyn365.Commerce.Online/./src/modules/mands-checkout-billing-address/mands-checkout-billing-address.view.tsx?5804","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 * 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 { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource, IAddressResponse } from '../../common/address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressListError {\r\n Error: INodeProps;\r\n isShowError: boolean;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressListItem {\r\n Item: INodeProps;\r\n key: number;\r\n error: IAddressListError;\r\n showItems: IAddressShowProps;\r\n isShowPrimaryButton: boolean;\r\n primaryButton: React.ReactNode;\r\n editButton: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressList {\r\n List: INodeProps;\r\n isShowList: boolean;\r\n heading: React.ReactNode;\r\n items: IAddressListItem[];\r\n}\r\n\r\nexport interface IAddressListProps {\r\n ListAddress: INodeProps;\r\n heading: React.ReactNode;\r\n isShowEmptyListMessage: boolean;\r\n emptyListMessage: React.ReactNode;\r\n addButton: React.ReactNode;\r\n primaryAddressList: IAddressList;\r\n otherAddressList: IAddressList;\r\n}\r\n\r\nexport interface IAddressListInputProps {\r\n isUpdating?: boolean;\r\n selectedAddress?: Address;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n heading?: HeadingData;\r\n primaryAddressSectionHeading?: HeadingData;\r\n otherAddressSectionHeading?: HeadingData;\r\n addressActionResponse?: IAddressResponse;\r\n resources: IAddressResource;\r\n onAddAddress(): void;\r\n onEditAddress(address?: Address): void;\r\n onUpdatePrimaryAddress(address: Address): void;\r\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\r\n isAsyncCustomer?: boolean;\r\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\r\n isEditAsyncCustomerFeatureEnabled?: boolean;\r\n}\r\n\r\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\r\n return ariaLabel.replace('{addressName}', addressName || '');\r\n};\r\n\r\nconst getAddressList = (\r\n className: string,\r\n addresses: Address[],\r\n showPrimaryButton: boolean,\r\n props: IAddressListInputProps,\r\n heading?: HeadingData\r\n): IAddressList => {\r\n const { resources, isUpdating, addressActionResponse, selectedAddress, addressFormat, onEditAddress, onUpdatePrimaryAddress } = props;\r\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\r\n\r\n return {\r\n List: { className: className },\r\n isShowList: addresses.length > 0,\r\n heading: heading && ,\r\n items: addresses.map(\r\n (address: Address): IAddressListItem => {\r\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\r\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\r\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.\r\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\r\n const isInvalidAsyncState: boolean =\r\n props.isEditAsyncCustomerFeatureEnabled || false\r\n ? false\r\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\r\n\r\n return {\r\n Item: { className: `${className}-list` },\r\n key: address.RecordId || 0,\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address\r\n }),\r\n error: {\r\n Error: { className: `${className}-error` },\r\n isShowError: isShowError ? true : false,\r\n title: ,\r\n message: \r\n },\r\n isShowPrimaryButton: showPrimaryButton,\r\n\r\n primaryButton: (\r\n {\r\n onUpdatePrimaryAddress(address);\r\n }\r\n }}\r\n />\r\n ),\r\n editButton: (\r\n {\r\n onEditAddress(address);\r\n }\r\n }}\r\n />\r\n )\r\n };\r\n }\r\n )\r\n };\r\n};\r\n\r\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\r\n const { addresses, primaryAddressSectionHeading } = props;\r\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\r\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\r\n};\r\n\r\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\r\n const { addresses, otherAddressSectionHeading } = props;\r\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\r\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\r\n};\r\n\r\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\r\n const { addresses, heading, resources, onAddAddress } = props;\r\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\r\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\r\n const disableAddButton: boolean =\r\n props.isEditAsyncCustomerFeatureEnabled || false\r\n ? false\r\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (props.isAsyncCustomer || false) &&\r\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\r\n return {\r\n ListAddress: { className: 'ms-address-list' },\r\n heading: heading && ,\r\n isShowEmptyListMessage: addresses.length === 0,\r\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\r\n addButton: (\r\n \r\n ),\r\n primaryAddressList: getPrimaryAddressList(props),\r\n otherAddressList: getOtherAddressList(props)\r\n };\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\n/* eslint-disable no-duplicate-imports */\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { AddressCommon } from '../mands-c-checkout-shipping-address/common/address-common';\nimport { AddressFormat } from '../mands-c-checkout-shipping-address/common/address-format';\nimport { AddressItemType } from '../mands-c-checkout-shipping-address/common/address-format.data';\nimport { AddressMetaData } from '../mands-c-checkout-shipping-address/common/address-meta-data';\nimport {\n AddressOperation,\n AddressType,\n IAddressResource,\n IAddressResponse\n} from '../mands-c-checkout-shipping-address/common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\nimport { AddressList, IAddressListProps } from '../mands-c-checkout-shipping-address/common/components/address-list';\nimport { IMandsAccountManagementAddressData } from './mands-account-management-address.data';\nimport { IMandsAccountManagementAddressProps } from './mands-account-management-address.props.autogenerated';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\n// import { AutoSuggest } from '../mands-c-checkout-billing-address/common/address-autosuggest';\n\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\nexport interface IAccountManagementAddressViewProps\n 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 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 = 'GBR';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address & { HouseNumber?: string };\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private customerAccountNumber?: string;\n private resources: IAddressResource;\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n // private autoSuggest?: AutoSuggest;\n constructor(props: IMandsAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.customerAccountNumber = context && context.request && context.request.user && context.request.user.customerAccountNumber;\n this.countryRegions = data.countryRegions.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressFormat = new AddressFormat(this.countryRegions, new AddressMetaData({ ...resources }));\n this.addressCommon = new AddressCommon(context, resources, telemetry, this.customerAccountNumber);\n this._setDefaultCountryRegionId();\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.countryRegionId,\n () => this._getStateProvinces()\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n }\n\n public render(): JSX.Element {\n const { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\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 };\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 // // 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 * 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 * Clear Validation Function.\n */\n // @action\n // private readonly _clearValidation = (): void => {\n // this.validationError = {};\n // };\n\n private _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 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 onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n private _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n heading: config.heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n onEditAddress: this._goToEditAddress,\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 private onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n };\n\n private _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 private _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 private _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 private _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()) {\n // TODO: Need to add code for when user try to add / update address HouseNumber customization.\n this.addUpdateAddress.Street = `${this.addUpdateAddress.HouseNumber} | ${this.addUpdateAddress.Street}`;\n delete this.addUpdateAddress.HouseNumber;\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 private _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\n };\n\n private _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\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 private _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n };\n\n private _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n private _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n // TODO: Need to do customization for update address when user clicks on edit button.\n if (this.addUpdateAddress.Street?.split('|') && this.addUpdateAddress.Street?.split('|').length > 1) {\n set(this.addUpdateAddress, { ['HouseNumber']: this.addUpdateAddress.Street?.split('|')[0]?.trim() });\n this.addUpdateAddress.Street = this.addUpdateAddress.Street?.split('|')[1]?.trim();\n }\n // END\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n private _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: this.countryRegionId });\n\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n private _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n private _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n private _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\n/* eslint-disable no-duplicate-imports */\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../mands-c-checkout-shipping-address/common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../mands-c-checkout-shipping-address/common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './mands-account-management-address';\n\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items &&\n items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n
\n {items &&\n items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {editButton}\n {isShowPrimaryButton && primaryButton}\n \n );\n })}\n
\n
\n );\n};\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\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 &&\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\nconst AccountManagementAddressView: React.FC = props => {\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, infoMessageBar } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\r\n\r\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\r\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\r\n ctx.telemetry.exception(error);\r\n throw error;\r\n });\r\n\r\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\r\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\r\n}\r\n","import { addAddress, AddressManagementInput, updateAddress, updatePrimaryAddress } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\r\nimport { IAddressResource, IAddressResponse } from './address-module.data';\r\n\r\n/**\r\n *\r\n * Address common\r\n */\r\nexport class AddressCommon {\r\n private context: ICoreContext;\r\n private customerAccountNumber?: string;\r\n private resources: IAddressResource;\r\n private telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry, customerAccountNumber?: string) {\r\n this.context = context;\r\n this.customerAccountNumber = customerAccountNumber;\r\n this.resources = resources;\r\n this.telemetry = telemetry;\r\n }\r\n\r\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\r\n const marketISOCode = market || 'US';\r\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\r\n };\r\n\r\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\r\n return {\r\n errorTitle: resources.addressErrorMessageTitle,\r\n errorMessage: resources.addressGenericErrorMessage\r\n };\r\n };\r\n\r\n public isAuthenticatedFlow = (): boolean => {\r\n return !!this.customerAccountNumber;\r\n };\r\n\r\n public getStateProvinces = async (countryRegionId: string): Promise => {\r\n let response: StateProvinceInfo[] = [];\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\r\n response = await getStateProvinceAction(input, this.context.actionContext);\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n public addCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(addAddress, address);\r\n };\r\n\r\n public updateCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updateAddress, address);\r\n };\r\n\r\n public updateCustomerPrimaryAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updatePrimaryAddress, address);\r\n };\r\n\r\n private submitCustomerAddress = (addressAction: IObservableAction, address: Address): Promise => {\r\n const input = new AddressManagementInput(address, this.customerAccountNumber || '');\r\n return this.execAddressAction(addressAction, input, address);\r\n };\r\n\r\n private execAddressAction = async (\r\n addressAction: IObservableAction,\r\n input: IActionInput | IActionInput[],\r\n address: Address\r\n ): Promise => {\r\n let response: IAddressResponse = {};\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\r\n }\r\n response.customerAddresses = addresses;\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n }\r\n response = this.parseRetailException(this.resources);\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n}\r\n","import { Address } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown'\r\n}\r\n\r\nexport interface IAddressFormatData {\r\n address: Address;\r\n}\r\n\r\nexport enum AddressValidationRuleType {\r\n Required = 'Required',\r\n Format = 'Format'\r\n}\r\n\r\nexport enum AddressItemType {\r\n Name = 1001,\r\n Phone = 1002,\r\n // VSI - Customizatio HouseNumber\r\n HouseNumber = 1005,\r\n // END\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n District = 7,\r\n StreetNumber = 8,\r\n BuildingCompliment = 9,\r\n Postbox = 10,\r\n House_RU = 21,\r\n Flat_RU = 22,\r\n CountryOKSMCode_RU = 23,\r\n AddressTypeValue = 1004\r\n}\r\n\r\nexport interface IAddressItem {\r\n name: string;\r\n type: AddressItemType;\r\n label: string;\r\n maxLength: number;\r\n displayType: AddressItemDisplayType;\r\n validationRules?: IAddressValidationRule[];\r\n isNewLine: boolean;\r\n}\r\n\r\nexport interface IAddressValidationRule {\r\n type: AddressValidationRuleType;\r\n regEx: string;\r\n message: string;\r\n}\r\n\r\nexport interface IAddressDropdownsData {\r\n [index: string]: { key?: string; value?: string }[];\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 { get, set } from 'mobx';\r\n\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\r\nimport { AddressMetaData } from './address-meta-data';\r\n\r\n/**\r\n *\r\n * Retail Service Address format parser\r\n */\r\nexport class AddressFormat {\r\n private countryRegionsInfo?: CountryRegionInfo[];\r\n private addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData) {\r\n const filteredCountries = [];\r\n const allowedCountries = ['GBR'];\r\n if (countryRegionsInfo) {\r\n for (let i = 0; i < countryRegionsInfo.length; i++) {\r\n const findOptionsIndex = allowedCountries.findIndex(item => item === countryRegionsInfo[i].CountryRegionId);\r\n\r\n if (findOptionsIndex !== -1) {\r\n filteredCountries.push(countryRegionsInfo[i]);\r\n }\r\n }\r\n }\r\n this.countryRegionsInfo = filteredCountries;\r\n this.addressMetaData = addressMetaData;\r\n }\r\n\r\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n if (countryRegionInfo) {\r\n return this._getAddressDisplayFormat(countryRegionInfo);\r\n }\r\n return [];\r\n }\r\n\r\n public getCountryFormat(): { key?: string; value?: string }[] {\r\n return (this.countryRegionsInfo || []).map(countryRegion => {\r\n return {\r\n key: countryRegion.CountryRegionId,\r\n value: countryRegion.ShortName\r\n };\r\n });\r\n }\r\n\r\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\r\n return (stateProvinceInfo || []).map(state => {\r\n return {\r\n key: state.StateId,\r\n value: state.StateName\r\n };\r\n });\r\n }\r\n\r\n public getPrefilledAddressDropdownData = (\r\n stateDefaultSelectionText: string,\r\n stateProvinceInfo?: StateProvinceInfo[]\r\n ): IAddressDropdownsData => {\r\n const defaultStateText = {\r\n key: '',\r\n value: stateDefaultSelectionText\r\n };\r\n const dropdownData: IAddressDropdownsData = {};\r\n\r\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\r\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\r\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\r\n\r\n return dropdownData;\r\n };\r\n\r\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n\r\n return countryRegionInfo!.ISOCode;\r\n };\r\n\r\n public validateAddressFormat = (address: Address, validationError: Address, countryRegionId: string): boolean => {\r\n let isValid: boolean = true;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, { [addressFormatItem.name]: validationRule.message });\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n });\r\n return isValid;\r\n };\r\n\r\n private _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\r\n if (validationRule.regEx && validationRule.regEx.length > 0) {\r\n const regex = new RegExp(validationRule.regEx);\r\n return regex.test(get(address, propertyName) || '');\r\n }\r\n return true;\r\n };\r\n\r\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\r\n return (this.countryRegionsInfo || []).find(countryRegion => {\r\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\r\n });\r\n }\r\n\r\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\r\n const addressDisplayItem: IAddressItem[] = [];\r\n\r\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n // VSI - HouseNumber Field\r\n const houseNumberDisplayItem = this._extendAddressDisplayFormat(AddressItemType.HouseNumber, false);\r\n if (houseNumberDisplayItem) {\r\n addressDisplayItem.push(houseNumberDisplayItem);\r\n }\r\n console.log('address format lines', countryRegionInfo.AddressFormatLines);\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n }\r\n console.log('array', addressDisplayItem);\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","import {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './address-format.data';\r\nimport { IAddressResource } from './address-module.data';\r\n\r\n/**\r\n * Address meta data\r\n */\r\nexport class AddressMetaData {\r\n private metaData: IAddressItem[] = [];\r\n private resources: IAddressResource;\r\n private requiredFieldRegEx: string = '\\\\S';\r\n\r\n private zipCodeRegEx: string = '^[a-zA-Z0-9 ]{0,10}$';\r\n private cityNameRegEx: string = '^[A-Za-z ]{0,20}$';\r\n private nameRegEx: string = '^.{0,49}$';\r\n private phoneRegEx: string = '^.{0,20}$';\r\n\r\n private validationErrorMessage = 'Please enter a valid';\r\n private resourcesPrefix: string = 'address';\r\n private maxLengthErrorMessage = `You have reached your maximum limit of characters allowed`;\r\n private maxLength: number = 100;\r\n private requiredFields: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource) {\r\n this.resources = resources || {};\r\n // VSI - Shahzaib Required House Number\r\n this.requiredFields = [\r\n AddressItemType.AddressTypeValue,\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName,\r\n AddressItemType.Street,\r\n AddressItemType.HouseNumber\r\n ];\r\n // END\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n // VSI- Shahzaib :- House Number\r\n this._addItem(AddressItemType.HouseNumber, AddressItemDisplayType.Input);\r\n // END\r\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.District, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: this.resources[`${this.resourcesPrefix}${nameKey}Label`],\r\n maxLength: this.maxLength,\r\n validationRules: this._validationRules(type, nameKey),\r\n isNewLine: true\r\n };\r\n\r\n this.metaData.push(item);\r\n }\r\n\r\n private _validationRules(type: AddressItemType, name: string): IAddressValidationRule[] {\r\n const validationRules: IAddressValidationRule[] = [];\r\n\r\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\r\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\r\n const message = this.resources[`${key}ErrorMessage`];\r\n switch (ruleType) {\r\n case AddressValidationRuleType.Required: {\r\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\r\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\r\n }\r\n break;\r\n }\r\n\r\n case AddressValidationRuleType.Format: {\r\n if (type === AddressItemType.ZipCode) {\r\n validationRules.push(this._validationRule(ruleType, this.zipCodeRegEx, `${this.validationErrorMessage} postcode`));\r\n } else if (type === AddressItemType.City) {\r\n validationRules.push(\r\n this._validationRule(ruleType, this.cityNameRegEx, `${this.validationErrorMessage} city name`)\r\n );\r\n } else if (type === AddressItemType.Name) {\r\n validationRules.push(this._validationRule(ruleType, this.nameRegEx, this.maxLengthErrorMessage));\r\n } else if (type === AddressItemType.Phone) {\r\n validationRules.push(this._validationRule(ruleType, this.phoneRegEx, this.maxLengthErrorMessage));\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n return validationRules;\r\n }\r\n\r\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\r\n return {\r\n type,\r\n regEx,\r\n message\r\n };\r\n }\r\n}\r\n","import { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface IAddressModuleData {\r\n address: Address;\r\n}\r\n\r\nexport enum AddressOperation {\r\n Add = 'Add',\r\n Show = 'Show',\r\n Update = 'Update',\r\n List = 'List'\r\n}\r\n\r\nexport enum AddressType {\r\n Shipping = 'Shipping',\r\n Billing = 'Billing'\r\n}\r\n\r\nexport interface IDropdownDisplayData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n\r\nexport interface IAddressResponse {\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n customerAddresses?: Address[];\r\n address?: Address;\r\n}\r\n\r\nexport interface IAddressConfig {\r\n heading?: Heading;\r\n primaryAddressSectionHeading?: Heading;\r\n otherAddressSectionHeading?: Heading;\r\n addAddressHeading?: Heading;\r\n editAddressHeading?: Heading;\r\n}\r\n\r\nexport interface IAddressResource {\r\n addressChangeCheckboxAriaLabel?: string;\r\n addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressSaveButtonText: string;\r\n addressSaveButtonAriaLabel: string;\r\n addressCancelButtonText: string;\r\n addressCancelButtonAriaLabel: string;\r\n addressStateDefaultSelectionText: string;\r\n addressNameLabel: string;\r\n addressNameRequiredErrorMessage: string;\r\n addressPhoneLabel: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRURequiredErrorMessage: string;\r\n addressCountryOKSMCodeRULabel: string;\r\n addressCountryOKSMCodeRURequiredErrorMessage: string;\r\n addressErrorMessageTitle: string;\r\n addressGenericErrorMessage: string;\r\n addressEmptyListAddressMessage: string;\r\n // VSI - Customization HouseNumber\r\n addressHouseNumberLabel: string;\r\n addressHouseNumberRequiredErrorMessage: string;\r\n // END\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressAlert {\r\n message?: string;\r\n}\r\n\r\nconst AdressAlert: React.FC = ({ message }) => (\r\n \r\n {message && <>{message}}\r\n \r\n);\r\n\r\nexport default AdressAlert;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string;\r\n additionalAddributes?: object;\r\n displayData: { key?: string; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string, value?: string, selectedValue?: string): React.ReactNode => {\r\n const isSelected = (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AdressDropdown: React.FC = ({ id, name, className, value, additionalAddributes, displayData, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressDropdown;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressLabel {\r\n id: string;\r\n text: string;\r\n}\r\n\r\nconst AdressLabel: React.FC = ({ id, text }) => (\r\n \r\n);\r\n\r\nexport default AdressLabel;\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 classname from 'classnames';\r\nimport { get } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressDropdownsData,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from '../address-format.data';\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n onInputChange(event: React.ChangeEvent): void;\r\n onDropdownChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressError {\r\n AddressError: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddItem {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddUpdateProps {\r\n AddressForm: INodeProps;\r\n heading: React.ReactNode;\r\n items: IAddressAddItem[];\r\n hasError: boolean;\r\n error: IAddressError;\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange\r\n } = props;\r\n\r\n // @ts-ignore\r\n return addressFormat.map(addressFormatItem => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className: className },\r\n label: ,\r\n alert: ,\r\n input: input\r\n };\r\n });\r\n};\r\n\r\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\r\n const {\r\n editAddressHeading,\r\n addAddressHeading,\r\n selectedAddress = {},\r\n resources,\r\n hasError,\r\n onCancel,\r\n onSave,\r\n hasExternalSubmitGroup,\r\n isUpdating,\r\n addressActionResponse\r\n } = props;\r\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\r\n\r\n return {\r\n AddressForm: { className: 'msc-address-form' },\r\n heading: heading && ,\r\n items: getAddessItems(selectedAddress, props),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n hasError: hasError || false,\r\n error: {\r\n AddressError: { className: 'msc-address-form__error' },\r\n title: addressActionResponse && addressActionResponse.errorTitle && (\r\n \r\n ),\r\n message: addressActionResponse && addressActionResponse.errorMessage && (\r\n \r\n )\r\n }\r\n };\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressButton {\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, onClick }) => (\r\n \r\n);\r\n\r\nexport default AddressButton;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorMessage {\r\n message: string;\r\n}\r\n\r\nconst AdressErrorMessage: React.FC = ({ message }) =>

{message}

;\r\n\r\nexport default AdressErrorMessage;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorTitle {\r\n title: string;\r\n}\r\n\r\nconst AdressErrorTitle: React.FC = ({ title }) =>

{title}

;\r\n\r\nexport default AdressErrorTitle;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n value: string;\r\n maxLength?: number;\r\n additionalAddributes?: object;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressInput: React.FC = ({ id, name, className, type, value, maxLength, additionalAddributes, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressInput;\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 classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressDetailItem {\r\n isNewLine: boolean;\r\n isShowLabel: boolean;\r\n labelText: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nconst AddressDetailItem: React.FC = ({ isNewLine, isShowLabel, labelText, name, value }) => {\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel\r\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\r\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\r\n return (\r\n \r\n {isShowLabel && (\r\n <>\r\n {labelText}\r\n \r\n \r\n )}\r\n {value}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDetailItem;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressItem } from '../../common/address-format.data';\r\nimport AddressDetailItemComponent from './address-detail-item';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: Address;\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n return {\r\n key: item.name,\r\n description: (\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 * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { format, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource } from '../../common/address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressInputComponent from './address-input';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressSelectInputProps {\r\n hasExternalSubmitGroup?: boolean;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport interface IAddressSelectItem {\r\n key: number;\r\n SelectItem: INodeProps;\r\n input: React.ReactNode;\r\n showItems: IAddressShowProps;\r\n}\r\n\r\nexport interface IAddressSelectProps {\r\n SelectAddress: INodeProps;\r\n addButton: React.ReactNode;\r\n items: IAddressSelectItem[];\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\r\n const { addresses, onAddressOptionChange, selectedAddress, addressPurposes, resources } = props;\r\n const addressTypeDescription = address.AddressTypeValue\r\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\r\n : '';\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1,\r\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel!, addressTypeDescription)\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat } = props;\r\n\r\n return addresses.map((address, index) => {\r\n return {\r\n key: address.RecordId || 0,\r\n SelectItem: { className: 'msc-address-select__item' },\r\n input: getInput(index, address, props),\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address\r\n })\r\n };\r\n });\r\n};\r\n\r\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\r\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\r\n\r\n return {\r\n SelectAddress: { className: 'msc-address-select' },\r\n addButton: (\r\n \r\n ),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n items: getAddressSelectItems(props)\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\n/**\r\n * The payment error.\r\n */\r\nexport interface IPaymentError {\r\n title: string;\r\n message?: string;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * The payment error.\r\n * @param param0 - First param.\r\n * @param param0.title - Title.\r\n * @param param0.message - Message.\r\n * @param param0.className - ClassName.\r\n * @returns React node.\r\n */\r\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\r\n
\r\n

{title}

\r\n

{message}

\r\n
\r\n);\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\n/* eslint-disable no-duplicate-imports */\nimport classnames from 'classnames';\nimport { computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\n\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 { IMandsCCheckoutShippingAddressData } from './mands-c-checkout-shipping-address.data';\nimport { IMandsCCheckoutShippingAddressProps } from './mands-c-checkout-shipping-address.props.autogenerated';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { ErrorComponent } from '../mands-c-checkout-shipping-address/common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../mands-c-checkout-billing-address/checkout-errors/checkout-errors';\n\nimport { ICartLineWithProduct } from '../mands-c-checkout-shipping-address/common/components/checkout-shipping-cartlines-images';\nexport interface IProps extends IMandsCCheckoutShippingAddressProps, IModuleStateProps {}\n\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n errorMessage?: string;\n}\n\nexport interface ICheckoutShippingAddressViewProps extends IProps {\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 showAddressSelect: IAddressSelectProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * Address component\n * @extends {React.Component>}\n */\n// @ts-ignore\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n // VSI - House Number\n @observable private selectedAddress?: Address & { HouseNumber?: string };\n @observable private addUpdateAddress: Address & { HouseNumber?: string };\n // VSI - END\n @observable private countryRegionId: string = 'GBR';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private addressListSelectedAddress: Address = {};\n\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private customerAccountNumber?: string;\n private resources: IAddressResource;\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n private addressPurposes: AddressPurpose[] = [];\n constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.customerAccountNumber = context && context.request && context.request.user && context.request.user.customerAccountNumber;\n this.countryRegions = data.countryRegions.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(this.countryRegions, new AddressMetaData({ ...resources }));\n this.addressCommon = new AddressCommon(context, resources, telemetry, this.customerAccountNumber);\n this.validationError = {};\n }\n\n public componentDidMount(): void {\n this.props.data.checkout.then(() => {\n this._initModuleState();\n this._setDefaultCountryRegionId();\n });\n\n reaction(\n () => this.countryRegionId,\n () => this._getStateProvinces()\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\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 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\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const {\n renderView,\n config,\n moduleState: { hasError }\n } = this.props;\n const { errorMessageTitle } = this.props.resources;\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 alert: hasError && ,\n\n checkoutErrorRef: this.checkoutErrorRef,\n showAddressSelect: this._renderSelectAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _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 selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.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 onSave: this.onSubmit,\n // tslint:disable-next-line: no-empty\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : this._resetView\n });\n };\n\n private _renderSelectAddress = (\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\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 onAddAddress: this._goToAddAddress,\n onSave: this._onSelectAddress,\n // tslint:disable-next-line: no-empty\n onCancel: !this.selectedAddress ? () => {} : 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 });\n }\n\n return null;\n }\n\n private _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 private onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n };\n\n private _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 private _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 private _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n // VSI - Customization House | Street\n this.addUpdateAddress.Street = `${this.addUpdateAddress.HouseNumber} | ${this.addUpdateAddress.Street}`;\n delete this.addUpdateAddress.HouseNumber;\n // console.log('address object', this.addUpdateAddress);\n if (this.addressCommon.isAuthenticatedFlow()) {\n // VSI - Update address \"concat street with house number\"\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 this._onAddOrUpdateSuccess(result);\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 private _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\n };\n\n private _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\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 private _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 private _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 if (this._canShip()) {\n /* VSI upgraded 10.0.14 code - START */\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\n /* VSI upgraded - END */\n if (defaultAddress) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n /* VSI upgraded 10.0.14 code - START */\n private _getShippingAddressFromCartLines = (): Address | undefined => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n\n const cartLines = (\n (this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) ||\n []\n ).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode !== pickupDeliveryModeCode : cartLine\n );\n\n if (cartLines && cartLines.length > 0) {\n return cartLines[0].ShippingAddress;\n }\n\n return undefined;\n };\n /* VSI upgraded - END */\n private 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 private 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 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 private onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\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 private _canShip = (): boolean => {\n const { checkout } = this.props.data;\n const { request } = this.props.context;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty) {\n return false;\n }\n // @ts-ignore: Type-checker not realizing above request.channel check\n return checkout.result.checkoutCart.cart.CartLines.some(\n cartLine => cartLine.DeliveryMode !== request.channel?.PickupDeliveryModeCode\n );\n };\n\n private _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n private _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n private _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 private _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 // tslint:disable-next-line:no-floating-promises\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n }\n };\n\n @computed get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\n }\n\n private _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 private _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 // VSI-CUSTOMIZATION: Update Operation\n if (this.addUpdateAddress.Street?.split('|') && this.addUpdateAddress.Street?.split('|').length > 1) {\n set(this.addUpdateAddress, { ['HouseNumber']: this.addUpdateAddress.Street?.split('|')[0]?.trim() });\n this.addUpdateAddress.Street = this.addUpdateAddress.Street?.split('|')[1]?.trim();\n }\n // set(this.addUpdateAddress, {['HouseNumber']: this.addUpdateAddress.Street?.split('|')[0]?.trim()});\n // this.addUpdateAddress.Street = this.addUpdateAddress.Street?.split('|')[1]?.trim();\n // VSI - Update Operation Customizaiton\n set(this.addUpdateAddress, {\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n private _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 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 private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n // private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n // return cartlines.reduce((count, line) => {\n // return count + (line.quantity || 0);\n // }, 0);\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\n/* eslint-disable no-duplicate-imports */\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\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 './mands-c-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 { checkoutErrorRef, alert, CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\n\n return (\n \n {alert}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport AddressInputComponent from './address-input';\r\n\r\nexport interface IAddressBillingCheckbox {\r\n isChecked: boolean;\r\n value: string;\r\n ariaLabel: string;\r\n text: string;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AddressBillingCheckbox: React.FC = ({ isChecked, value, ariaLabel, text, onChange }) => {\r\n const additionalAttributes = {\r\n checked: isChecked,\r\n 'aria-checked': isChecked\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressBillingCheckbox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressBillingHeading {\r\n text: string;\r\n}\r\n\r\n// eslint-disable-next-line no-redeclare\r\nconst IAddressBillingHeading: React.FC = ({ text }) => (\r\n

{text}

\r\n);\r\n\r\nexport default IAddressBillingHeading;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\n/* eslint-disable no-duplicate-imports */\nimport classnames from 'classnames';\nimport { computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { Address, CountryRegionInfo, GiftCard, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\n\nimport { AddressCommon } from '../mands-c-checkout-shipping-address/common/address-common';\nimport { AddressFormat } from '../mands-c-checkout-shipping-address/common/address-format';\nimport { AddressItemType } from '../mands-c-checkout-shipping-address/common/address-format.data';\nimport { AddressMetaData } from '../mands-c-checkout-shipping-address/common/address-meta-data';\nimport {\n AddressOperation,\n AddressType,\n IAddressResource,\n IAddressResponse\n} from '../mands-c-checkout-shipping-address/common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\nimport AddressBillingCheckoxComponent from '../mands-c-checkout-shipping-address/common/components/address-billing-checkbox';\nimport AddressBillingHeadingComponent from '../mands-c-checkout-shipping-address/common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../mands-c-checkout-shipping-address/common/components/address-show';\nimport { IMandsCheckoutBillingAddressData } from './mands-checkout-billing-address.data';\nimport { IMandsCheckoutBillingAddressProps } from './mands-checkout-billing-address.props.autogenerated';\n\nexport interface IProps extends IMandsCheckoutBillingAddressProps, IModuleStateProps {}\n\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n}\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}\n\n/**\n *\n * CheckoutBillingAddress component\n * @extends {React.PureComponent>}\n */\n// @ts-ignore\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n @observable private isBillingAddressSameAsShipping: boolean;\n @observable private selectedAddress?: Address;\n @observable private addUpdateAddress: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private customerAccountNumber?: string;\n private resources: IAddressResource;\n // private addRenderRef: React.RefObject;\n\n 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.customerAccountNumber = context && context.request && context.request.user && context.request.user.customerAccountNumber;\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(this.countryRegions, new AddressMetaData({ ...resources }));\n this.addressCommon = new AddressCommon(context, resources, telemetry, this.customerAccountNumber);\n\n // this.addRenderRef = React.createRef();\n }\n\n public componentDidMount(): void {\n this.props.data.checkout.then(() => {\n this._initModuleState();\n this._setDefaultCountryRegionId();\n });\n\n reaction(\n () => this.countryRegionId,\n () => this._getStateProvinces()\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 && this.props.moduleState.isDisabled) {\n this.onEdit();\n } else {\n this.props.moduleState.onDisable();\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.isBillingAddressRequried) {\n return null;\n }\n\n const { resources } = this.props;\n\n const { renderView, config } = this.props;\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 // tslint:disable-next-line: max-line-length\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _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 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 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 });\n }\n\n return null;\n }\n\n private _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\n };\n\n private onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n };\n\n private _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 private _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 private _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n this.stateProvinceInfo = result;\n });\n };\n\n private _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 if (this.isBillingAddressRequried) {\n 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 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 private _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 get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n\n return ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(\n cartLine => cartLine.DeliveryMode !== pickupDeliveryModeCode\n );\n }\n\n @computed get billingAddress(): Address | undefined {\n return this.props.data.checkout.result && this.props.data.checkout.result.billingAddress;\n }\n\n @computed get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCards) {\n return 0;\n }\n return checkoutState.giftCards.reduce((count: number, giftCard: GiftCard) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed get shouldPaidByCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart || !cart.CartLines || !cart.CartLines.length) {\n return false;\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;\n return amountDue > 0;\n }\n\n @computed get isBillingAddressRequried(): boolean {\n return this.shouldPaidByCard;\n }\n\n private _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n private onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\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 private onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._resetView();\n break;\n case AddressOperation.Show:\n // @ts-ignore: Compiler not reconizing property form extending class\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n private onEdit = (): void => {\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 private _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 // tslint:disable-next-line:no-floating-promises\n this.props.data.checkout.result.updateBillingAddress({ newBillingAddress });\n }\n };\n\n private _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n private _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 }\n };\n\n private _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\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\n/* eslint-disable no-duplicate-imports */\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../mands-c-checkout-shipping-address/common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './mands-checkout-billing-address';\n\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items &&\n items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\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 &&\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\nconst CheckoutBillingAddressView: React.FC = props => {\n const { CheckoutBillingAddress, viewState, heading, sameAsShippingCheckbox, showAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n {heading}\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 { 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 addressAddNewButtonText?: string;\n addressAddNewButtonAriaLabel?: 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 multipleAddressShippingEnabled?: boolean;\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 addressTypeDescription = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\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, addressTypeDescription)\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, multipleAddressShippingEnabled } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n
\n \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 addressTypeDescription = addressType.Description || '';\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\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\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\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 {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} 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 { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\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 { 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(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\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 multipleAddressShippingEnabled: this.props.config.multipleAddressShippingEnabled\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 const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].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 /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\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":["getButtonAriaLabel","ariaLabel","addressName","replace","getAddressList","className","addresses","showPrimaryButton","props","heading","resources","isUpdating","addressActionResponse","selectedAddress","addressFormat","onEditAddress","onUpdatePrimaryAddress","errorTitle","errorMessage","List","isShowList","length","React","Heading","Object","assign","items","map","address","isSelectedAddress","RecordId","isShowError","isInvalidAsyncState","isEditAsyncCustomerFeatureEnabled","canRenderAsyncCustomerDataAsUnmodifiable","isAsyncCustomer","isAsyncCustomerAddressCreationFeatureEnabled","Item","key","showItems","AddressShow","getAddressFormat","ThreeLetterISORegionName","error","Error","title","AddressErrorTitleComponent","message","AddressErrorMessageComponent","isShowPrimaryButton","primaryButton","AddressButtonComponent","classnames","disabled","text","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","Name","onClick","editButton","addressEditButtonText","addressEditButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","filter","IsPrimary","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AccountManagementAddress","constructor","super","countryRegionId","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","_renderAddOrUpdateAddress","AddressAddUpdate","this","addressType","AddressType","Shipping","addUpdateAddress","defaultCountryRegionId","validationError","dropdownDisplayData","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","stateProvinceInfo","onInputChange","_onAddressAddUpdateInputChange","onDropdownChange","_onAddressAddUpdateDropdownChange","onSave","_onAddressAddUpdateSubmit","onCancel","_resetView","_renderListAddress","_this$props$data$cust","_this$props$context$a","config","onAddAddress","disableAddButton","ListAddress","isShowEmptyListMessage","emptyListMessage","addressEmptyListAddressMessage","addButton","addressAddButtonText","addressAddButtonAriaLabel","primaryAddressList","otherAddressList","AddressList","customerAddresses","_goToEditAddress","_goToAddAddress","_onSubmitUpdatePrimaryAddress","data","customerInformation","result","IsAsyncCustomer","context","app","onAddressAddUpdate","name","value","set","event","target","RegExp","AddressItemType","_onCountryChange","_onAddressUpdate","response","onSuccess","then","hasError","validateAddressFormat","addressCommon","isAuthenticatedFlow","Street","HouseNumber","currentOperation","AddressOperation","Update","updateCustomerAddress","addCustomerAddress","Promise","resolve","_onAddOrUpdateSuccess","_getStateProvinces","Add","getStateProvinces","_updateCurrentOperation","operation","updateCustomerPrimaryAddress","_onUpdatePrimaryAddressSuccess","_this$addUpdateAddres","_this$addUpdateAddres2","_this$addUpdateAddres3","_this$addUpdateAddres4","_objectSpread","split","trim","_setDefaultCountryRegionId","undefined","telemetry","customerAccountNumber","request","user","countryRegions","AddressFormat","AddressMetaData","AddressCommon","componentDidMount","reaction","render","_data$featureState","_data$featureState2","_this$props$context$a2","renderView","featureState","find","feature","IsEnabled","infoMessageBar","Msdyn365","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","viewState","isShowAddresList","isShowAddOrUpdateAddress","AccountAddressManagement","moduleProps","showAddressList","showAddOrUpdateAddress","market","channel","ChannelCountryRegionISOCode","getDefaultCountryRegionId","__decorate","observable","observer","_ref","AddressDetail","Node","item","description","_ref2","AddressLists","_ref3","_ref4","AddressForm","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","AddressItem","label","alert","input","AddressError","Module","async","focusOnCheckoutError","checkoutErrorRef","ctx","checkoutState","getCheckoutState","catch","exception","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","marketISOCode","currentCountryRegion","countryRegion","ISOCode","CountryRegionId","parseRetailException","addressErrorMessageTitle","addressGenericErrorMessage","actionContext","GetStateProvincesInput","apiSettings","getStateProvinceAction","submitCustomerAddress","addAddress","updateAddress","updatePrimaryAddress","addressAction","AddressManagementInput","execAddressAction","AddressItemDisplayType","AddressValidationRuleType","countryRegionsInfo","addressMetaData","stateDefaultSelectionText","defaultStateText","dropdownData","getCountryFormat","State","getStateFormat","unshift","getTwoLetterISORegionName","_getCountryRegionInfo","isValid","forEach","addressFormatItem","validationRule","validationRules","_validateRegEx","propertyName","regEx","test","get","filteredCountries","allowedCountries","i","findIndex","push","countryRegionInfo","_getAddressDisplayFormat","ShortName","state","StateId","StateName","toLowerCase","addressDisplayItem","AddressFormatLines","nameDisplayItem","_extendAddressDisplayFormat","houseNumberDisplayItem","console","log","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","Phone","type","metaData","requiredFieldRegEx","zipCodeRegEx","cityNameRegEx","nameRegEx","phoneRegEx","validationErrorMessage","resourcesPrefix","maxLengthErrorMessage","maxLength","requiredFields","AddressTypeValue","ZipCode","City","_init","id","_addItem","Input","County","Dropdown","District","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","displayType","nameKey","_validationRules","ruleType","keys","Required","itemType","_validationRule","Format","role","additionalAddributes","displayData","onChange","getDropdownItem","selectedValue","isSelected","htmlFor","getRequriedAttribute","getAddessItems","elementId","classname","AddressInputComponent","AdressDropdownComponent","AddressLabelComponent","AddressAlertComponent","editAddressHeading","addAddressHeading","hasExternalSubmitGroup","addressSaveButtonText","addressSaveButtonAriaLabel","addressCancelButtonText","addressCancelButtonAriaLabel","isShowLabel","labelText","isEmpty","mainClass","AddressDetailItemComponent","getInput","index","_addressPurposes$find","onAddressOptionChange","addressPurposes","addressTypeDescription","purpose","Description","ichecked","additionalAttributes","checked","format","addressChangeCheckboxAriaLabel","toString","getAddressSelectItems","SelectItem","ErrorComponent","CheckoutShippingAddress","addressListSelectedAddress","moduleState","onSubmit","_renderSelectAddress","onAddAddressHandler","onSaveHandler","onCancelHandler","SelectAddress","AddressSelect","_onAddressOptionChange","_onSelectAddress","addressRecordId","currentTarget","_updateModuleState","_clearError","_getDefaultAddress","_initModuleState","init","status","_canShip","onEdit","defaultAddress","_getShippingAddressFromCartLines","Show","_setShippingAddress","pickupDeliveryModeCode","PickupDeliveryModeCode","cartLines","checkout","checkoutCart","cart","CartLines","cartLine","DeliveryMode","ShippingAddress","information","shippingAddress","some","_request$channel","newShippingAddress","TwoLetterISORegionName","updateShippingAddress","onReady","onPending","onUpdating","_setErrorMessage","setHasError","setState","countryStates","_this$props$data$chec","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec2","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec3","checkoutErrorFocus","errorMessageTitle","isShowAddress","showAddress","_renderShowAddress","showAddressSelect","computed","withModuleState","ref","isChecked","CheckoutBillingAddress","Billing","_onSubmitAddress","isBillingAddressRequried","isCartContainsItemsForShipping","isBillingAddressSameAsShipping","_onBillingAddressSameAsShippingChange","billingAddress","_setBillingAddress","newBillingAddress","updateBillingAddress","isDisabled","onDisable","isShowSameAsShippingCheckbox","AddressBillingHeadingComponent","addressBillingAddressHeading","sameAsShippingCheckbox","AddressBillingCheckoxComponent","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","loyaltyAmount","giftCards","reduce","count","giftCard","Balance","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","shouldPaidByCard","AutoSuggest","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","_loadMapAPI","storeSelectorStateManager","loadMapApi","lang","isAuthenticated","updateLogisticsLocationRoleRecordId","GetAddressPurposesInput","getAddressPurposesAction","ArrayExtensions","hasElements","addressPurpose","LogisticsLocationRoleRecordId","getAddressTypeFormat","validationtor","_inputValidation","getTranformedAddress","postalCode","selectedState","adminDistrict","addressLine","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","AddressTypeItem","isPrimaryDisplayItem","excluded","required","excludedTypes","PhoneRegex","defaultRegex","Checkbox","includes","isRequired","rule","optionalString","itemId","telemetryContent","autoFocus","shouldBeAutoFocused","payLoad","getPayloadObject","attributes","getTelemetryAttributes","defaultAddressType","shouldAutoFocus","AdressCheckboxComponent","shouldUseAutoFocus","onRemoveAddress","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","_heading$headingTag","handleLineItemHeadingChange","headingComponent","tag","headingTag","editProps","requestContext","contextRequest","multipleAddressShippingEnabled","addressAddNewButtonText","addressAddNewButtonAriaLabel","addressTypeValue","_onSuggestionSelected","_clearAddressFields","_this$autoSuggest","autoSuggest","_clearValidation","_dataInitialize","_data$countryRegions$","_data$addressPurposes","_data$address$result","_onRemoveAddress","_attachMapAutoSuggest","_this$autoSuggest2","isMapApiLoaded","_this$autoSuggest3","twoLetterISORegionName","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","getTelemetryObject","telemetryPageName","friendlyName","autoSuggestionEnabled","BingMapsEnabled","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest4","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest5","shouldComponentUpdate","nextProps","nextState","screenReaderNotification","action","BusinessAccountAddress","excludedList","_resetAddressFields","_data$countryStates$r","Company","_updateAddress","_updateCountryRegionId","updateForm","cleanValue","_isEmpty","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","resetAddress","AddressBillingCheckbox","AddressBillingHeading","twoLetterIsoRegionName","isBillingAddressSameAsShippingAddress","shouldEnableSinglePaymentAuthorizationCheckout","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","additionalProperties","_this$props$data$chec5","_this$props$data$chec4","removeBillingAddress","_this$props$data$chec6","_this$props$data$chec7","_shouldHideBillingAddressForOBO","_this$selectedAddress","_featureState$result","_request$channel2","_request$channel3","_this$props$data$chec8","channelDeliveryOptionConfig","retailMultiplePickUpOptionEnabled","emailDeliveryModeCode","EmailDeliveryModeCode","hasInvoiceLine","_channelDeliveryOptio","PickupDeliveryModeCodes","deliveryMode","_this$props$data$chec9","_this$props$data$chec10","giftCardExtends","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","getCustomerAccountAmount","_this$props$data$chec11","_this$props$data$chec12","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","CheckoutPickupCartLines","moduleClassName","itemTitle","isMobileCheck","isMobile","variant","VariantType","Browser","gridSettings","xs","w","sm","md","lg","xl","isMobileView","isShowQty","quantity","lineId","Image","imageProps","productQuantityInfo","altText","defaultImageSettings","viewports","q","h","lazyload","quality","_data$featureState$re2","multiplePickupStoreSwitchName","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","products","_getProductsByCartLines","ChannelId","line","product","x","ProductId","shippingGroups","formatAddress","_data$featureState$re","_isDelivery","_isNotPickupMode","FulfillmentStoreId","_this$props$context$r","pickupDeliveryMode","pickupMode","channelId","productInputs","ProductInput","CatalogId","getSimpleProducts","onCancelButtonHandler","_isNewAddress","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","country","_country$ISOCode","shippingCartLines","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","updateHasShippingAddress","newHasShippingAddress","_checkout$result$chec","_checkout$result$chec2","_channelDeliveryOptio2","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_countItems","cartlines","_address","_featureState$result2","headingImages","itemsText","singleItemText","imageSettings","_line$cartLine$LineId","_line$product","_line$product$Primary","_line$product2","_line$product3","_context$request$app","_line$cartLine$Quanti","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","OmniChannelMedia","loadFailureBehavior","Quantity","numberOfCartLines","itemText","lineImageProps","cartLineImages","isRetailMultiplePickUpOptionEnabled","showAddressSelectHandler","showAddOrUpdateAddressHandler","_this$props$data$cart","_this$props$data$cart2","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","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","update","updateModuleStates","WrappedComponent","_super","ModuleState","call","initializeState","_b","typeName","states","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isReady","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","onSkip","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","childId","_isPaymentSectionContainer","enableControl","__extends"],"sourceRoot":""}