{"version":3,"file":"static/js/21.20310fe7bc1a19a22933.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.tsx?d17f","webpack://Msdyn365.Commerce.Online/./src/modules/business-account-address/business-account-address.view.tsx?3e10","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-billing-checkbox.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/common/components/address-billing-heading.tsx?7bbd","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/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable, reaction, set } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IBusinessAccountAddressData } from './business-account-address.data';\r\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\r\n\r\n/**\r\n * Interface for IBusinessAccountAddressExtendedProps.\r\n */\r\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\r\n hasError: boolean;\r\n isRequired: boolean;\r\n resetAddress: boolean;\r\n updateForm(errors: boolean, currentAddress?: Address): void;\r\n}\r\n\r\n/**\r\n * Interface for IBusinessAccountAddressState.\r\n */\r\nexport interface IBusinessAccountAddressState {\r\n countryId?: string;\r\n states?: StateProvinceInfo[];\r\n}\r\n\r\n/**\r\n * Interface for IBusinessAccountAddressViewProps.\r\n */\r\nexport interface IBusinessAccountAddressViewProps {\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 BusinessAccountAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component, IBusinessAccountAddressState>}\r\n */\r\nclass BusinessAccountAddress extends React.Component {\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private readonly validationError: object;\r\n\r\n private readonly addressActionResponse?: IAddressResponse;\r\n\r\n private readonly isUpdating?: boolean;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 8; // Default to Business\r\n\r\n private readonly shouldAutoFocus?: boolean = false;\r\n\r\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n public constructor(props: IBusinessAccountAddressExtendedProps) {\r\n super(props);\r\n\r\n const { context, data, resources, telemetry } = this.props;\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\r\n this.addressPurposes\r\n );\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.validationError = {};\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 componentDidMount(): void {\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this._setDefaultCountryRegionId();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { renderView, config, hasError, resetAddress } = this.props;\r\n\r\n // Business-sign-up will pass this flag when cancel button is clicked\r\n if (resetAddress) {\r\n this._resetAddressFields();\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n hasError,\r\n className: config.className,\r\n BusinessAccountAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-business-account-address', config.className)\r\n },\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Reset Address.\r\n */\r\n public _resetAddressFields = () => {\r\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\r\n\r\n addressFormat.map(addressFormatItem => {\r\n switch (addressFormatItem.displayType) {\r\n case AddressItemDisplayType.Input:\r\n this.addUpdateAddress[addressFormatItem.name] = '';\r\n break;\r\n case AddressItemDisplayType.Checkbox:\r\n this.addUpdateAddress[addressFormatItem.name] = false;\r\n break;\r\n default:\r\n switch (addressFormatItem.type) {\r\n case AddressItemType.ThreeLetterISORegionName:\r\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\r\n break;\r\n case AddressItemType.AddressTypeValue:\r\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\r\n break;\r\n case AddressItemType.State:\r\n this.addUpdateAddress[addressFormatItem.name] = '';\r\n break;\r\n default:\r\n this.addUpdateAddress[addressFormatItem.name] = undefined;\r\n }\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The account management props.\r\n */\r\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n };\r\n\r\n // Set validationError and hasError to hide error messages since in the B2B\r\n // request form, no errors would visually show since user wont be able to submit\r\n // until form is filled and correct\r\n /**\r\n * Render Add Or Update Address Function.\r\n * @returns - AddressAddUpdate.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Company,\r\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n shouldAutoFocus: this.shouldAutoFocus,\r\n validationError: this.validationError,\r\n hasError: this.props.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: this.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 });\r\n };\r\n\r\n /**\r\n * On Address Add Update Input Change Function.\r\n * @param event - Input event change function.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n this._updateAddress(event.target.name, event.target.value);\r\n };\r\n\r\n /**\r\n * On Address Add Update Dropdown Change Function.\r\n * @param event - Change dropdown event.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n await this._updateCountryRegionId(event.target.value);\r\n } else {\r\n this._updateAddress(event.target.name, event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Update Address Function.\r\n * @param name - String.\r\n * @param value - String.\r\n */\r\n private readonly _updateAddress = (name: string, value: string | number) => {\r\n const { updateForm, isRequired, resources } = this.props;\r\n let cleanValue = value;\r\n if (typeof value === 'string') {\r\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n }\r\n set(this.addUpdateAddress, { [name]: cleanValue });\r\n\r\n if (this._isEmpty()) {\r\n if (isRequired) {\r\n updateForm(true, undefined);\r\n } else {\r\n // Reset addressFormat as if address was NOT a required field\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this.excludedList, []),\r\n this.addressPurposes\r\n );\r\n updateForm(false, this.addUpdateAddress);\r\n }\r\n } else {\r\n // Get new addressFormat as if address was a required field\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this.excludedList, undefined),\r\n this.addressPurposes\r\n );\r\n\r\n // Verify with new rules\r\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n updateForm(false, this.addUpdateAddress);\r\n } else {\r\n updateForm(true, undefined);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Is empty Function.\r\n * @returns - Boolean.\r\n */\r\n // Walk through array and check if valued is defined or value is not an empty string\r\n private readonly _isEmpty = () => {\r\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\r\n for (const addressFormatItem of addressFormat) {\r\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\r\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\r\n\r\n // Check each input field, if value is defined and not an empty string --> address is not empty\r\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * Is Input Required Function.\r\n * @param addressFormatItem - IAddressItem.\r\n * @returns - Boolean.\r\n */\r\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\r\n if (\r\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\r\n !addressFormatItem.validationRules ||\r\n addressFormatItem.validationRules.length === 0\r\n ) {\r\n return false;\r\n }\r\n\r\n for (const validationRule of addressFormatItem.validationRules) {\r\n if (validationRule.type === AddressValidationRuleType.Required) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n\r\n void this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\r\n\r\n // Set default AddressType\r\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\r\n }\r\n\r\n /**\r\n * Update Country Region Id Function.\r\n * @param value - String.\r\n */\r\n private readonly _updateCountryRegionId = async (value: string) => {\r\n this.countryRegionId = value;\r\n\r\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n this._updateAddress('State', '');\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n\r\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\r\n };\r\n}\r\n\r\nexport default BusinessAccountAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address Heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - IAddressError.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - AddressForm Node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {hasError && 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\n/**\r\n * Business Account Address View Component.\r\n * @param props - Props.\r\n * @returns - BusinessAccountAddress Module.\r\n */\r\nconst BusinessAccountAddressView: React.FC = props => {\r\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BusinessAccountAddressView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\n }\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

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

{message}

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

{title}

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

{resources.addressEmptyListAddressMessage}

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

(WrappedComponent: React.ComponentType

): React.ComponentType

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

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

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n"],"names":["BusinessAccountAddress","React","constructor","props","super","countryRegionId","countryRegions","addressPurposes","defaultAddressType","shouldAutoFocus","excludedList","AddressItemType","Name","AddressTypeValue","IsPrimary","_resetAddressFields","this","addressFormat","getAddressFormat","map","addressFormatItem","displayType","AddressItemDisplayType","Input","addUpdateAddress","name","Checkbox","type","ThreeLetterISORegionName","State","undefined","_dataInitialize","data","reaction","result","_data$countryRegions$","_data$addressPurposes","countryStates","_data$countryStates$r","stateProvinceInfo","_renderAddOrUpdateAddress","AddressAddUpdate","isUpdating","resources","addressType","AddressType","Company","defaultCountryRegionId","selectedAddress","validationError","hasError","addressActionResponse","telemetryContent","dropdownDisplayData","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","onInputChange","_onAddressAddUpdateInputChange","onDropdownChange","_onAddressAddUpdateDropdownChange","event","_updateAddress","target","value","async","_updateCountryRegionId","updateForm","isRequired","cleanValue","replace","RegExp","set","_isEmpty","AddressFormat","AddressMetaData","_objectSpread","validateAddressFormat","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","validationRules","length","validationRule","AddressValidationRuleType","Required","addressCommon","getStateProvinces","then","some","state","StateId","context","telemetry","AddressCommon","getTelemetryObject","request","telemetryPageName","friendlyName","componentDidMount","_setDefaultCountryRegionId","shouldComponentUpdate","nextProps","nextState","render","renderView","config","resetAddress","className","moduleProps","classnames","showAddOrUpdateAddress","_request$channel","market","channel","ChannelCountryRegionISOCode","getDefaultCountryRegionId","__decorate","observable","_ref","AddressForm","heading","items","error","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","Node","Object","assign","item","AddressItem","key","label","alert","input","AddressError","title","message","Module","focusOnCheckoutError","checkoutErrorRef","ctx","checkoutState","getCheckoutState","catch","exception","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","AutoSuggest","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","_loadMapAPI","storeSelectorStateManager","loadMapApi","lang","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","user","isAuthenticated","response","actionContext","GetStateProvincesInput","apiSettings","getStateProvinceAction","Promise","resolve","isEmpty","address","City","addCustomerAddress","updateLogisticsLocationRoleRecordId","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressManagementInput","execAddressAction","addresses","RecordId","customerAddresses","GetAddressPurposesInput","getAddressPurposesAction","ArrayExtensions","hasElements","addressPurpose","purpose","LogisticsLocationRoleRecordId","countryRegionsInfo","addressMetaData","stateDefaultSelectionText","defaultStateText","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","propertyName","validationtor","isValid","forEach","_inputValidation","getTranformedAddress","postalCode","ZipCode","selectedState","StateName","adminDistrict","addressLine","Street","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","regEx","test","get","countryRegionInfo","_getAddressDisplayFormat","ShortName","Description","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","push","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","phoneDisplayItem","Phone","isPrimaryDisplayItem","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","id","_addItem","PhoneRegex","defaultRegex","County","Dropdown","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","format","includes","nameKey","_validationRules","rule","optionalString","ruleType","keys","itemType","_validationRule","Format","AddressOperation","itemId","isChecked","additionalAddributes","autoFocus","shouldBeAutoFocused","onChange","payLoad","getPayloadObject","attributes","getTelemetryAttributes","checked","getRequriedAttribute","getAddessItems","index","elementId","classname","AddressInputComponent","AdressCheckboxComponent","displayData","selectedValue","AdressDropdownComponent","AddressLabelComponent","text","AddressAlertComponent","editAddressHeading","addAddressHeading","onCancel","onSave","hasExternalSubmitGroup","Heading","AddressButtonComponent","addressSaveButtonText","ariaLabel","addressSaveButtonAriaLabel","disabled","onClick","addressCancelButtonText","addressCancelButtonAriaLabel","AddressErrorTitleComponent","AddressErrorMessageComponent","role","AddressBillingCheckbox","additionalAttributes","AddressBillingHeading","isDisabled","isShowLabel","labelText","mainClass","getDropdownItem","isSelected","ErrorComponent","shouldUseAutoFocus","htmlFor","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","List","isShowList","isSelectedAddress","isShowError","isInvalidAsyncState","isEditAsyncCustomerFeatureEnabled","canRenderAsyncCustomerDataAsUnmodifiable","isAsyncCustomer","isAsyncCustomerAddressCreationFeatureEnabled","Item","showItems","AddressShow","Error","isShowPrimaryButton","primaryButton","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","editButton","addressEditButtonText","addressEditButtonAriaLabel","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","filter","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AddressList","_heading$headingTag","onAddAddress","handleLineItemHeadingChange","headingComponent","Msdyn365","tag","headingTag","editProps","onEdit","requestContext","contextRequest","disableAddButton","ListAddress","isShowEmptyListMessage","emptyListMessage","addressEmptyListAddressMessage","addButton","addressAddButtonText","addressAddButtonAriaLabel","primaryAddressList","otherAddressList","getInput","_addressPurposes$find","onAddressOptionChange","addType","ichecked","addressChangeCheckboxAriaLabel","toString","getAddressSelectItems","SelectItem","AddressSelect","SelectAddress","AddressDetail","addressTypeValue","description","AddressDetailItemComponent","AccountManagementAddress","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","_onSuggestionSelected","_clearAddressFields","_this$autoSuggest","autoSuggest","_clearValidation","_data$address$result","Shipping","_onAddressAddUpdateSubmit","_resetView","_renderListAddress","_this$props$data$cust","_this$props$context$a","_this$props$context$a2","_goToEditAddress","_onRemoveAddress","_goToAddAddress","_onSubmitUpdatePrimaryAddress","customerInformation","IsAsyncCustomer","app","_attachMapAutoSuggest","_this$autoSuggest2","isMapApiLoaded","onAddressAddUpdate","_onCountryChange","_onAddressUpdate","onSuccess","currentOperation","Update","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","TwoLetterISORegionName","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","_getStateProvinces","Add","_updateCurrentOperation","operation","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","autoSuggestionEnabled","BingMapsEnabled","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest4","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest5","_data$featureState","_data$featureState$re","_data$featureState$re2","_data$featureState2","_data$featureState2$r","_data$featureState2$r2","_this$props$context$a3","_this$props$context$a4","featureState","feature","IsEnabled","infoMessageBar","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","viewState","isShowAddresList","isShowAddOrUpdateAddress","AccountAddressManagement","showAddressList","screenReaderNotification","action","observer","_ref2","AddressLists","_ref3","_ref4","CheckoutBillingAddress","_this$addUpdateAddres","Billing","moduleState","_onSubmitAddress","twoLetterIsoRegionName","_initModuleState","_this$props$data$chec","init","status","isBillingAddressRequried","onSubmit","billingAddress","isBillingAddressSameAsShippingAddress","checkout","isBillingAddressSameAsShipping","Show","_updateModuleState","isCartContainsItemsForShipping","shippingAddress","_onBillingAddressSameAsShippingChange","currentTarget","_this$props$data$chec2","_this$props$data$chec3","setHasError","shouldEnableSinglePaymentAuthorizationCheckout","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","_setBillingAddress","information","onUpdating","newBillingAddress","updateBillingAddress","additionalProperties","onReady","_setErrorMessage","setState","isShowAddress","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","showAddress","_renderShowAddress","_this$selectedAddress","_featureState$result","_featureState$result$","_request$channel2","_request$channel3","_this$props$data$chec8","channelDeliveryOptionConfig","retailMultiplePickUpOptionEnabled","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","checkoutCart","hasInvoiceLine","cart","CartLines","cartLine","_channelDeliveryOptio","_channelDeliveryOptio2","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","_this$props$data$chec9","_this$props$data$chec10","loyaltyAmount","giftCardExtends","reduce","count","giftCard","Balance","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","getCustomerAccountAmount","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","_this$props$data$chec14","shouldPaidByCard","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","computed","withModuleState","ref","CheckoutPickupCartLines","moduleClassName","cartLines","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","CheckoutShippingAddress","_data$featureState$re3","_data$featureState$re4","addressListSelectedAddress","multiplePickupStoreSwitchName","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","products","_getProductsByCartLines","ChannelId","line","product","x","ProductId","shippingGroups","formatAddress","_isDelivery","_isNotPickupMode","FulfillmentStoreId","_this$props$context$r","pickupDeliveryMode","pickupMode","channelId","productInputs","ProductInput","CatalogId","getSimpleProducts","onSaveHandler","onCancelHandler","onCancelButtonHandler","_renderSelectAddress","onAddAddressHandler","_onAddressOptionChange","_onSelectAddress","addressRecordId","_isNewAddress","_clearError","_getDefaultAddress","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","country","_country$ISOCode","_canShip","defaultAddress","ShippingAddress","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","_setShippingAddress","updateHasShippingAddress","newHasShippingAddress","_checkout$result$chec","_checkout$result$chec2","_channelDeliveryOptio3","_channelDeliveryOptio4","newShippingAddress","updateShippingAddress","onPending","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_address","_featureState$result2","_featureState$result3","headingImages","itemsText","singleItemText","imageSettings","cartlines","_line$cartLine$LineId","_line$product","_line$product$Primary","_line$product2","_line$product3","_line$cartLine$Quanti","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","loadFailureBehavior","Quantity","itemText","lineImageProps","cartLineImages","isRetailMultiplePickUpOptionEnabled","showAddressSelectHandler","showAddOrUpdateAddressHandler","showAddressSelect","_this$props$data$cart","_this$props$data$cart2","_this$props$data$cart3","_this$props$data$cart4","_this$props$data$cart5","_this$props$data$cart6","_this$props$data$cart7","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","CheckoutStateInput","_this","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","createObservableDataAction","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","prototype","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","update","updateModuleStates","WrappedComponent","_super","ModuleState","call","initializeState","_b","typeName","states","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isReady","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","onSkip","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","childId","_isPaymentSectionContainer","enableControl","__extends"],"sourceRoot":""}