{"version":3,"file":"static/js/18.6c491c866eca53ddb545.chunk.js","mappings":"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MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,M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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-autosuggest.ts?d373","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/actions/get-state-provinces.ts?4008","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-common.ts?f4cc","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-format.data.ts?1ce5","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-module.data.ts?c633","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-format.ts?b9ef","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/address-meta-data.ts?e0f3","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-alert.tsx?99d1","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-button.tsx?55d4","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-checkbox.tsx?0721","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-dropdown.tsx?6e8b","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-error-message.tsx?a335","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-error-title.tsx?227d","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-input.tsx?713c","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-label.tsx?597f","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-add.tsx?eb99","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-detail-item.tsx?6cc8","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-show.tsx?8659","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/common/components/address-select.tsx?bbe0","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.tsx?35a0","webpack://Msdyn365.Commerce.Online/./src/modules/custom-checkout-shipping-address/custom-checkout-shipping-address.view.tsx?774b","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/utils/convert_a2_a3.ts?c0bb","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/account-customer-balance.tsx?8d5a","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/account-customer-balance.view.tsx?70d2","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/components/account-actions.tsx?e021","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/components/account-statement-request-modal.tsx?18c0","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/components/index.tsx?fba9","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-button.tsx?33d4","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-error.tsx?b9c0","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-input.tsx?27a8","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-label.tsx?3142","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-loading-icon.tsx?96eb","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-loading-message.tsx?9245","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/components/sign-up-success.tsx?7f30","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/sign-up.tsx?5ad1","webpack://Msdyn365.Commerce.Online/./src/modules/sign-up/sign-up.view.tsx?08eb","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","webpack://Msdyn365.Commerce.Online/./src/common/waiting.tsx?8095","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?1d63","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?4299","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.tsx?c853","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/checkout-section-container.view.tsx?b4ab","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-section-container/components/loading.tsx?2e57"],"sourcesContent":["// tslint:disable:no-reference\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address/src/common/address-autosuggest.data';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport { ITelemetry } from '@msdyn365-commerce/core';\r\n/**\r\n *\r\n * Auto Suggest\r\n */\r\nexport class AutoSuggest {\r\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\r\n private telemetry: ITelemetry;\r\n private countryCode?: string;\r\n private bingMapsApiKey?: string;\r\n private defaultLanguageId?: string;\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n private autoSuggestOptions: IAutoSuggestOptions;\r\n\r\n constructor(\r\n telemetry: ITelemetry,\r\n autoSuggestOptions: IAutoSuggestOptions,\r\n BingMapsApiKey?: string,\r\n countryCode?: string,\r\n defaultLanguageId?: string\r\n ) {\r\n this.telemetry = telemetry;\r\n this.autoSuggestOptions = autoSuggestOptions;\r\n this.bingMapsApiKey = BingMapsApiKey;\r\n this.countryCode = countryCode;\r\n this.defaultLanguageId = defaultLanguageId;\r\n }\r\n\r\n public attachAutoSuggest = (\r\n inputId: string,\r\n containerId: string,\r\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\r\n ): void => {\r\n if (!this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = {\r\n ...this.autoSuggestOptions,\r\n countryCode: this.countryCode\r\n };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\r\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\r\n setTimeout(() => {\r\n document.querySelector(inputId)?.setAttribute('type', 'text');\r\n }, 0);\r\n },\r\n errorCallback: () => {\r\n if (this.telemetry) {\r\n this.telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: this.bingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\r\n if (this.autoSuggestManager) {\r\n this.autoSuggestOptions.countryCode = countryCode;\r\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\r\n }\r\n };\r\n\r\n public disposeAutoSuggest = (): void => {\r\n this.autoSuggestManager?.detachAutosuggest();\r\n this.autoSuggestManager?.dispose();\r\n this.autoSuggestManager = undefined;\r\n };\r\n\r\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\r\n await storeSelectorStateManager.loadMapApi({\r\n key: this.bingMapsApiKey,\r\n lang: this.countryCode,\r\n market: this.defaultLanguageId\r\n });\r\n };\r\n}\r\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get state provinces data action\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getStateProvinceAction\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 resources: IAddressResource;\r\n private telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\r\n this.context = context;\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.context.request.user.isAuthenticated;\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 this.telemetry.debug('Unable to get state provinces');\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n // For any address, check for common requried field else treat it as invalid\\empty address.\r\n public isEmpty = (address: Address): boolean => {\r\n if (address && address.ThreeLetterISORegionName && address.City) {\r\n return false;\r\n }\r\n\r\n return true;\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 address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\r\n\r\n const input = new AddressManagementInput(address);\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\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 const currentAddress = addresses.find(\r\n newAddress =>\r\n newAddress.Name === address.Name &&\r\n newAddress.AddressTypeValue === address.AddressTypeValue &&\r\n newAddress.City === address.City &&\r\n newAddress.Phone === address.Phone &&\r\n newAddress.State === address.State &&\r\n newAddress.Street === address.Street &&\r\n newAddress.ThreeLetterISORegionName === address.ThreeLetterISORegionName &&\r\n newAddress.ZipCode === address.ZipCode\r\n );\r\n response.address = address.RecordId ? address : currentAddress ? currentAddress : addresses[addresses.length - 1];\r\n } else {\r\n response.address = address;\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 this.telemetry.debug('Unable to exec address action');\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","export enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown',\r\n Checkbox = 'Checkbox'\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 IsPrimary = 1003,\r\n AddressTypeValue = 1004,\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}\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 | number; value?: string }[];\r\n}\r\n","import { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\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 Company = 'Company'\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 addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressRemoveButtonText: string;\r\n addressRemoveButtonAriaLabel: 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 addressNameLabelOptional?: string;\r\n addressNameRequiredErrorMessage: string;\r\n addressPhoneLabel: string;\r\n addressPhoneLabelOptional?: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeLabelOptional?: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityLabelOptional?: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyLabelOptional?: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateLabelOptional?: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameLabelOptional?: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictLabelOptional?: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberLabelOptional?: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentLabelOptional?: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxLabelOptional?: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRULabelOptional?: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRULabelOptional?: 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}\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 {\r\n Address,\r\n AddressPurpose,\r\n CountryRegionInfo,\r\n StateProvinceInfo\r\n} 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 addressPurposes?: AddressPurpose[];\r\n private addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\r\n this.countryRegionsInfo = countryRegionsInfo;\r\n this.addressMetaData = addressMetaData;\r\n this.addressPurposes = addressPurposes;\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 getAddressTypeFormat(): { key?: number; value?: string }[] {\r\n return (this.addressPurposes || []).map(addressPurpose => {\r\n return {\r\n key: addressPurpose.AddressType,\r\n value: addressPurpose.Name\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 dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\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 = (\r\n address: Address,\r\n validationError: Address,\r\n countryRegionId: string,\r\n propertyName?: string\r\n ): boolean => {\r\n let isValid: boolean = true;\r\n let validationtor;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\r\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\r\n if (validationtor !== undefined) {\r\n isValid = validationtor;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n };\r\n\r\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\r\n const address: Address = {};\r\n\r\n // Zip Code\r\n if (result.address.postalCode !== undefined) {\r\n address.ZipCode = result.address.postalCode;\r\n } else {\r\n address.ZipCode = '';\r\n }\r\n\r\n // State\r\n if (stateProvinceInfo) {\r\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\r\n if (!selectedState) {\r\n address.State = '';\r\n address.StateName = result.address.adminDistrict;\r\n } else {\r\n address.State = selectedState.StateId;\r\n address.StateName = selectedState.StateName;\r\n }\r\n }\r\n\r\n // Street\r\n if (result.address.addressLine !== undefined) {\r\n address.Street = result.address.addressLine;\r\n } else {\r\n address.Street = ' ';\r\n }\r\n\r\n // City\r\n if (result.address.locality !== undefined) {\r\n address.City = result.address.locality;\r\n } else {\r\n address.City = '';\r\n }\r\n\r\n // District\r\n if (result.address.district !== undefined) {\r\n address.DistrictName = result.address.district;\r\n address.CountyName = result.address.district;\r\n } else {\r\n address.DistrictName = '';\r\n }\r\n\r\n // formatted Address\r\n address.FullAddress = result.address.formattedAddress;\r\n\r\n return address;\r\n };\r\n\r\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, {\r\n [addressFormatItem.name]: validationRule.message\r\n });\r\n return false;\r\n }\r\n }\r\n return undefined;\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 AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\r\n if (AddressTypeItem) {\r\n addressDisplayItem.push(AddressTypeItem);\r\n }\r\n\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n\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 const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\r\n if (isPrimaryDisplayItem) {\r\n addressDisplayItem.push(isPrimaryDisplayItem);\r\n }\r\n }\r\n\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 private resourcesPrefix: string = 'address';\r\n private maxLength: number = 64;\r\n private requiredFields: AddressItemType[];\r\n private excludedTypes: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\r\n this.resources = resources || {};\r\n this.excludedTypes = excluded || [];\r\n this.requiredFields =\r\n required !== undefined\r\n ? required\r\n : [\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 ];\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\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, 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.Street, AddressItemDisplayType.Input);\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 this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\r\n if (this.excludedTypes.includes(type)) {\r\n return;\r\n }\r\n\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n\r\n // find out if currentItem is required field\r\n const validationRules = this._validationRules(type, nameKey);\r\n let isRequired = false;\r\n validationRules.forEach(rule => {\r\n if (rule.type === AddressValidationRuleType.Required) {\r\n isRequired = true;\r\n }\r\n });\r\n\r\n // if no optional string is provided in resource file, use the original label text\r\n const optionalString =\r\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\r\n maxLength: this.maxLength,\r\n validationRules: validationRules,\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 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","/*---------------------------------------------------------------------------------------------\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\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 telemetryContent?: ITelemetryContent;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, text);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressCheckbox {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n isChecked: boolean;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressCheckbox: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n isChecked,\r\n additionalAddributes,\r\n telemetryContent,\r\n autoFocus,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AdressCheckbox;\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 | number;\r\n additionalAddributes?: object;\r\n displayData: { key?: string | number; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\r\n let isSelected: boolean;\r\n if (typeof key === 'number') {\r\n isSelected = key === selectedValue;\r\n } else {\r\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n }\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 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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\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 autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressInput: React.FC = ({\r\n id,\r\n name,\r\n className,\r\n type,\r\n value,\r\n maxLength,\r\n additionalAddributes,\r\n autoFocus,\r\n telemetryContent,\r\n onChange\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \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 * 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, ITelemetryContent } 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 './../address-module.data';\r\n\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\n\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressCheckboxComponent from './address-checkbox';\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 defaultAddressType: number;\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 telemetryContent?: ITelemetryContent;\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 defaultAddressType,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange\r\n } = props;\r\n\r\n // @ts-ignore\r\n return addressFormat.map((addressFormatItem, index) => {\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 if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\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\r\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\r\n selectedValue = selectedValue || defaultAddressType;\r\n }\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, id: `${elementId}_container` },\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 telemetryContent\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: onSave && (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: onCancel && (\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 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, {\r\n 'msc-address-detail__item-empty': isEmpty,\r\n 'msc-address-detail__item-newline': isNewLine\r\n });\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, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressItem } from './../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 addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, addressPurposes, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n const addressType = addressPurposes.find(\r\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\r\n );\r\n if (addressType) {\r\n const value = addressType.Name || '';\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n }\r\n }\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 { INodeProps, ITelemetryContent } 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 './../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 addressPurposes: AddressPurpose[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n telemetryContent?: ITelemetryContent;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\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 } = props;\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 };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat, addressPurposes } = 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 addressPurposes: addressPurposes\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. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n/* tslint:disable: no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address/src/common/address-autosuggest.data';\r\nimport { AutoSuggest } from './common/address-autosuggest';\r\nimport { AddressCommon } from './common/address-common';\r\nimport { AddressFormat } from './common/address-format';\r\nimport { AddressItemType } from './common/address-format.data';\r\nimport { AddressMetaData } from './common/address-meta-data';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from './common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from './common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from './common/components/address-show';\r\nimport { ICustomCheckoutShippingAddressData } from './custom-checkout-shipping-address.data';\r\nimport { ICustomCheckoutShippingAddressProps } from './custom-checkout-shipping-address.props.autogenerated';\r\n\r\nexport interface ICheckoutAddressProps extends ICustomCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n// @ts-ignore\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private addUpdateAddress: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private addressPurposes: AddressPurpose[];\r\n private resources: IAddressResource;\r\n private defaultAddressType: number = 6; // Default to Home\r\n private telemetryContent?: ITelemetryContent;\r\n private autoSuggest?: AutoSuggest;\r\n private multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data?.featureState?.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n showAddressSelect: this._renderSelectAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this.onSubmit,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderSelectAddress = (): IAddressSelectProps => {\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n onAddAddress: this._goToAddAddress,\r\n onSave: this._onSelectAddress,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n @action\r\n private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { ['Street']: '' });\r\n set(this.addUpdateAddress, { ['ZipCode']: address.ZipCode });\r\n set(this.addUpdateAddress, { ['CountyName']: address.CountyName });\r\n set(this.addUpdateAddress, { ['City']: address.City });\r\n set(this.addUpdateAddress, { ['State']: address.State });\r\n set(this.addUpdateAddress, { ['DistrictName']: address.DistrictName });\r\n set(this.addUpdateAddress, { ['FullAddress']: address.FullAddress });\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { ['Street']: address.Street });\r\n }, 0);\r\n };\r\n\r\n @action\r\n private _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n @action\r\n private _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n private _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : Promise.resolve({ address: this.addUpdateAddress });\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n this._onAddOrUpdateSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['TwoLetterISORegionName']: twoLetterISORegionName\r\n });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n private _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { ['State']: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n private _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n if (this._canShip()) {\r\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n private onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n private _getShippingAddressFromCartLines = (): Address | undefined => {\r\n const { request } = this.props.context;\r\n const { channelDeliveryOptionConfig } = this.props.data;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n\r\n const cartLines = this.retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n\r\n if (cartLines && cartLines.length > 0) {\r\n return cartLines[0].ShippingAddress;\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-ignore: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout?.result?.checkoutCart?.cart?.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n private _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n private _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n private _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.props.data.checkout.result.updateShippingAddress({\r\n newShippingAddress\r\n });\r\n }\r\n };\r\n\r\n @computed get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n }\r\n\r\n private _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n ['AddressTypeValue']: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n private _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\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\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps,\r\n IAddressSelectItem,\r\n IAddressSelectProps,\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './custom-checkout-shipping-address';\r\nimport { convert_a2_to_a3 } from '../../themes/venchi/utils/convert_a2_a3';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items &&\r\n items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const resources = other?.moduleProps?.resources;\r\n // @ts-ignore\r\n const localeString = other?.moduleProps?.context?.request?.locale;\r\n // @ts-ignore\r\n const sitePath = other?.moduleProps?.context?.request?.sitePath;\r\n const europe = ['/fr', '/de'];\r\n // @ts-ignore\r\n const currency = other?.moduleProps?.context?.request?.channel?.Currency;\r\n const locale =\r\n sitePath && europe.includes(sitePath)\r\n ? 'eu'\r\n : currency === 'EUR' && localeString === 'en-GB'\r\n ? 'eu'\r\n : localeString.replace('-', '');\r\n\r\n const countriesAvail = {\r\n enGB: {\r\n autocomplete: ['gb'],\r\n select: ['GBR']\r\n },\r\n it: {\r\n autocomplete: ['it'],\r\n select: ['ITA']\r\n },\r\n enUS: {\r\n autocomplete: ['us'],\r\n // autocomplete: ['us', 'ca'],\r\n //select: ['USA', 'CAN']\r\n select: ['USA']\r\n },\r\n eu: {\r\n // removed componentRestrictions for country as there is limit of 5 in google maps\r\n // autocomplete:['at','be','bg','ch','cz','de','dk','es','ee','fi','fr','gr','hr','hu','ie','li','lt','lu','lv','mc','nl','no','pl','pt','ro','sk','si','se'],\r\n autocomplete: [],\r\n select: [\r\n 'AUT',\r\n 'BEL',\r\n 'BGR',\r\n 'CHE',\r\n 'CZE',\r\n 'DEU',\r\n 'DNK',\r\n 'ESP',\r\n 'EST',\r\n 'FIN',\r\n 'FRA',\r\n 'GRC',\r\n 'HRV',\r\n 'HUN',\r\n 'IRL',\r\n 'LIE',\r\n 'LTU',\r\n 'LUX',\r\n 'LVA',\r\n 'MCO',\r\n 'NLD',\r\n 'NOR',\r\n 'POL',\r\n 'PRT',\r\n 'ROU',\r\n 'SVK',\r\n 'SVN',\r\n 'SWE'\r\n ]\r\n }\r\n };\r\n // @ts-ignore\r\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;\r\n // tslint:disable-next-line:typedef\r\n function gMapsAutocomplete() {\r\n const googleComponents = [\r\n { googleComponent: 'sublocality_level_1', id: 'shipping_addresscity' },\r\n { googleComponent: 'locality', id: 'shipping_addresscity' },\r\n { googleComponent: 'postal_town', id: 'shipping_addresscity' },\r\n {\r\n googleComponent: 'administrative_area_level_3',\r\n id: 'shipping_addresscity'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_1',\r\n id: 'shipping_addressstate'\r\n },\r\n { googleComponent: 'postal_code_prefix', id: 'shipping_addresszipcode' },\r\n { googleComponent: 'postal_code', id: 'shipping_addresszipcode' },\r\n {\r\n googleComponent: 'country',\r\n id: 'shipping_addressthreeletterisoregionname'\r\n },\r\n {\r\n googleComponent: 'administrative_area_level_2',\r\n id: 'shipping_addresscounty'\r\n }\r\n ];\r\n\r\n const autocompleteFormField = document.getElementById('shipping_addressstreet');\r\n // @ts-ignore\r\n const autocomplete = new window.google.maps.places.Autocomplete(autocompleteFormField, {\r\n types: ['address'],\r\n componentRestrictions: {\r\n country: countriesAvail[locale] && countriesAvail[locale].autocomplete\r\n }\r\n });\r\n if (autocompleteFormField === null) {\r\n return;\r\n }\r\n autocompleteFormField.setAttribute('placeholder', resources.startTypingYourAddress);\r\n // @ts-ignore\r\n window.google.maps.event.clearInstanceListeners(autocompleteFormField);\r\n // @ts-ignore\r\n window.google.maps.event.addListener(autocomplete, `place_changed`, () => {\r\n const place = autocomplete.getPlace();\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(autocompleteFormField, place.name);\r\n const eCustom = new Event('change', { bubbles: true });\r\n autocompleteFormField.dispatchEvent(eCustom);\r\n\r\n for (const googleComponent of googleComponents) {\r\n const addressComponents = place.address_components;\r\n if (addressComponents && addressComponents.length > 0) {\r\n // @ts-ignore\r\n addressComponents.forEach(addressComponent => populateFormElements(addressComponent, googleComponent));\r\n }\r\n }\r\n });\r\n }\r\n\r\n // tslint:disable-next-line:typedef no-any\r\n function populateFormElements(\r\n addressComponent: { types: any[]; short_name: string; long_name: string },\r\n formMap: { googleComponent: any; id: string }\r\n ) {\r\n const addressType = addressComponent.types[0];\r\n\r\n if (document.getElementById(formMap.id) === undefined || document.getElementById(formMap.id) === null) {\r\n return;\r\n }\r\n\r\n if (formMap.googleComponent === addressType) {\r\n if (formMap.id === 'shipping_addressthreeletterisoregionname' || formMap.id === 'shipping_addressstate') {\r\n const input = document.getElementById(formMap.id) as HTMLSelectElement;\r\n if (input !== null) {\r\n const formValue = locale === 'it' && formMap.id === 'shipping_addressstate' ? 'DEF' : addressComponent.short_name;\r\n const selectedValue = selectItemByValue(input, formValue, addressType === 'country' ? true : false);\r\n if (selectedValue !== undefined) {\r\n input.value = selectedValue;\r\n const event = new Event('change', { bubbles: true });\r\n input.dispatchEvent(event);\r\n }\r\n }\r\n } else {\r\n const formValue = formMap.id === 'shipping_addresscounty' ? addressComponent.short_name : addressComponent.long_name;\r\n const input = document.getElementById(formMap.id);\r\n if (input !== undefined) {\r\n if (nativeInputValueSetter === undefined) {\r\n return;\r\n }\r\n nativeInputValueSetter.call(input, formValue);\r\n const eCustom = new Event('input', { bubbles: true });\r\n if (input !== null) {\r\n input.dispatchEvent(eCustom);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n // tslint:disable-next-line:typedef\r\n function selectItemByValue(elmnt: HTMLSelectElement, value: string, is_convert_a2_to_a3: boolean) {\r\n for (let i = 0; i < elmnt.options.length; i++) {\r\n const eValue = elmnt.options[i].value;\r\n if ((is_convert_a2_to_a3 && eValue === convert_a2_to_a3[value]) || (!is_convert_a2_to_a3 && eValue === value)) {\r\n return elmnt.options[i].value;\r\n }\r\n }\r\n }\r\n const checkPhone = () => {\r\n const saveAddressButton = document.querySelector('.ms-checkout__guided-card-btn-save.msc-btn') as HTMLButtonElement;\r\n const phone = document.getElementById('shipping_addressphone') as HTMLInputElement;\r\n if (phone) {\r\n const phoneCtn = phone.closest('.msc-address-form__item') as HTMLElement;\r\n const phoneAlert = phoneCtn.getElementsByClassName('msc-address-form__alert')[0];\r\n const pattern = /^[0-9]*$/;\r\n const pattern2 = /^\\+?\\d+$/;\r\n phone.setAttribute('aria-required', 'true');\r\n phone.setAttribute('type', 'tel');\r\n phone.setAttribute('maxlength', '15');\r\n if (phone.value.length === 0) {\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n }\r\n phone.onkeyup = () => {\r\n if (!phone.value.match(pattern) && !phone.value.match(pattern2)) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else if (phone.value.length < 6) {\r\n phoneCtn.classList.add('address-form__item-invalid');\r\n phoneAlert.textContent = resources.addressPhoneRequiredErrorMessage;\r\n saveAddressButton.setAttribute('disabled', 'true');\r\n } else {\r\n phoneCtn.classList.remove('address-form__item-invalid');\r\n phoneAlert.textContent = '';\r\n saveAddressButton.removeAttribute('disabled');\r\n }\r\n };\r\n }\r\n };\r\n function phoneValidation(): void {\r\n const addressForm = document.getElementsByClassName('msc-address-form')[0];\r\n const saveAddressButton = addressForm\r\n .closest('.ms-checkout__guided-card')\r\n ?.getElementsByClassName('ms-checkout__guided-card-btn-save')[0] as HTMLElement;\r\n const county = document.getElementById('shipping_addresscounty') as HTMLInputElement;\r\n const countyCtn = county && county !== null ? (county.closest('.msc-address-form__item') as HTMLInputElement) : undefined;\r\n const countyAlert = countyCtn?.getElementsByClassName('msc-address-form__alert')[0];\r\n\r\n if (countyCtn !== undefined) {\r\n countyCtn.onkeyup = () => {\r\n countyCtn?.classList.remove('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = '';\r\n }\r\n };\r\n }\r\n if (saveAddressButton !== undefined) {\r\n saveAddressButton.onclick = e => {\r\n const countyValid = locale === 'it' && (county.value === '' || county.value.length > 2) ? false : true;\r\n if (!countyValid) {\r\n countyCtn?.classList.add('address-form__item-invalid');\r\n if (countyAlert) {\r\n countyAlert.textContent = 'Inserire Codice ISO a 2 lettere';\r\n }\r\n const elements = addressForm.querySelectorAll('input');\r\n let fieldInALL = true;\r\n elements.forEach(fieldInControl);\r\n function fieldInControl(element: HTMLInputElement): void {\r\n if (element.value === '' && element.name !== 'County') {\r\n fieldInALL = false;\r\n }\r\n }\r\n if (fieldInALL) {\r\n e.stopPropagation();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n React.useEffect(() => {\r\n gMapsAutocomplete();\r\n const options = document.querySelectorAll('#shipping_addressthreeletterisoregionname option');\r\n options.forEach(o => {\r\n const optionV = (o as HTMLOptionElement).value;\r\n if (countriesAvail[locale] && !countriesAvail[locale].select.includes(optionV)) {\r\n o.remove();\r\n }\r\n });\r\n const countrySelect = document.getElementById('shipping_addressthreeletterisoregionname') as HTMLSelectElement;\r\n if (locale === 'enUS') {\r\n countrySelect.value = 'USA';\r\n }\r\n const event = new Event('change', { bubbles: true });\r\n countrySelect.dispatchEvent(event);\r\n const stateSelect = document.getElementById('shipping_addressstate') as HTMLSelectElement;\r\n if (locale === 'it') {\r\n stateSelect.value = 'DEF';\r\n stateSelect.dispatchEvent(event);\r\n stateSelect.disabled = Boolean('true');\r\n }\r\n phoneValidation();\r\n }, []);\r\n // Phone Verifications\r\n React.useEffect(() => {\r\n checkPhone();\r\n }, [(document?.getElementById('shipping_addressphone') as HTMLInputElement)?.value]);\r\n React.useEffect(() => {\r\n phoneValidation();\r\n }, [document.getElementById('shipping_addressphone')]);\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key === 'Name' && input) {\r\n // @ts-ignore\r\n input.props.maxLength = 34;\r\n }\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","// tslint:disable-next-line:variable-name\r\nexport const convert_a2_to_a3 = {\r\n AF: 'AFG',\r\n AX: 'ALA',\r\n AL: 'ALB',\r\n DZ: 'DZA',\r\n AS: 'ASM',\r\n AD: 'AND',\r\n AO: 'AGO',\r\n AI: 'AIA',\r\n AQ: 'ATA',\r\n AG: 'ATG',\r\n AR: 'ARG',\r\n AM: 'ARM',\r\n AW: 'ABW',\r\n AU: 'AUS',\r\n AT: 'AUT',\r\n AZ: 'AZE',\r\n BS: 'BHS',\r\n BH: 'BHR',\r\n BD: 'BGD',\r\n BB: 'BRB',\r\n BY: 'BLR',\r\n BE: 'BEL',\r\n BZ: 'BLZ',\r\n BJ: 'BEN',\r\n BM: 'BMU',\r\n BT: 'BTN',\r\n BO: 'BOL',\r\n BA: 'BIH',\r\n BW: 'BWA',\r\n BV: 'BVT',\r\n BR: 'BRA',\r\n IO: 'IOT',\r\n BN: 'BRN',\r\n BG: 'BGR',\r\n BF: 'BFA',\r\n BI: 'BDI',\r\n KH: 'KHM',\r\n CM: 'CMR',\r\n CA: 'CAN',\r\n CV: 'CPV',\r\n KY: 'CYM',\r\n CF: 'CAF',\r\n TD: 'TCD',\r\n CL: 'CHL',\r\n CN: 'CHN',\r\n CX: 'CXR',\r\n CC: 'CCK',\r\n CO: 'COL',\r\n KM: 'COM',\r\n CG: 'COG',\r\n CD: 'COD',\r\n CK: 'COK',\r\n CR: 'CRI',\r\n CI: 'CIV',\r\n HR: 'HRV',\r\n CU: 'CUB',\r\n CY: 'CYP',\r\n CZ: 'CZE',\r\n DK: 'DNK',\r\n DJ: 'DJI',\r\n DM: 'DMA',\r\n DO: 'DOM',\r\n EC: 'ECU',\r\n EG: 'EGY',\r\n SV: 'SLV',\r\n GQ: 'GNQ',\r\n ER: 'ERI',\r\n EE: 'EST',\r\n ET: 'ETH',\r\n FK: 'FLK',\r\n FO: 'FRO',\r\n FJ: 'FJI',\r\n FI: 'FIN',\r\n FR: 'FRA',\r\n GF: 'GUF',\r\n PF: 'PYF',\r\n TF: 'ATF',\r\n GA: 'GAB',\r\n GM: 'GMB',\r\n GE: 'GEO',\r\n DE: 'DEU',\r\n GH: 'GHA',\r\n GI: 'GIB',\r\n GR: 'GRC',\r\n GL: 'GRL',\r\n GD: 'GRD',\r\n GP: 'GLP',\r\n GU: 'GUM',\r\n GT: 'GTM',\r\n GG: 'GGY',\r\n GN: 'GIN',\r\n GW: 'GNB',\r\n GY: 'GUY',\r\n HT: 'HTI',\r\n HM: 'HMD',\r\n VA: 'VAT',\r\n HN: 'HND',\r\n HK: 'HKG',\r\n HU: 'HUN',\r\n IS: 'ISL',\r\n IN: 'IND',\r\n ID: 'IDN',\r\n IR: 'IRN',\r\n IQ: 'IRQ',\r\n IE: 'IRL',\r\n IM: 'IMN',\r\n IL: 'ISR',\r\n IT: 'ITA',\r\n JM: 'JAM',\r\n JP: 'JPN',\r\n JE: 'JEY',\r\n JO: 'JOR',\r\n KZ: 'KAZ',\r\n KE: 'KEN',\r\n KI: 'KIR',\r\n KP: 'PRK',\r\n KR: 'KOR',\r\n KW: 'KWT',\r\n KG: 'KGZ',\r\n LA: 'LAO',\r\n LV: 'LVA',\r\n LB: 'LBN',\r\n LS: 'LSO',\r\n LR: 'LBR',\r\n LY: 'LBY',\r\n LI: 'LIE',\r\n LT: 'LTU',\r\n LU: 'LUX',\r\n MO: 'MAC',\r\n MK: 'MKD',\r\n MG: 'MDG',\r\n MW: 'MWI',\r\n MY: 'MYS',\r\n MV: 'MDV',\r\n ML: 'MLI',\r\n MT: 'MLT',\r\n MH: 'MHL',\r\n MQ: 'MTQ',\r\n MR: 'MRT',\r\n MU: 'MUS',\r\n YT: 'MYT',\r\n MX: 'MEX',\r\n FM: 'FSM',\r\n MD: 'MDA',\r\n MC: 'MCO',\r\n MN: 'MNG',\r\n ME: 'MNE',\r\n MS: 'MSR',\r\n MA: 'MAR',\r\n MZ: 'MOZ',\r\n MM: 'MMR',\r\n NA: 'NAM',\r\n NR: 'NRU',\r\n NP: 'NPL',\r\n NL: 'NLD',\r\n AN: 'ANT',\r\n NC: 'NCL',\r\n NZ: 'NZL',\r\n NI: 'NIC',\r\n NE: 'NER',\r\n NG: 'NGA',\r\n NU: 'NIU',\r\n NF: 'NFK',\r\n MP: 'MNP',\r\n NO: 'NOR',\r\n OM: 'OMN',\r\n PK: 'PAK',\r\n PW: 'PLW',\r\n PS: 'PSE',\r\n PA: 'PAN',\r\n PG: 'PNG',\r\n PY: 'PRY',\r\n PE: 'PER',\r\n PH: 'PHL',\r\n PN: 'PCN',\r\n PL: 'POL',\r\n PT: 'PRT',\r\n PR: 'PRI',\r\n QA: 'QAT',\r\n RE: 'REU',\r\n RO: 'ROU',\r\n RU: 'RUS',\r\n RW: 'RWA',\r\n BL: 'BLM',\r\n SH: 'SHN',\r\n KN: 'KNA',\r\n LC: 'LCA',\r\n MF: 'MAF',\r\n PM: 'SPM',\r\n VC: 'VCT',\r\n WS: 'WSM',\r\n SM: 'SMR',\r\n ST: 'STP',\r\n SA: 'SAU',\r\n SN: 'SEN',\r\n RS: 'SRB',\r\n SC: 'SYC',\r\n SL: 'SLE',\r\n SG: 'SGP',\r\n SK: 'SVK',\r\n SI: 'SVN',\r\n SB: 'SLB',\r\n SO: 'SOM',\r\n ZA: 'ZAF',\r\n GS: 'SGS',\r\n ES: 'ESP',\r\n LK: 'LKA',\r\n SD: 'SDN',\r\n SR: 'SUR',\r\n SJ: 'SJM',\r\n SZ: 'SWZ',\r\n SE: 'SWE',\r\n CH: 'CHE',\r\n SY: 'SYR',\r\n TW: 'TWN',\r\n TJ: 'TJK',\r\n TZ: 'TZA',\r\n TH: 'THA',\r\n TL: 'TLS',\r\n TG: 'TGO',\r\n TK: 'TKL',\r\n TO: 'TON',\r\n TT: 'TTO',\r\n TN: 'TUN',\r\n TR: 'TUR',\r\n TM: 'TKM',\r\n TC: 'TCA',\r\n TV: 'TUV',\r\n UG: 'UGA',\r\n UA: 'UKR',\r\n AE: 'ARE',\r\n GB: 'GBR',\r\n US: 'USA',\r\n UM: 'UMI',\r\n UY: 'URY',\r\n UZ: 'UZB',\r\n VU: 'VUT',\r\n VE: 'VEN',\r\n VN: 'VNM',\r\n VG: 'VGB',\r\n VI: 'VIR',\r\n WF: 'WLF',\r\n EH: 'ESH',\r\n YE: 'YEM',\r\n ZM: 'ZMB',\r\n ZW: 'ZWE'\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUsersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n CustomerBalances\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getTelemetryObject, Heading, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceData } from './account-customer-balance.data';\nimport { HeadingTag, IAccountCustomerBalanceProps } from './account-customer-balance.props.autogenerated';\nimport {\n AccountLabels,\n AccountValues,\n ActionBar,\n AdminRequestStatementButton,\n AvailableCreditComponent,\n BackButton,\n BalanceOwedComponent,\n CreditExcessComponent,\n RequestStatementModal\n} from './components';\n\nexport interface IAccountCustomerBalanceViewProps extends IAccountCustomerBalanceProps {\n heading: string;\n homeButton: React.ReactNode;\n accountSectionHeading: React.ReactNode;\n accountLabels: React.ReactNode;\n accountValues: React.ReactNode;\n creditSummarySectionHeading: React.ReactNode;\n creditSummaryLabels?: React.ReactNode;\n creditSummaryValues?: React.ReactNode;\n actions: React.ReactNode;\n requestStatementModal: React.ReactNode;\n availableCredit?: React.ReactNode;\n balanceOwed?: React.ReactNode;\n creditExcess?: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceState {\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n statementRequestMaxDateString?: string;\n}\n\n/**\n *\n * AccountCustomerBalance component.\n * @extends {React.PureComponent>}\n */\nclass AccountCustomerBalance extends React.PureComponent<\n IAccountCustomerBalanceProps,\n IAccountCustomerBalanceState\n> {\n private readonly telemetryContent?: ITelemetryContent;\n\n @computed get canSubmitStatementRequest(): boolean {\n return this.state.statementRequestFromDateString !== '' && this.state.statementRequestToDateString !== '';\n }\n\n constructor(props: IAccountCustomerBalanceProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false,\n statementRequestMaxDateString: new Date().toISOString().split('T')[0]\n };\n }\n\n public render(): JSX.Element | null {\n const customer = get(this.props, 'data.customerInformation.result');\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n if ([customer, account].includes(undefined)) {\n this.props.context.telemetry.error('Customer data is unavailable, module will not render');\n return null;\n }\n\n const { config, resources, context } = this.props;\n const { heading } = config;\n const {\n creditSummarySectionHeading,\n accountSectionHeading,\n backToShoppingText,\n customerSincePrefix,\n availableCreditLabel,\n balanceOwedLabel,\n creditExcessLabel,\n requestStatementButtonLabel,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n myAccountStatementLabel,\n fullOrganizationLabel,\n modalAriaLabel\n } = resources;\n\n const {\n isStatementRequestModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n statementRequestMaxDateString\n } = this.state;\n\n const accountNumber = customer.AccountNumber;\n const createdOn = this._formatJoinDate(new Date(customer.CreatedDateTime));\n const name = `${customer.FirstName} ${customer.LastName}`;\n let customerCredit = 0;\n let customerAccountBalance = 0;\n let excess = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n customerAccountBalance = account.Balance;\n excess = account.Balance - account.CreditLimit;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n customerAccountBalance = account.InvoiceAccountBalance;\n excess = account.InvoiceAccountBalance - account.InvoiceAccountCreditLimit;\n }\n\n const creditExcess = excess > 0 ? this._formatCurrency(excess) : null;\n const availableCredit = this._formatCurrency(customerCredit);\n const balanceOwed = this._formatCurrency(customerAccountBalance);\n const backLink = Msdyn365.getUrlSync('home', context.actionContext) || '';\n const emailAddress = customer.Email;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const isB2BAdmin = isB2BSite && customer.IsB2bAdmin;\n\n const actionBar = isB2BAdmin ? (\n \n ) : (\n isB2BSite && (\n \n )\n );\n\n const viewProps = {\n ...this.props,\n heading: ,\n accountSectionHeading: (\n \n ),\n accountLabels: (\n \n ),\n accountValues: ,\n creditSummarySectionHeading: (\n \n ),\n availableCredit: ,\n balanceOwed: ,\n creditExcess: ,\n homeButton: ,\n actions: actionBar,\n requestStatementModal: isB2BSite && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private _formatCurrency(currency: number): string {\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n\n return `${formatCurrency(currency.toFixed(2), currencyCode)}`;\n }\n\n private _formatJoinDate(date: Date): string {\n const i14nDate = new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n });\n\n return i14nDate.format(date);\n }\n\n private readonly _showRequestStatementModal = (): void => {\n if (!this.state.isStatementRequestModalOpen) {\n this.setState({\n isStatementRequestModalOpen: true\n });\n }\n };\n\n private readonly _toggleModal = (): void => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n };\n\n private readonly _toggleDropdown = (): void => {\n this.setState({\n isStatementRequestAdminDropdownOpen: !this.state.isStatementRequestAdminDropdownOpen\n });\n };\n\n private readonly _updateFromDate = (newFromDate: string) => {\n this.setState({\n statementRequestFromDateString: newFromDate\n });\n };\n\n private readonly _updateToDate = (newToDate: string) => {\n this.setState({\n statementRequestToDateString: newToDate\n });\n };\n\n private readonly _adminShowRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestAdminDropdownOpen: false\n });\n\n this._showRequestStatementModal();\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const B2BUserId = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n\n const statementRequest: AccountStatementRequest = {\n FromDate: new Date(this.state.statementRequestFromDateString),\n ToDate: new Date(this.state.statementRequestToDateString),\n IsForFullOrganization: this.state.statementRequestFullOrg,\n RequestedUserId: B2BUserId,\n RequestingUserEmail: customer.Email,\n DeliveryTypeValue: BusinessPartnerOperationDeliveryType.Email\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this.setState({\n isStatementRequestModalOpen: false\n });\n };\n}\n\nexport default AccountCustomerBalance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\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 { Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceActions {\n className?: string;\n requestStatementButtonLabel: string;\n onRequestStatement(): void;\n}\n\ninterface IAdminRequestStatementProps {\n className?: string;\n requestStatementButtonLabel: string;\n myUserAccountLabel: string;\n fullOrganizationLabel: string;\n isDropdownShowing: boolean;\n buttonReference?: React.RefObject;\n promoteToSellerLabel?: string;\n onToggleDropdown(): void;\n onRequestStatement(isFullOrg: boolean): void;\n onPromoteToSeller?(): void;\n}\n\nexport const ActionBar: React.FC = ({ className, onRequestStatement, requestStatementButtonLabel }) => {\n return (\n
\n \n
\n );\n};\n\nexport const AdminRequestStatementButton: React.FC = ({\n className,\n onRequestStatement,\n requestStatementButtonLabel,\n onToggleDropdown,\n onPromoteToSeller,\n promoteToSellerLabel,\n myUserAccountLabel,\n fullOrganizationLabel,\n isDropdownShowing,\n buttonReference\n}) => {\n const onSelectCustomerAccount = React.useCallback(() => {\n onRequestStatement(false);\n }, [onRequestStatement]);\n\n const onSelectFullOrg = React.useCallback(() => {\n onRequestStatement(true);\n }, [onRequestStatement]);\n\n const onSelectPromoteToSeller = React.useCallback(() => {\n onPromoteToSeller?.();\n }, [onPromoteToSeller]);\n\n const popoverReference = buttonReference !== undefined ? buttonReference : React.createRef();\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n return (\n
\n \n {requestStatementButtonLabel}\n \n \n \n {myUserAccountLabel}\n \n \n {promoteToSellerLabel && (\n \n {promoteToSellerLabel}\n \n )}\n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * The interface for the props for the account statement request modal.\n */\ninterface IAccountStatementRequestModalProps {\n email: string;\n isModalOpen: boolean;\n fromDateString: string;\n toDateString: string;\n canSubmitRequest: boolean;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n fromDateLabel: string;\n toDateLabel: string;\n submitRequestLabel: string;\n cancelLabel: string;\n className: string;\n selectedUser: string;\n selectedUserLabel: string;\n toggle(): void;\n onChangeFromDate(newFromDate: string): void;\n onChangeToDate(newToDate: string): void;\n onSubmitRequest(): void;\n modalAriaLabel?: string;\n maxDateString?: string;\n}\n\nexport const RequestStatementModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n fromDateString,\n toDateString,\n onChangeFromDate,\n onChangeToDate,\n canSubmitRequest,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n selectedUser,\n selectedUserLabel,\n modalAriaLabel,\n maxDateString\n}) => {\n const onChangeFromDateEvent = React.useCallback(\n (event: React.ChangeEvent) => {\n const value = event.target.value;\n\n onChangeFromDate(value);\n },\n [onChangeFromDate]\n );\n\n const onChangeToDateEvent = React.useCallback(\n (event: React.ChangeEvent) => {\n const value = event.target.value;\n\n onChangeToDate(value);\n },\n [onChangeToDate]\n );\n\n /**\n * If the onBlur is called on the fromDate and the date has been changed, reset focus on it.\n * @param event - The event that is triggering onBlur.\n */\n const onBlurFromDate = React.useCallback(\n (event: React.ChangeEvent) => {\n if (ObjectExtensions.isFunction(event.target.focus) && event.target.value !== fromDateString) {\n event.target.focus();\n }\n },\n [fromDateString]\n );\n\n /**\n * If the onBlur is called on the toDate and the date has been changed, reset focus on it.\n * @param event - The event that is triggering onBlur.\n */\n const onBlurToDate = React.useCallback(\n (event: React.ChangeEvent) => {\n if (ObjectExtensions.isFunction(event.target.focus) && event.target.value !== toDateString) {\n event.target.focus();\n }\n },\n [toDateString]\n );\n\n return (\n \n {modalHeaderLabel}\n \n {selectedUser && (\n
\n \n
\n
{selectedUser}
\n
\n )}\n \n
\n {email}\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n {submitRequestLabel}\n \n {` `}\n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { AdminRequestStatementButton } from './account-actions';\nimport { RequestStatementModal } from './account-statement-request-modal';\n\nexport * from './account-actions';\nexport * from './account-statement-request-modal';\n\ninterface IAccountLabel {\n name: string;\n accountNumber: string;\n createdOn: string;\n customerSincePrefix: string;\n}\n\ninterface IAccountValues {\n availableCredit: string;\n availableCreditLabel: string;\n}\n\n/**\n * Prop for Available credit component.\n */\ninterface ICreditSummaryAvailableCredit {\n availableCreditLabel: string;\n availableCredit: string;\n}\n\n/**\n * Prop for Balanced owed component.\n */\ninterface ICreditSummaryBalanceOwed {\n balanceOwedLabel: string;\n balanceOwed: string;\n}\n\n/**\n * Prop for credit excess component.\n */\ninterface ICreditSummaryCreditExcess {\n creditExcessLabel: string | null;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryLabel {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryValues {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface IBackButton {\n link: string;\n label: string;\n telemetryContent?: ITelemetryContent;\n}\n\nexport const AccountLabels: React.FC = ({ name, accountNumber, customerSincePrefix, createdOn }) => (\n
\n

{name}

\n
#{accountNumber}
\n
\n {customerSincePrefix} {createdOn}\n
\n
\n);\n\nexport const AccountValues: React.FC = ({ availableCredit, availableCreditLabel }) => (\n
\n
{availableCreditLabel}
\n
{availableCredit}
\n
\n);\n\nexport const CreditSummaryLabels: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n
{creditExcess}
\n
\n);\n\nexport const CreditSummaryValues: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n {creditExcess &&
{creditExcess}
}\n
\n);\n\n/**\n * Available credit component.\n * @param props - ICreditSummaryAvailableCredit.\n * @param props.availableCreditLabel - Available credit label.\n * @param props.availableCredit - Available credit value.\n * @returns - React Node for available credit component.\n */\nexport const AvailableCreditComponent: React.FC = ({ availableCreditLabel, availableCredit }) => (\n
\n
\n
{availableCreditLabel}
\n
\n
\n
{availableCredit}
\n
\n
\n);\n\n/**\n * Balance Owed Component.\n * @param props - ICreditSummaryBalanceOwed.\n * @param props.balanceOwedLabel - Balance Owed label.\n * @param props.balanceOwed - Balance Owed value.\n * @returns - React Node for balance owed component.\n */\nexport const BalanceOwedComponent: React.FC = ({ balanceOwedLabel, balanceOwed }) => (\n
\n
\n
{balanceOwedLabel}
\n
\n
\n
{balanceOwed}
\n
\n
\n);\n\n/**\n * Credit Excess Component.\n * @param props - ICreditSummaryCreditExcess.\n * @param props.creditExcessLabel - Credit excess label.\n * @param props.creditExcess - Credit excess value.\n * @returns - React Node for credit excess component.\n */\nexport const CreditExcessComponent: React.FC = ({ creditExcessLabel, creditExcess }) => (\n
\n {creditExcess && (\n
\n
{creditExcessLabel}
\n
\n )}\n
\n {creditExcess &&
{creditExcess}
}\n
\n
\n);\nexport const BackButton: React.FC = ({ link, label, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.BackToShopping);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {label}\n \n );\n};\n\nexport { AdminRequestStatementButton, RequestStatementModal };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\n \n);\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpInputProps {\n id?: string;\n hasFocus?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst SignUpInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default SignUpInput;\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 ISignUpLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\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 ISignUpLoadingIcon {\n className: string;\n}\n\nconst SignUpLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignUpLoadingIcon;\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 ISignUpLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignUpLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default SignUpSuccess;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex, PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignUpButtonComponent from './components/sign-up-button';\nimport SignUpErrorComponent from './components/sign-up-error';\nimport SignUpInputComponent from './components/sign-up-input';\nimport SignUpLabelComponent from './components/sign-up-label';\nimport SignUpLoadingIconComponent from './components/sign-up-loading-icon';\nimport SignUpLoadingMessageComponent from './components/sign-up-loading-message';\nimport SignUpSuccessComponent from './components/sign-up-success';\nimport { ISignUpConfig, ISignUpProps, ISignUpResources } from './sign-up.props.autogenerated';\n\nexport interface ISignUpViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignUpItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignUpEmailVerification {\n isRequired: boolean;\n email: ISignUpItem;\n buttonWrapper: INodeProps;\n buttons: React.ReactNode[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Given Name Verification Interface.\n */\nexport interface ISignUpGivenNameVerification {\n isRequired: boolean;\n givenName: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Surname Verification Interface.\n */\nexport interface ISignUpSurnameVerification {\n isRequired: boolean;\n surname: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\nexport interface ISignUpLocalAccount {\n localAccount: INodeProps;\n items: ISignUpItem[];\n emailVerification: ISignUpEmailVerification;\n givenNameVerification: ISignUpGivenNameVerification;\n surnameVerification: ISignUpSurnameVerification;\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface ISignUpLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignUpViewProps {\n className: string;\n viewState: ISignUpViewState;\n loading: ISignUpLoading;\n signUp: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n signUpLocalAccount: ISignUpLocalAccount;\n}\n\n/**\n *\n * SignUp component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignUp extends React.Component> {\n @observable private isGivenNameVerificationRequried: boolean;\n\n @observable private isSurnameVerificationRequried: boolean;\n\n private readonly moduleClassName: string = 'ms-sign-up';\n\n @observable private emailRegex: string;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isEmailVerificationRequried: boolean;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignUpProps) {\n super(props);\n\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isEmailVerificationRequried = false;\n this.isGivenNameVerificationRequried = false;\n this.isSurnameVerificationRequried = false;\n this.isInitialized = false;\n this.templateVersion = '';\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISignUpProps, nextState: ISignUpViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n signUpLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n * @returns - Heading Text.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n * @returns - Paragraph Text.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.disclaimer = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\n switch (obj.ID.toLowerCase()) {\n case 'emailverificationcontrol': {\n this.isEmailVerificationRequried = true;\n this.templateVersion = 'v2';\n break;\n }\n case 'email': {\n this.emailRegex = obj.PAT;\n this.isEmailVerificationRequried = obj.VERIFY;\n this.templateVersion = 'v1';\n break;\n }\n case 'givennameverificationcontrol': {\n this.isGivenNameVerificationRequried = true;\n break;\n }\n case 'givenname': {\n this.isGivenNameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'surnameverificationcontrol': {\n this.isEmailVerificationRequried = true;\n break;\n }\n case 'surname': {\n this.isSurnameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\n case 'password': {\n obj.PAT_DESC = resources.invalidPasswordError;\n break;\n }\n case 'emailbox': {\n obj.PAT_DESC = resources.invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n required_field: resources.requiredFieldMissingError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n\n private _renderLocalAccount(): ISignUpLocalAccount {\n const { config, resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', resources.lastNameLabelText, resources.lastNameMaxLength),\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, undefined, this.reenterPasswordRegex)\n ],\n emailVerification: {\n isRequired: this.isEmailVerificationRequried,\n email: this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n buttonWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n buttons: [\n ,\n ,\n ,\n \n ],\n successMessage: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n \n ]\n },\n givenNameVerification: {\n isRequired: this.isGivenNameVerificationRequried,\n givenName: this._renderInput(\n this.getValue('givenName_ver_input', 'givenNameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'givenNameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n surnameVerification: {\n isRequired: this.isSurnameVerificationRequried,\n surname: this._renderInput(\n this.getValue('surname_ver_input', 'surnameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'surnameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n buttons: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n }\n\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): ISignUpItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default SignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignUpEmailVerification,\n ISignUpGivenNameVerification,\n ISignUpItem,\n ISignUpLoading,\n ISignUpLocalAccount,\n ISignUpSurnameVerification,\n ISignUpViewProps\n} from './sign-up';\n\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\n return (\n <>\n {successMessage &&\n successMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {errorMessage &&\n errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode) => {\n return <>{button};\n })}\n \n \n );\n};\n\n/**\n * Handles validation of sign-up givenName.\n * @param event - Content editable event.\n * @param event.givenName - Event Given Name.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for Given Name.\n */\nconst SignUpGivenNameVerificationComponent: React.FC = ({ givenName, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\n/**\n * Handles validation of signUp surname.\n * @param event - Content editable event.\n * @param event.surname - Event surname.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for surname.\n */\nconst SignUpSurnameVerificationComponent: React.FC = ({ surname, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n emailVerification,\n givenNameVerification,\n surnameVerification,\n buttons,\n errorMessage,\n disclaimer\n}) => {\n return (\n \n {items &&\n items.map((item: ISignUpItem) => {\n if (item.key === 'email' && emailVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'surname' && surnameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n );\n};\n\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignUpView: React.FC = props => {\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(signUpLocalAccount)}\n \n \n );\n};\n\nexport default SignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\n }\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

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

{message}

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

{title}

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

{resources.addressEmptyListAddressMessage}

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

{text}

\n);\n\nexport default IAddressBillingHeading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n}\n\nexport default CheckoutBillingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n const quantity = 1;\n return (\n
\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n
\n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\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 { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this.state = { shippingGroups: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\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 };\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n

\n \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 Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\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 { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\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 { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\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\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\n"],"names":["AutoSuggest","constructor","telemetry","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","this","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","_objectSpread","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","undefined","_loadMapAPI","async","storeSelectorStateManager","loadMapApi","key","lang","market","GetStateProvincesInput","countryRegionId","apiSettings","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","getStateProvinceAction","input","ctx","getStateProvincesAsync","callerContext","queryResultSettings","createObservableDataAction","action","AddressCommon","context","resources","getDefaultCountryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","request","user","isAuthenticated","getStateProvinces","response","actionContext","error","Promise","resolve","isEmpty","address","ThreeLetterISORegionName","City","addCustomerAddress","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressTypeValue","AddressManagementInput","execAddressAction","addresses","length","currentAddress","newAddress","Name","Phone","State","Street","ZipCode","RecordId","customerAddresses","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","AddressOperation","AddressType","AddressFormat","countryRegionsInfo","addressMetaData","addressPurposes","getPrefilledAddressDropdownData","stateDefaultSelectionText","stateProvinceInfo","defaultStateText","value","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","validateAddressFormat","validationError","propertyName","validationtor","isValid","getAddressFormat","forEach","addressFormatItem","name","_inputValidation","getTranformedAddress","result","postalCode","selectedState","state","StateName","adminDistrict","StateId","addressLine","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","validationRule","regEx","RegExp","test","get","countryRegionInfo","_getAddressDisplayFormat","map","ShortName","addressPurpose","set","validationRules","message","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","push","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","isPrimaryDisplayItem","IsPrimary","type","AddressMetaData","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","id","item","_addItem","Input","County","Dropdown","District","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","Checkbox","displayType","includes","nameKey","replace","_validationRules","isRequired","rule","Required","optionalString","label","ruleType","Object","keys","itemType","_validationRule","_ref","React","className","role","text","ariaLabel","disabled","telemetryContent","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","assign","isChecked","additionalAddributes","autoFocus","onChange","checked","displayData","getDropdownItem","selectedValue","isSelected","title","htmlFor","getRequriedAttribute","getAddessItems","selectedAddress","props","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","onInputChange","onDropdownChange","index","elementId","classname","AddressInputComponent","AdressCheckboxComponent","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","isShowLabel","labelText","mainClass","AddressShow","AddressDetail","items","addressTypeValue","toString","description","AddressDetailItemComponent","getInput","onAddressOptionChange","ichecked","additionalAttributes","getAddressSelectItems","SelectItem","showItems","CheckoutShippingAddress","_data$featureState","super","addressListSelectedAddress","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_renderAddOrUpdateAddress","currentOperation","Add","addressCommon","editAddressHeading","addAddressHeading","hasError","onCancel","onSave","hasExternalSubmitGroup","isUpdating","addressActionResponse","heading","AddressForm","Heading","isShowSaveButton","saveButton","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressErrorTitleComponent","AddressErrorMessageComponent","AddressAddUpdate","Shipping","addUpdateAddress","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","moduleState","onSubmit","_resetView","_renderSelectAddress","onAddAddress","SelectAddress","addButton","addressAddButtonText","addressAddButtonAriaLabel","AddressSelect","_onAddressOptionChange","_goToAddAddress","_onSelectAddress","_attachMapAutoSuggest","data","_this$autoSuggest","isMapApiLoaded","autoSuggest","_onSuggestionSelected","_clearAddressFields","format","_this$autoSuggest2","_clearValidation","event","addressRecordId","currentTarget","onAddressAddUpdate","target","_onCountryChange","_onAddressAddUpdateSubmit","Update","_updateModuleState","then","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","_getAddressFormatExcludeList","config","addressFormatExcludeList","showAddressType","_getStateProvinces","some","_getDefaultAddress","_initModuleState","init","status","_canShip","onEdit","defaultAddress","_getShippingAddressFromCartLines","_updateCurrentOperation","Show","_setShippingAddress","List","shippingAddress","channelDeliveryOptionConfig","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","cartLines","checkout","checkoutCart","cart","CartLines","filter","cartLine","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","ShippingAddress","_checkout$result","_checkout$result2","hasInvoiceLine","_channelDeliveryOptio2","_setDefaultCountryRegionId","newShippingAddress","TwoLetterISORegionName","updateShippingAddress","operation","onReady","onPending","onUpdating","countryStates","featureState","feature","IsEnabled","getTelemetryObject","telemetryPageName","friendlyName","requestContext","autoSuggestionEnabled","reaction","BingMapsEnabled","_this$autoSuggest4","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest5","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest6","render","renderView","viewState","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","moduleProps","classnames","showAddress","_renderShowAddress","showAddressSelect","showAddOrUpdateAddress","__decorate","observable","computed","withModuleState","observer","Node","_ref2","_ref3","_other$moduleProps","_other$moduleProps2","_other$moduleProps3","_other$moduleProps4","_document","other","_objectWithoutProperties","_excluded","localeString","locale","sitePath","currency","Currency","countriesAvail","enGB","autocomplete","select","it","enUS","eu","nativeInputValueSetter","getOwnPropertyDescriptor","window","HTMLInputElement","prototype","populateFormElements","addressComponent","formMap","types","getElementById","googleComponent","elmnt","is_convert_a2_to_a3","i","eValue","convert_a2_to_a3","selectItemByValue","short_name","Event","bubbles","dispatchEvent","formValue","long_name","call","eCustom","phoneValidation","_addressForm$closest","addressForm","getElementsByClassName","saveAddressButton","closest","county","countyCtn","countyAlert","onkeyup","classList","remove","textContent","onclick","e","add","elements","querySelectorAll","fieldInALL","element","stopPropagation","googleComponents","autocompleteFormField","google","maps","places","Autocomplete","componentRestrictions","country","startTypingYourAddress","clearInstanceListeners","addListener","place","getPlace","addressComponents","address_components","gMapsAutocomplete","o","optionV","countrySelect","stateSelect","Boolean","checkPhone","phone","phoneCtn","phoneAlert","pattern","pattern2","match","addressPhoneRequiredErrorMessage","removeAttribute","Module","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","AccountCustomerBalance","_showRequestStatementModal","isStatementRequestModalOpen","setState","_toggleModal","_toggleDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_adminShowRequestStatementModal","isFullOrg","statementRequestFullOrg","_requestStatement","_this$props$data$b2bU","customer","customerInformation","B2BUserId","b2bUserInformation","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","Email","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","BusinessPartnerUsersDataActions","statementRequestMaxDateString","toISOString","split","_get","account","creditSummarySectionHeading","accountSectionHeading","backToShoppingText","customerSincePrefix","availableCreditLabel","balanceOwedLabel","creditExcessLabel","requestStatementButtonLabel","modalHeaderLabel","sendToEmailLabel","fromDateLabel","toDateLabel","submitRequestLabel","cancelLabel","myAccountStatementLabel","fullOrganizationLabel","modalAriaLabel","accountNumber","AccountNumber","createdOn","_formatJoinDate","CreatedDateTime","FirstName","LastName","customerCredit","customerAccountBalance","excess","InvoiceAccountCreditLimit","CreditLimit","Balance","InvoiceAccountBalance","creditExcess","_formatCurrency","availableCredit","balanceOwed","backLink","Msdyn365","emailAddress","isB2BSite","isChannelTypeB2B","actionBar","IsB2bAdmin","AdminRequestStatementButton","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","ActionBar","viewProps","tag","accountLabels","AccountLabels","accountValues","AccountValues","AvailableCreditComponent","BalanceOwedComponent","CreditExcessComponent","homeButton","BackButton","link","actions","requestStatementModal","RequestStatementModal","email","isModalOpen","toggle","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","onSubmitRequest","selectedUser","selectedUserLabel","maxDateString","currencyCode","formatCurrency","toFixed","date","Intl","DateTimeFormat","month","day","year","creditSummaryLabels","creditSummaryValues","Button","onPromoteToSeller","promoteToSellerLabel","buttonReference","onSelectCustomerAccount","onSelectFullOrg","onSelectPromoteToSeller","popoverReference","requestStatementDropdownString","Random","Guid","generateGuid","innerRef","Popover","isOpen","placement","onChangeFromDateEvent","onChangeToDateEvent","onBlurFromDate","ObjectExtensions","isFunction","focus","onBlurToDate","Modal","horizontalPosition","verticalPosition","fade","ModalHeader","ModalBody","onBlur","max","min","ModalFooter","_ref5","_ref6","_ref7","_ref8","TelemetryConstant","BackToShopping","href","errorClassName","GetMaxLength","parsedMaxLength","Number","parseInt","isNaN","forId","successClassName","SignUp","moduleClassName","handleHeadingChange","handleParagraphChange","disclaimer","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","obj","isEmailVerificationRequried","templateVersion","emailRegex","PAT","VERIFY","isGivenNameVerificationRequried","isSurnameVerificationRequried","newPasswordRegex","reenterPasswordRegex","UX_INPUT_TYPE","PAT_DESC","invalidPasswordError","invalidEmailAddressError","errorMessages","required_field","requiredFieldMissingError","getValue","v1Value","v2Value","EmailRegex","defaultRegex","source","PasswordRegex","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","isShowLoading","signUp","loading","modal","modalBody","icon","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","editProps","signUpLocalAccount","_renderLocalAccount","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","emailAddressLabelText","passwordLabelText","confirmPasswordLabelText","emailVerification","verificationCodeLabelText","verificationControlWrapper","buttonWrapper","buttons","SignUpButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","successMessage","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","givenNameVerification","givenName","requiredFieldMissingSummaryError","surnameVerification","surname","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","passwordEntryMismatchError","fieldIncorrectError","cssClassName","wrapper","SignUpLabelComponent","SignUpInputComponent","SignUpItem","SignUpEmailVerification","button","SignUpGivenNameVerificationComponent","SignUpSurnameVerificationComponent","_ref4","SignUpLoading","LocalAccount","focusOnCheckoutError","checkoutErrorRef","checkoutState","getCheckoutState","catch","exception","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","updateLogisticsLocationRoleRecordId","GetAddressPurposesInput","getAddressPurposesAction","ArrayExtensions","hasElements","purpose","LogisticsLocationRoleRecordId","Description","PhoneRegex","Format","itemId","shouldBeAutoFocused","shouldAutoFocus","isDisabled","ErrorComponent","shouldUseAutoFocus","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","isShowList","isSelectedAddress","isShowError","isInvalidAsyncState","isEditAsyncCustomerFeatureEnabled","canRenderAsyncCustomerDataAsUnmodifiable","isAsyncCustomer","isAsyncCustomerAddressCreationFeatureEnabled","Item","Error","isShowPrimaryButton","primaryButton","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","editButton","addressEditButtonText","addressEditButtonAriaLabel","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AddressList","_heading$headingTag","handleLineItemHeadingChange","headingComponent","headingTag","contextRequest","disableAddButton","ListAddress","isShowEmptyListMessage","emptyListMessage","addressEmptyListAddressMessage","primaryAddressList","otherAddressList","_addressPurposes$find","addressTypeDescription","addressChangeCheckboxAriaLabel","AccountManagementAddress","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","_dataInitialize","_data$countryRegions$","_data$addressPurposes","_data$address$result","_renderListAddress","_this$props$data$cust","_this$props$context$a","_goToEditAddress","_onRemoveAddress","_onSubmitUpdatePrimaryAddress","IsAsyncCustomer","app","_onAddressUpdate","onSuccess","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","_data$featureState2","_this$props$context$a2","infoMessageBar","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","AccountAddressManagement","showAddressList","screenReaderNotification","AddressLists","BusinessAccountAddress","excludedList","_resetAddressFields","_data$countryStates$r","Company","_updateAddress","_updateCountryRegionId","updateForm","cleanValue","_isEmpty","_isInputRequired","addressItemValue","isNullOrUndefined","resetAddress","_request$channel","AddressBillingCheckbox","AddressBillingHeading","CheckoutBillingAddress","_this$addUpdateAddres","Billing","_onSubmitAddress","twoLetterIsoRegionName","_this$props$data$chec","isBillingAddressRequried","billingAddress","isBillingAddressSameAsShippingAddress","isBillingAddressSameAsShipping","isCartContainsItemsForShipping","_onBillingAddressSameAsShippingChange","_this$props$data$chec2","_this$props$data$chec3","setHasError","shouldEnableSinglePaymentAuthorizationCheckout","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","_setBillingAddress","information","newBillingAddress","updateBillingAddress","additionalProperties","_setErrorMessage","isShowSameAsShippingCheckbox","_this$props$data$chec5","_this$props$data$chec4","removeBillingAddress","onDisable","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec6","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec7","checkoutErrorFocus","_shouldHideBillingAddressForOBO","addressBillingAddressHeading","errorMessageTitle","sameAsShippingCheckbox","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","_this$selectedAddress","_featureState$result","_request$channel2","_request$channel3","_this$props$data$chec8","_this$props$data$chec9","_this$props$data$chec10","loyaltyAmount","giftCardExtends","reduce","count","giftCard","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","getCustomerAccountAmount","_this$props$data$chec11","_this$props$data$chec12","shouldPaidByCard","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","ref","CheckoutPickupCartLines","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","_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","onSaveHandler","onCancelHandler","onCancelButtonHandler","onAddAddressHandler","_isNewAddress","_clearError","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","_country$ISOCode","shippingCartLines","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","updateHasShippingAddress","newHasShippingAddress","_checkout$result$chec","_checkout$result$chec2","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","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","_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","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","module","isMatch","_validateContainer","allMatched","skipSkippableItem","childId","_isPaymentSectionContainer","enableControl","__extends","WaitingComponent","Waiting","CheckoutExpressPaymentContainer","_getItems","slots","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","isExpressPaymentModulesReady","extensionPropertyKey","isModuleReady","BooleanValue","checkoutExpressPaymentSectionLoadingMessage","isOBORequest","ExpressPayment","shouldHideExpressPaymentContainerClassName","checkoutPlainContainerProps","waiting","_renderMsdyn365Text","headerProps","ContainerItemsComponent","isLoadingClassName","paymentInstrumentModuleId","CheckoutPlainContainer","getItems","getActiveChildModuleStates","clearError","isPaymentSectionContainer","amountDue","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","onContainerReady","isCollapse","_checkoutResult$check","_cart$TotalAmount","shouldCollapsePaymentSection","shouldTriggerPaymentWithPlaceOrder","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","width","container","hidden","LoadingComponent","itemProps","initialized","skipped","ready","updating","pending","ItemComponent","Loading"],"sourceRoot":""}