{"version":3,"file":"static/js/4867c91ee00fe94a08c4.bundle.js","mappings":"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","sources":["webpack://msdyn365.commerce.online/./src/actions/savesubmit-enabledisable.action.ts?d0df","webpack://msdyn365.commerce.online/./src/common/address-autosuggest.ts?d957","webpack://msdyn365.commerce.online/./src/common/actions/get-address-purposes.ts?3f66","webpack://msdyn365.commerce.online/./src/common/actions/get-state-provinces.ts?c3a7","webpack://msdyn365.commerce.online/./src/common/address-common.ts?e30a","webpack://msdyn365.commerce.online/./src/common/address-format.data.ts?f2e7","webpack://msdyn365.commerce.online/./src/common/address-module.data.ts?1c51","webpack://msdyn365.commerce.online/./src/common/address-format.ts?b845","webpack://msdyn365.commerce.online/./src/common/address-meta-data.ts?c0c5","webpack://msdyn365.commerce.online/./src/common/components/address-alert.tsx?e0a2","webpack://msdyn365.commerce.online/./src/common/components/address-button.tsx?ce28","webpack://msdyn365.commerce.online/./src/common/components/address-checkbox.tsx?a2d4","webpack://msdyn365.commerce.online/./src/common/components/address-dropdown.tsx?34b0","webpack://msdyn365.commerce.online/./src/common/components/address-error-message.tsx?73f9","webpack://msdyn365.commerce.online/./src/common/components/address-error-title.tsx?b6f8","webpack://msdyn365.commerce.online/./src/common/components/address-input.tsx?2742","webpack://msdyn365.commerce.online/./src/common/components/address-label.tsx?1e7b","webpack://msdyn365.commerce.online/./src/common/components/address-add.tsx?876e","webpack://msdyn365.commerce.online/./src/common/components/address-detail-item.tsx?37df","webpack://msdyn365.commerce.online/./src/common/components/address-show.tsx?1a46","webpack://msdyn365.commerce.online/./src/common/components/address-select.tsx?a3b0","webpack://msdyn365.commerce.online/./src/modules/pc-checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?6155","webpack://msdyn365.commerce.online/./src/modules/pc-checkout-shipping-address/pc-checkout-shipping-address.tsx?7602","webpack://msdyn365.commerce.online/./src/modules/pc-checkout-shipping-address/pc-checkout-shipping-address.view.tsx?b97b","webpack://msdyn365.commerce.online/./lib/pc-checkout-shipping-address/module-registration.js?3e7b","webpack://msdyn365.commerce.online/./src/actions/get-address-purposes.ts?6b90","webpack://msdyn365.commerce.online/./src/actions/get-country-regions.ts?9431","webpack://msdyn365.commerce.online/./src/actions/get-country-state.ts?3ecd","webpack://msdyn365.commerce.online/./src/actions/get-state-provinces.ts?554d","webpack://msdyn365.commerce.online/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://msdyn365.commerce.online/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://msdyn365.commerce.online/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","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/module-state-manager/module-state.ts?7579","webpack://msdyn365.commerce.online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://msdyn365.commerce.online/external var \"React\"?0d3b","webpack://msdyn365.commerce.online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * SavesubmitEnabledisable Input Action\r\n */\r\nexport class SavesubmitEnabledisableInput implements Msdyn365.IActionInput {\r\n // TODO: Construct the input needed to run the action\r\n constructor() {}\r\n\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `SavesubmitEnabledisable`;\r\n public getCacheObjectType = () => 'SavesubmitEnabledisable';\r\n public dataCacheType = (): Msdyn365.CacheType => 'request';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface ISavesubmitEnabledisableData {\r\n disableButton: boolean;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new SavesubmitEnabledisableInput();\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function action(input: SavesubmitEnabledisableInput, ctx: Msdyn365.IActionContext): Promise {\r\n // const apiSettings = Msdyn365.msdyn365Commerce.apiSettings;\r\n\r\n // TODO: Uncomment the below line to get the value from a service\r\n // const response = await Msdyn365.sendRequest('/get/example/id/1', 'get');\r\n return { disableButton: false };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >action,\r\n // TODO: Give your data action a unique id\r\n id: 'SavesubmitEnabledisable',\r\n input: createInput\r\n // TODO: Uncomment the below line if this is a meant to be a batched data action\r\n // isBatched: true\r\n});","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ITelemetry } from '@msdyn365-commerce/core';\r\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\r\n\r\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\r\n\r\n/**\r\n *\r\n * Auto Suggest.\r\n */\r\nexport class AutoSuggest {\r\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\r\n\r\n private readonly telemetry: ITelemetry;\r\n\r\n private readonly countryCode?: string;\r\n\r\n private readonly bingMapsApiKey?: string;\r\n\r\n private readonly defaultLanguageId?: string;\r\n\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n\r\n private autoSuggestOptions: IAutoSuggestOptions;\r\n\r\n constructor(telemetry: ITelemetry, autoSuggestOptions: IAutoSuggestOptions, BingMapsApiKey?: string, countryCode?: string, defaultLanguageId?: string) {\r\n this.telemetry = telemetry;\r\n this.autoSuggestOptions = autoSuggestOptions;\r\n this.bingMapsApiKey = BingMapsApiKey;\r\n this.countryCode = countryCode;\r\n this.defaultLanguageId = defaultLanguageId;\r\n }\r\n\r\n public attachAutoSuggest = (inputId: string, containerId: string, selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void): void => {\r\n if (!this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\r\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\r\n setTimeout(() => {\r\n document.querySelector(inputId)?.setAttribute('type', 'text');\r\n }, 0);\r\n },\r\n errorCallback: () => {\r\n if (this.telemetry) {\r\n this.telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: this.bingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\r\n if (this.autoSuggestManager) {\r\n this.autoSuggestOptions.countryCode = countryCode;\r\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\r\n }\r\n };\r\n\r\n public disposeAutoSuggest = (): void => {\r\n this.autoSuggestManager?.detachAutosuggest();\r\n this.autoSuggestManager?.dispose();\r\n this.autoSuggestManager = undefined;\r\n };\r\n\r\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\r\n await storeSelectorStateManager.loadMapApi({\r\n key: this.bingMapsApiKey,\r\n lang: this.defaultLanguageId,\r\n market: this.countryCode\r\n });\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\r\n ICommerceApiSettings, ICreateActionContext, IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n getAddressPurposesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * Input class for get Address Purposes data action.\r\n */\r\nexport class GetAddressPurposesInput implements IActionInput {\r\n private readonly apiSettings: ICommerceApiSettings;\r\n\r\n constructor(apiSettings: ICommerceApiSettings) {\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey('AddressPurpose', this.apiSettings);\r\n\r\n public getCacheObjectType = () => 'AddressPurpose';\r\n\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call.\r\n * @param inputData\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): GetAddressPurposesInput => {\r\n return new GetAddressPurposesInput(inputData.requestContext.apiSettings);\r\n};\r\n\r\nexport async function getAddressPurposesAction(input: GetAddressPurposesInput, ctx: IActionContext): Promise {\r\n return getAddressPurposesAsync({ callerContext: ctx, queryResultSettings: {} });\r\n}\r\n\r\nexport const getAddressPurposesActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/address/get-address-purposes',\r\n action: >getAddressPurposesAction,\r\n input: createInput\r\n});\r\n\r\nexport default getAddressPurposesActionDataAction;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n getStateProvincesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\n/**\r\n * Input class for get state provinces data action.\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n\r\n private readonly apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport const getStateProvinceActionDataAction = createObservableDataAction({\r\n action: >getStateProvinceAction\r\n});\r\n\r\nexport default getStateProvinceActionDataAction;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\r\nimport {\r\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n addAddress, AddressManagementInput, ArrayExtensions,\r\n updateAddress, updatePrimaryAddress } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getAddressPurposesAction, GetAddressPurposesInput } from './actions/get-address-purposes';\r\nimport { getStateProvinceAction, GetStateProvincesInput } from './actions/get-state-provinces';\r\nimport { IAddressResource, IAddressResponse } from './address-module.data';\r\n\r\n/**\r\n *\r\n * Address common.\r\n */\r\nexport class AddressCommon {\r\n\r\n private readonly context: ICoreContext;\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\r\n this.context = context;\r\n this.resources = resources;\r\n this.telemetry = telemetry;\r\n }\r\n\r\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\r\n const marketISOCode = market || 'US';\r\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\r\n };\r\n\r\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\r\n return {\r\n errorTitle: resources.addressErrorMessageTitle,\r\n errorMessage: resources.addressGenericErrorMessage\r\n };\r\n };\r\n\r\n public isAuthenticatedFlow = (): boolean => {\r\n return this.context.request.user.isAuthenticated;\r\n };\r\n\r\n public getStateProvinces = async (countryRegionId: string): Promise => {\r\n let response: StateProvinceInfo[] = [];\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\r\n response = await getStateProvinceAction(input, this.context.actionContext);\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to get state provinces');\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n // For any address, check for common requried field else treat it as invalid\\empty address.\r\n public isEmpty = (address: Address): boolean => {\r\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n public addCustomerAddress = async (address: Address): Promise => {\r\n await this.updateLogisticsLocationRoleRecordId(address);\r\n return this.submitCustomerAddress(addAddress, address);\r\n };\r\n\r\n public updateCustomerAddress = async (address: Address): Promise => {\r\n await this.updateLogisticsLocationRoleRecordId(address);\r\n return this.submitCustomerAddress(updateAddress, address);\r\n };\r\n\r\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\r\n return this.submitCustomerAddress(updatePrimaryAddress, address);\r\n };\r\n\r\n private readonly submitCustomerAddress = async (addressAction: IObservableAction, address: Address): Promise => {\r\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\r\n\r\n const input = new AddressManagementInput(address);\r\n return this.execAddressAction(addressAction, input, address);\r\n };\r\n\r\n private readonly execAddressAction = async (addressAction: IObservableAction, input: IActionInput | IActionInput[], address: Address): Promise => {\r\n let response: IAddressResponse = {};\r\n\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\r\n } else {\r\n response.address = address;\r\n }\r\n response.customerAddresses = addresses;\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to exec address action');\r\n }\r\n response = this.parseRetailException(this.resources);\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n /**\r\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\r\n * @param address - Address object.\r\n * @returns Returns void.\r\n */\r\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\r\n let addressPurposes: AddressPurpose[] = [];\r\n try {\r\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\r\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\r\n } catch (error) {\r\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\r\n this.telemetry.error(`Error encountered ${error}`);\r\n this.telemetry.debug('Unable to get address purposes');\r\n }\r\n if (ArrayExtensions.hasElements(addressPurposes)) {\r\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue);\r\n if (addressPurpose) {\r\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\r\n }\r\n }\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nexport enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown',\r\n Checkbox = 'Checkbox'\r\n}\r\n\r\nexport enum AddressValidationRuleType {\r\n Required = 'Required',\r\n Format = 'Format'\r\n}\r\n\r\nexport enum AddressItemType {\r\n // VSI Customaization - START\r\n Name = 1007,\r\n Address = 1006,\r\n APT = 1005,\r\n Phone = 1002,\r\n IsPrimary = 1003,\r\n AddressTypeValue = 1004,\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n DistrictName = 7,\r\n StreetNumber = 8,\r\n BuildingCompliment = 9,\r\n Postbox = 10,\r\n House_RU = 21,\r\n Flat_RU = 22,\r\n CountryOKSMCode_RU = 23\r\n // VSI Customaization - END\r\n}\r\n\r\nexport interface IAddressItem {\r\n name: string;\r\n type: AddressItemType;\r\n label: string;\r\n maxLength: number;\r\n displayType: AddressItemDisplayType;\r\n validationRules?: IAddressValidationRule[];\r\n isNewLine: boolean;\r\n}\r\n\r\nexport interface IAddressValidationRule {\r\n type: AddressValidationRuleType;\r\n regEx: string;\r\n message: string;\r\n}\r\n\r\nexport interface IAddressDropdownsData {\r\n [index: string]: { key?: string | number; value?: string }[];\r\n}\r\n\r\n// tslint:disable-next-line:no-empty-interface\r\nexport interface IAddressFormatData {}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\r\n\r\nexport enum AddressOperation {\r\n Add = 'Add',\r\n Show = 'Show',\r\n Update = 'Update',\r\n List = 'List'\r\n}\r\n\r\nexport enum AddressType {\r\n Shipping = 'Shipping',\r\n Billing = 'Billing',\r\n Company = 'Company'\r\n}\r\n\r\nexport interface IDropdownDisplayData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n\r\nexport interface IAddressResponse {\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n customerAddresses?: Address[];\r\n address?: Address;\r\n}\r\n\r\nexport interface IAddressConfig {\r\n heading?: Heading;\r\n primaryAddressSectionHeading?: Heading;\r\n otherAddressSectionHeading?: Heading;\r\n addAddressHeading?: Heading;\r\n editAddressHeading?: Heading;\r\n}\r\n\r\nexport interface IAddressResource {\r\n addressChangeCheckboxAriaLabel: string;\r\n addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressRemoveButtonText: string;\r\n addressRemoveButtonAriaLabel: string;\r\n addressSaveButtonText: string;\r\n addressSaveButtonAriaLabel: string;\r\n addressCancelButtonText: string;\r\n addressCancelButtonAriaLabel: string;\r\n addressStateDefaultSelectionText: string;\r\n addressNameLabel: string;\r\n addressNameLabelOptional?: string;\r\n addressNameRequiredErrorMessage: string;\r\n // VSI Customaization - START\r\n addressAddressLabel: string;\r\n addressAddressLabelOptional?: string;\r\n addressAddressRequiredErrorMessage: string;\r\n \r\n addressAPTLabel: string;\r\n addressAPTLabelOptional?: string;\r\n // VSI Customaization - END\r\n addressPhoneLabel: string;\r\n addressPhoneLabelOptional?: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeLabelOptional?: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityLabelOptional?: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyLabelOptional?: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateLabelOptional?: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameLabelOptional?: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictLabelOptional?: string;\r\n addressDistrictNameLabel: string;\r\n addressDistrictNameLabelOptional?: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberLabelOptional?: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentLabelOptional?: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxLabelOptional?: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRULabelOptional?: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRULabelOptional?: string;\r\n addressFlatRURequiredErrorMessage: string;\r\n addressCountryOKSMCodeRULabel: string;\r\n addressCountryOKSMCodeRURequiredErrorMessage: string;\r\n addressErrorMessageTitle: string;\r\n addressGenericErrorMessage: string;\r\n addressEmptyListAddressMessage: string;\r\n removeAddressNotification?: string;\r\n}\r\n// tslint:disable-next-line:no-empty-interface\r\nexport interface IAddressModuleData {}","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CountryRegionInfo,\r\n StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { get, set } from 'mobx';\r\nimport { IPCAddress } from '../modules/pc-checkout-shipping-address';\r\n\r\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\r\nimport { AddressMetaData } from './address-meta-data';\r\n\r\n/**\r\n *\r\n * Retail Service Address format parser.\r\n */\r\nexport class AddressFormat {\r\n private readonly countryRegionsInfo?: CountryRegionInfo[];\r\n\r\n private readonly addressPurposes?: AddressPurpose[];\r\n\r\n private readonly addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\r\n this.countryRegionsInfo = countryRegionsInfo;\r\n this.addressMetaData = addressMetaData;\r\n this.addressPurposes = addressPurposes;\r\n }\r\n\r\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n if (countryRegionInfo) {\r\n return this._getAddressDisplayFormat(countryRegionInfo);\r\n }\r\n return [];\r\n }\r\n\r\n public getCountryFormat(): { key?: string; value?: string }[] {\r\n return (this.countryRegionsInfo || []).map(countryRegion => {\r\n return {\r\n key: countryRegion.CountryRegionId,\r\n value: countryRegion.ShortName\r\n };\r\n });\r\n }\r\n\r\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\r\n return (stateProvinceInfo || []).map(state => {\r\n return {\r\n key: state.StateId,\r\n value: state.StateName\r\n };\r\n });\r\n }\r\n\r\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\r\n return (this.addressPurposes || []).map(addressPurpose => {\r\n return {\r\n key: addressPurpose.AddressType,\r\n value: addressPurpose.Name\r\n };\r\n });\r\n }\r\n\r\n public getPrefilledAddressDropdownData = (\r\n stateDefaultSelectionText: string,\r\n stateProvinceInfo?: StateProvinceInfo[]\r\n ): IAddressDropdownsData => {\r\n const defaultStateText = {\r\n key: '',\r\n value: stateDefaultSelectionText\r\n };\r\n const dropdownData: IAddressDropdownsData = {};\r\n\r\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\r\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\r\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\r\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\r\n\r\n return dropdownData;\r\n };\r\n\r\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n\r\n return countryRegionInfo!.ISOCode;\r\n };\r\n\r\n public validateAddressFormat = (\r\n address: Address,\r\n validationError: Address,\r\n countryRegionId: string,\r\n propertyName?: string\r\n ): boolean => {\r\n let isValid: boolean = true;\r\n let validationtor;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\r\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\r\n if (validationtor !== undefined) {\r\n isValid = validationtor;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n };\r\n\r\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): IPCAddress => {\r\n const address: IPCAddress = {};\r\n\r\n // Zip Code\r\n if (result.address.postalCode !== undefined) {\r\n address.ZipCode = result.address.postalCode;\r\n } else {\r\n address.ZipCode = '';\r\n }\r\n\r\n // State\r\n if (stateProvinceInfo) {\r\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\r\n if (!selectedState) {\r\n address.State = '';\r\n address.StateName = result.address.adminDistrict;\r\n } else {\r\n address.State = selectedState.StateId;\r\n address.StateName = selectedState.StateName;\r\n }\r\n }\r\n\r\n // Street\r\n if (result.address.addressLine !== undefined) {\r\n address.Street = result.address.addressLine;\r\n } else {\r\n address.Street = '';\r\n }\r\n\r\n // City\r\n if (result.address.locality !== undefined) {\r\n address.City = result.address.locality;\r\n } else {\r\n address.City = '';\r\n }\r\n\r\n // District\r\n if (result.address.district !== undefined) {\r\n address.DistrictName = result.address.district;\r\n address.CountyName = result.address.district;\r\n } else {\r\n address.DistrictName = '';\r\n }\r\n\r\n // Formatted Address\r\n address.FullAddress = result.address.formattedAddress;\r\n\r\n return address;\r\n };\r\n\r\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, { [addressFormatItem.name]: validationRule.message });\r\n return false;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\r\n if (validationRule.regEx && validationRule.regEx.length > 0) {\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n const regex = new RegExp(validationRule.regEx);\r\n return regex.test((get(address, propertyName) as string) || '');\r\n }\r\n return true;\r\n };\r\n\r\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\r\n return (this.countryRegionsInfo || []).find(countryRegion => {\r\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\r\n });\r\n }\r\n\r\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\r\n const addressDisplayItem: IAddressItem[] = [];\r\n\r\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\r\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\r\n if (AddressTypeItem) {\r\n addressDisplayItem.push(AddressTypeItem);\r\n }\r\n\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const pcAPTDisplayItem = this._extendAddressDisplayFormat(AddressItemType.APT, false);\r\n if (pcAPTDisplayItem) {\r\n addressDisplayItem.unshift(pcAPTDisplayItem);\r\n }\r\n // const pcStreetDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Street, true);\r\n // if (pcStreetDisplayItem) {\r\n // addressDisplayItem.unshift(pcStreetDisplayItem);\r\n // }\r\n const pcAddressDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Address, false);\r\n if (pcAddressDisplayItem) {\r\n addressDisplayItem.unshift(pcAddressDisplayItem);\r\n }\r\n\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.unshift(nameDisplayItem);\r\n }\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n\r\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\r\n if (isPrimaryDisplayItem) {\r\n addressDisplayItem.push(isPrimaryDisplayItem);\r\n }\r\n }\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","/* eslint-disable security/detect-object-injection */\r\n/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './address-format.data';\r\nimport { IAddressResource } from './address-module.data';\r\n\r\n/**\r\n * Address meta data.\r\n */\r\nexport class AddressMetaData {\r\n private readonly metaData: IAddressItem[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly requiredFieldRegEx: string = '\\\\S';\r\n\r\n private readonly resourcesPrefix: string = 'address';\r\n\r\n private readonly maxLength: number = 64;\r\n\r\n private readonly requiredFields: AddressItemType[];\r\n\r\n private readonly excludedTypes: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\r\n this.resources = resources || {};\r\n this.excludedTypes = excluded || [];\r\n this.requiredFields =\r\n required !== undefined\r\n ? required\r\n : // VSI Customaization - START\r\n [\r\n AddressItemType.Address,\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.Phone,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName\r\n // AddressItemType.Street\r\n ];\r\n // VSI Customaization - END\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\r\n // VSI Customaization - START\r\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Address, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.APT, AddressItemDisplayType.Input);\r\n // VSI Customaization - END\r\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\r\n if (this.excludedTypes.includes(type)) {\r\n return;\r\n }\r\n\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n\r\n // Find out if currentItem is required field\r\n const validationRules = this._validationRules(type, nameKey, format);\r\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\r\n\r\n // If no optional string is provided in resource file, use the original label text\r\n const optionalString =\r\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\r\n maxLength: this.maxLength,\r\n validationRules,\r\n isNewLine: true\r\n };\r\n\r\n this.metaData.push(item);\r\n }\r\n\r\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\r\n const validationRules: IAddressValidationRule[] = [];\r\n\r\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\r\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\r\n const message: string = this.resources[`${key}ErrorMessage`];\r\n switch (ruleType) {\r\n case AddressValidationRuleType.Required: {\r\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\r\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\r\n }\r\n break;\r\n }\r\n case AddressValidationRuleType.Format: {\r\n validationRules.push(this._validationRule(ruleType, format!, message));\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n return validationRules;\r\n }\r\n\r\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\r\n return {\r\n type,\r\n regEx,\r\n message\r\n };\r\n }\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressAlert {\r\n message?: string;\r\n}\r\n\r\n/**\r\n * Address alert.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\r\n const message = props.message;\r\n return (\r\n \r\n {\r\n message &&\r\n <>\r\n {message}\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default AddressAlertFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressButton {\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n role?: string;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\n/**\r\n * Address button.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\r\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\r\n const payLoad = getPayloadObject('click', telemetryContent!, text);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nexport default AddressButtonFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressCheckbox {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n isChecked: boolean;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * Address checkbox.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\r\n const {\r\n id: itemId,\r\n name,\r\n className,\r\n type,\r\n isChecked,\r\n additionalAddributes,\r\n telemetryContent,\r\n autoFocus: shouldBeAutoFocused,\r\n onChange\r\n } = props;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressCheckboxFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n// import AddressLabelComponent from './address-label';\r\n\r\nexport interface IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string | number;\r\n // VSI Customaization - START\r\n // text: string;\r\n // addClassRequired?: string;\r\n // VSI Customaization - END\r\n additionalAddributes?: object;\r\n displayData: { key?: string | number; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\r\n let isSelected: boolean;\r\n if (typeof (key) === 'number') {\r\n isSelected = key === selectedValue;\r\n } else {\r\n isSelected = typeof (selectedValue) === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address dropdown.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\r\n const {\r\n id: itemId,\r\n name,\r\n className,\r\n value,\r\n additionalAddributes,\r\n displayData,\r\n onChange\r\n } = props;\r\n\r\n return (\r\n \r\n {displayData && displayData.map(item => (\r\n getDropdownItem(item.key, item.value, value)\r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDropdownFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressErrorMessage {\r\n message: string;\r\n}\r\n\r\n/**\r\n * Address error message.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\r\n const { message } = props;\r\n\r\n return (\r\n

\r\n {message}\r\n

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

\r\n {title}\r\n

\r\n );\r\n};\r\n\r\nexport default AddressErrorTitleFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n // VSI Customaization - START\r\n text?: string;\r\n addClassRequired?: string;\r\n // VSI Customaization - END\r\n value: string;\r\n maxLength?: number;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\n/**\r\n * Address input.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\r\n const {\r\n id: itemId,\r\n name,\r\n className,\r\n type,\r\n // VSI Customaization - START\r\n // addClassRequired,\r\n // text,\r\n // VSI Customaization - END\r\n value,\r\n maxLength,\r\n additionalAddributes,\r\n autoFocus: shouldUseAutoFocus,\r\n telemetryContent,\r\n onChange\r\n } = props;\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressInputFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressLabel {\r\n // VSI Customaization - START\r\n id?: string;\r\n text?: string;\r\n // VSI Customaization - END\r\n}\r\n\r\n/**\r\n * Address label.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\r\n const {\r\n id,\r\n text\r\n } = props;\r\n\r\n return (\r\n // VSI Customaization - START\r\n \r\n // VSI Customaization - END\r\n );\r\n};\r\n\r\nexport default AddressLabelFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { get } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressDropdownsData,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from '../address-format.data';\r\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressCheckboxComponent from './address-checkbox';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n defaultAddressType: number;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n telemetryContent?: ITelemetryContent;\r\n // VSI Customaization - START\r\n // cityCharacterLength?: number;\r\n cityCharacterLength?: number;\r\n addressCharacterLength?: number;\r\n aptUnitCharacterLength?: number;\r\n // VSI Customaization - END\r\n shouldAutoFocus?: boolean;\r\n onInputChange(event: React.ChangeEvent): void;\r\n onDropdownChange(event: React.ChangeEvent): void;\r\n onSave?(): void;\r\n onCancel?(): void;\r\n}\r\n\r\nexport interface IAddressError {\r\n AddressError: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddItem {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddUpdateProps {\r\n AddressForm: INodeProps;\r\n heading: React.ReactNode;\r\n items: IAddressAddItem[];\r\n hasError: boolean;\r\n error: IAddressError;\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\n// VSI Customaization - START\r\nconst _getMaxLength = (name: string, props: IAddressAddInputProps) => {\r\n switch (name) {\r\n case 'Email':\r\n return 55;\r\n case 'Phone':\r\n return 16;\r\n case 'Address':\r\n return props.addressCharacterLength || 55;\r\n case 'APT':\r\n return props.aptUnitCharacterLength || 55;\r\n case 'City':\r\n return props.cityCharacterLength || 55;\r\n default:\r\n return 34;\r\n }\r\n};\r\n// VSI Customaization - END\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n defaultAddressType,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange,\r\n shouldAutoFocus\r\n } = props;\r\n // @ts-ignore\r\n return addressFormat.map((addressFormatItem, index) => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n // VSI Customaization - START\r\n // const addClassRequired = addressFormatItem && addressFormatItem.validationRules && addressFormatItem.validationRules[0] && addressFormatItem.validationRules[0].type === 'Required' ? 'required' : '';\r\n // VSI Customaization - END\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n\r\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\r\n selectedValue = selectedValue || defaultAddressType;\r\n }\r\n\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className, id: `${elementId}_container` },\r\n label: ,\r\n alert: ,\r\n input\r\n };\r\n });\r\n};\r\n\r\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\r\n const {\r\n editAddressHeading,\r\n addAddressHeading,\r\n selectedAddress = {},\r\n resources,\r\n hasError,\r\n onCancel,\r\n onSave,\r\n hasExternalSubmitGroup,\r\n isUpdating,\r\n addressActionResponse,\r\n telemetryContent\r\n } = props;\r\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\r\n\r\n return {\r\n AddressForm: { className: 'msc-address-form' },\r\n heading: heading && ,\r\n items: getAddessItems(selectedAddress, props),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: onSave && (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: onCancel && (\r\n \r\n ),\r\n hasError: hasError || false,\r\n error: {\r\n AddressError: { className: 'msc-address-form__error' },\r\n title: addressActionResponse && addressActionResponse.errorTitle && (\r\n \r\n ),\r\n message: addressActionResponse && addressActionResponse.errorMessage && (\r\n \r\n )\r\n }\r\n };\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressDetailItem {\r\n isNewLine: boolean;\r\n isShowLabel: boolean;\r\n labelText: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Address details item.\r\n * @param props - Configuration of the functional component.\r\n * @returns React functional component.\r\n */\r\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\r\n const { isNewLine, isShowLabel, labelText, name, value } = props;\r\n\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel\r\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\r\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\r\n return (\r\n \r\n {isShowLabel && (\r\n <>\r\n {labelText}\r\n \r\n \r\n )}\r\n {value}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDetailItemFunctionComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { AddressItemType, IAddressItem } from '../address-format.data';\r\nimport AddressDetailItemComponent from './address-detail-item';\r\nimport { IPCAddress } from '../../modules/pc-checkout-shipping-address';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: IPCAddress;\r\n addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, addressPurposes, address } = props;\r\n\r\n const addressItem = {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n const addressType = addressPurposes.find(\r\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\r\n );\r\n if (addressType) {\r\n const value = addressType.Name || '';\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n }\r\n }\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n })\r\n };\r\n return addressItem;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { AddressFormat } from '../address-format';\r\nimport { IAddressResource } from '../address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressInputComponent from './address-input';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressSelectInputProps {\r\n hasExternalSubmitGroup?: boolean;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n addressPurposes: AddressPurpose[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n telemetryContent?: ITelemetryContent;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressSelectItem {\r\n key: number;\r\n SelectItem: INodeProps;\r\n input: React.ReactNode;\r\n showItems: IAddressShowProps;\r\n}\r\n\r\nexport interface IAddressSelectProps {\r\n SelectAddress: INodeProps;\r\n addButton: React.ReactNode;\r\n items: IAddressSelectItem[];\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\r\n const { addresses, onAddressOptionChange, selectedAddress, resources } = props;\r\n\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1,\r\n 'aria-label': resources.addressChangeCheckboxAriaLabel\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat, addressPurposes } = props;\r\n\r\n return addresses.map((address, index) => {\r\n return {\r\n key: address.RecordId || 0,\r\n SelectItem: { className: 'msc-address-select__item' },\r\n input: getInput(index, address, props),\r\n showItems: AddressShow({ addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''), address, addressPurposes })\r\n };\r\n });\r\n};\r\n\r\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\r\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\r\n\r\n return {\r\n SelectAddress: { className: 'msc-address-select' },\r\n addButton: (\r\n \r\n ),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n items: getAddressSelectItems(props)\r\n };\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IImageProps, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IPcCheckoutShippingAddressResources } from '../pc-checkout-shipping-address.props.autogenerated';\r\n\r\n/**\r\n * The cartline product interface.\r\n */\r\nexport interface ICartLineWithProduct {\r\n cartLine: CartLine;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline interface.\r\n */\r\nexport interface ICheckoutShippingCartLineInfo {\r\n lineId: string;\r\n imageProps: IImageProps;\r\n quantity: number;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline props.\r\n */\r\nexport interface ICheckoutShippingCartLinesProps {\r\n moduleClassName: string;\r\n cartLines: ICheckoutShippingCartLineInfo[];\r\n title: string;\r\n itemTitle: string;\r\n resources: IPcCheckoutShippingAddressResources;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\r\nexport const CheckoutPickupCartLines: React.FC = ({ moduleClassName, cartLines, title, itemTitle, resources }) => {\r\n if (!ArrayExtensions.hasElements(cartLines)) {\r\n return null;\r\n }\r\n const quantity = 1;\r\n return (\r\n
\r\n
\r\n
\r\n {title}\r\n
\r\n
\r\n {itemTitle}\r\n
\r\n
\r\n
\r\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\r\n const isShowQty = cartLine.quantity > quantity;\r\n let className = `${moduleClassName}__group-images-lines-product`;\r\n if (isShowQty) {\r\n className = classnames(className, ' product-image-wide');\r\n }\r\n return (\r\n
\r\n \r\n {isShowQty && }\r\n \r\n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\r\n \r\n\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * The checkout shipping cartline image settings.\r\n */\r\nexport const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\r\n },\r\n lazyload: true,\r\n quality: 80\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Address, AddressPurpose, CartLine, CountryRegionInfo, SimpleProduct, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getFallbackImageUrl, getSimpleProducts, ObjectExtensions, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from './../../common/address-autosuggest';\r\nimport { IAutoSuggestOptions } from './../../common/address-autosuggest.data';\r\nimport { AddressCommon } from './../../common/address-common';\r\nimport { AddressFormat } from './../../common/address-format';\r\nimport { AddressItemType } from './../../common/address-format.data';\r\nimport { AddressMetaData } from './../../common/address-meta-data';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from './../../common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './../../common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from './../../common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from './../../common/components/address-show';\r\nimport { IPcCheckoutShippingAddressData } from './pc-checkout-shipping-address.data';\r\nimport { IPcCheckoutShippingAddressProps } from './pc-checkout-shipping-address.props.autogenerated';\r\nimport {\r\n CheckoutPickupCartLines,\r\n defaultImageSettings,\r\n ICartLineWithProduct,\r\n ICheckoutShippingCartLineInfo,\r\n ICheckoutShippingCartLinesProps\r\n} from './components/checkout-shipping-cartlines-images';\r\nimport { SavesubmitEnabledisableInput } from '../../actions/savesubmit-enabledisable.action';\r\n\r\n/**\r\n * The checkout address props interface.\r\n */\r\nexport interface ICheckoutAddressProps extends IPcCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\n/**\r\n * The checkout shipping address view state.\r\n */\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * The checkout shipping address state.\r\n */\r\nexport interface ICheckoutAddresState {\r\n shippingGroups: ICartLineWithProduct[];\r\n fullAddress: string;\r\n}\r\nexport interface IPCAddress extends Address {\r\n Address?: string;\r\n APT?: string;\r\n}\r\n/**\r\n * The checkout shipping address view props.\r\n */\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n cartLineImages?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: IPCAddress;\r\n\r\n @observable private addUpdateAddress: IPCAddress;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[] = [];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private addressListSelectedAddress: Address = {};\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 = 6; // Default to Home\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n public constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n this.state = { shippingGroups: [], fullAddress: '' };\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n /**\r\n * Initialize pickup group.\r\n */\r\n @action\r\n private readonly _initPickupGroup = async (): Promise => {\r\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\r\n const cartLines: ICartLineWithProduct[] = [];\r\n\r\n try {\r\n const products = await this._getProductsByCartLines(\r\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\r\n pickupCartLines\r\n );\r\n for (const line of pickupCartLines) {\r\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\r\n cartLines.push({ cartLine: line, product });\r\n }\r\n this.setState({ shippingGroups: cartLines });\r\n } catch (error) {\r\n // @ts-ignore\r\n this.props.telemetry.error(error);\r\n this.setState({ shippingGroups: [] });\r\n }\r\n };\r\n\r\n /**\r\n * On suggestion selected.\r\n * @param result - Suggestion result interface.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n const timeout = 0;\r\n //set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { Address: this.state.fullAddress?.split(':')[0].trim() });\r\n set(this.addUpdateAddress, { APT: this.state.fullAddress?.split(':')[1].trim() });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, timeout);\r\n };\r\n\r\n /**\r\n * Method to clear address fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n for (const formatAddress of addressFormatItem) {\r\n if (\r\n this.addUpdateAddress[formatAddress.name] !== undefined &&\r\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\r\n ) {\r\n this.addressFormat[formatAddress.name] = '';\r\n }\r\n }\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Method to clear validation.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions },\r\n resources\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n await this._initPickupGroup();\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): 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 if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { config, context, renderView, resources } = this.props;\r\n const { headingImages, itemsText, singleItemText } = resources;\r\n const { imageSettings } = config;\r\n\r\n // Line images\r\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\r\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\r\n .map(line => ({\r\n lineId: line.cartLine.LineId ?? '',\r\n imageProps: {\r\n requestContext: context.actionContext.requestContext,\r\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\r\n altText: line.product?.Name,\r\n src: line.product?.PrimaryImageUrl ?? '',\r\n fallBackSrc: getFallbackImageUrl(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\r\n gridSettings: context.request.gridSettings!,\r\n imageSettings: imageSettings ?? defaultImageSettings,\r\n loadFailureBehavior: 'empty'\r\n },\r\n quantity: line.cartLine.Quantity ?? 0\r\n }));\r\n\r\n const quantity = 1;\r\n const itemText = cartlines.length > quantity ? itemsText : singleItemText;\r\n\r\n const lineImageProps: ICheckoutShippingCartLinesProps = {\r\n moduleClassName: 'ms-checkout-shipping-address',\r\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\r\n itemTitle: `(${format(itemText, cartlines.length)})`,\r\n title: headingImages,\r\n resources: this.props.resources\r\n };\r\n\r\n const cartLineImages: React.ReactNode = ;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { featureState } = this.props.data;\r\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n showAddressSelect: this._renderSelectAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: ICheckoutAddressProps): 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.address.result,\r\n () => {\r\n this.customerAddresses = data.address.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 reaction(\r\n () => data.featureState.result,\r\n () => {\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get cart lines for delivery.\r\n * @returns The cart line collection.\r\n */\r\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\r\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param line -The cart line.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isDelivery = (line: CartLine): boolean => {\r\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param deliveryMode -The delivery mode.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\r\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\r\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\r\n pickupMode => pickupMode !== deliveryMode\r\n );\r\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\r\n }\r\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param channelId - The channelId.\r\n * @param cartLines - Cart line collections.\r\n * @returns Collection of SimpleProduct.\r\n */\r\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\r\n const actionContext = this.props.context.actionContext;\r\n const productInputs = cartLines\r\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\r\n .map(line => new ProductInput(line.ProductId || 0, actionContext.requestContext.apiSettings, channelId));\r\n return getSimpleProducts(productInputs, actionContext);\r\n };\r\n\r\n /**\r\n * Method to render add/update address.\r\n * @returns Address app/update props.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this.onSubmit,\r\n\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n /**\r\n * Method to render select address.\r\n * @returns Select address props.\r\n */\r\n private readonly _renderSelectAddress = (): IAddressSelectProps => {\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n onAddAddress: this._goToAddAddress,\r\n onSave: this._onSelectAddress,\r\n\r\n onCancel: !this.selectedAddress ? () => {} : this._resetView\r\n });\r\n };\r\n\r\n /**\r\n * Method to render show address.\r\n * @returns Show address props.\r\n */\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n // console.log('selected address from', this.selectedAddress);\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest(\r\n '#shipping_addressaddress',\r\n '#shipping_addressaddress_container',\r\n this._onSuggestionSelected\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Method gets called on address option change.\r\n * @param event - To get current option.\r\n */\r\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n * @param name - Address name field.\r\n * @param value - Address name value field.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * Method to get called on address update change.\r\n * @param event - Input element.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update dropdown change.\r\n * @param event - Select element.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update submit.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n this.setState({\r\n fullAddress: `${this.addUpdateAddress.Address?.trim()} : ${(this.addUpdateAddress?.APT && this.addUpdateAddress?.APT?.trim()) ||\r\n ''}`\r\n });\r\n const updatedAddress: IPCAddress = {\r\n Name: `${this.addUpdateAddress.Name}`,\r\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue,\r\n City: this.addUpdateAddress.City,\r\n County: this.addUpdateAddress.County,\r\n Phone: this.addUpdateAddress.Phone?.trim(),\r\n State: this.addUpdateAddress.State,\r\n //Do not apply prettier on below 2 lines\r\n // Address: `${this.addUpdateAddress.Address?.trim()}`,\r\n // APT: `${(this.addUpdateAddress?.APT && this.addUpdateAddress?.APT?.trim()) || ''}`,\r\n Street: `${this.addUpdateAddress.Address?.trim()} ${(this.addUpdateAddress?.APT && this.addUpdateAddress?.APT?.trim()) || ''}`,\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName,\r\n TwoLetterISORegionName: this.addUpdateAddress.TwoLetterISORegionName,\r\n ZipCode: this.addUpdateAddress.ZipCode\r\n };\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(updatedAddress)\r\n : this.addressCommon.addCustomerAddress(updatedAddress);\r\n } else {\r\n response = Promise.resolve({ address: updatedAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n\r\n let newAddress = result.address;\r\n newAddress = { ...newAddress, ...updatedAddress };\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n if (result.customerAddresses) {\r\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: newAddress });\r\n } else {\r\n this._onAddOrUpdateSuccess({ address: newAddress });\r\n }\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get called on country change.\r\n * @param countryRegionId - Country region id.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Method to get all address format exclude list.\r\n * @returns Collection of address items.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Method to get all state/provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n 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 set(this.addUpdateAddress, { State: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Method to set default country region id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const market = this.props.config.countryRegionISOCode || 'US';\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * Method to get default address region id.\r\n * @returns - Address object from existing addresses.\r\n */\r\n private readonly _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Method to initialize all module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n if (this._canShip()) {\r\n const defaultAddress = this.props.data.checkout.result?.checkoutCart.cart.ShippingAddress ?? this._getDefaultAddress();\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on submit address.\r\n */\r\n private readonly onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n this.props.context.actionContext.update(new SavesubmitEnabledisableInput(), { disableButton: false});\r\n\r\n };\r\n\r\n /**\r\n * Method get called on cancel.\r\n */\r\n private readonly onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n this.props.context.actionContext.update(new SavesubmitEnabledisableInput(), { disableButton: false});\r\n };\r\n\r\n /**\r\n * Method get called on edit address.\r\n */\r\n private readonly onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n this.props.context.actionContext.update(new SavesubmitEnabledisableInput(), { disableButton: true});\r\n\r\n };\r\n\r\n /**\r\n * Method to check if checkout cartlines are available fro shipping.\r\n * @returns - True/false as per the delivery mode.\r\n */\r\n private readonly _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-expect-error: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n /**\r\n * Method get called on select address.\r\n */\r\n private readonly _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method get called on goto add address.\r\n */\r\n private readonly _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * Method get called on add/update success.\r\n * @param response - Retail api response.\r\n */\r\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on set Shipping Address.\r\n * @param address - Retail Api address result.\r\n */\r\n private readonly _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\r\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\r\n this.props.telemetry.error(error);\r\n });\r\n }\r\n };\r\n\r\n @computed private get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result?.shippingAddress;\r\n }\r\n\r\n /**\r\n * Method get called on reset view.\r\n */\r\n private readonly _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - The address operation.\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, { Address: this.state.fullAddress?.split(':')[0] });\r\n set(this.addUpdateAddress, { APT: this.state.fullAddress?.split(':')[1] });\r\n set(this.addUpdateAddress, {\r\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n /**\r\n * Update module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * 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 { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './pc-checkout-shipping-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\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 - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\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 - Error message.\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 Address add update component 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 {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 * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n //console.log('Show address', showAddOrUpdateAddress);\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['pc-checkout-shipping-address'] = {\n c: () => require('partner/modules/pc-checkout-shipping-address/pc-checkout-shipping-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'pc-checkout-shipping-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/pc-checkout-shipping-address'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|pc-checkout-shipping-address|pc-checkout-shipping-address'] = {\n c: () => require('partner/modules/pc-checkout-shipping-address/pc-checkout-shipping-address.view.tsx'),\n cn: '__local__-__local__-pc-checkout-shipping-address'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\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 { getAddressPurposesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get Address Purposes data action.\n */\nexport class GetAddressPurposesInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AddressPurpose', this.apiSettings);\n\n public getCacheObjectType = () => 'AddressPurpose';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetAddressPurposesInput => {\n return new GetAddressPurposesInput(inputData.requestContext.apiSettings);\n};\n\nexport async function getAddressPurposesAction(input: GetAddressPurposesInput, ctx: IActionContext): Promise {\n return getAddressPurposesAsync({\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n });\n}\n\nexport const getAddressPurposesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-address-purposes',\n action: >getAddressPurposesAction,\n input: createInput\n});\n\nexport default getAddressPurposesActionDataAction;\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 { getCountryRegionsByLanguageIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { CountryRegionInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get country regions data action.\n */\nexport class GetCountryRegionsInput implements IActionInput {\n public locale: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\n\n public getCacheObjectType = () => 'CountryRegionInfo';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryRegionsInput => {\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\n};\n\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\n // This API is returning more that 100 records. So, can't use the default page size for this.\n // Removing the query result setting.\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\n}\n\nexport const getCountryRegionsActionDataAction = createObservableDataAction({\n action: >getCountryRegionsAction,\n input: createInput\n});\n\nexport default getCountryRegionsActionDataAction;\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 { CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getCountryRegionsAction, GetCountryRegionsInput } from './get-country-regions';\nimport { getStateProvinceAction, GetStateProvincesInput } from './get-state-provinces';\n\n/**\n * Input class for get country regions data action.\n */\nexport class GetCountryStateInput implements IActionInput {\n public locale: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryStateInfo-${this.locale}`, this.apiSettings);\n\n public getCacheObjectType = () => 'StateProvinceInfo';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryStateInput => {\n const { locale, apiSettings } = inputData.requestContext;\n if (!(inputData.requestContext && locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n return new GetCountryStateInput(locale, apiSettings);\n};\n\nexport async function getCountryStateAction(input: GetCountryStateInput, ctx: IActionContext): Promise {\n const countryInput = new GetCountryRegionsInput(input.locale, input.apiSettings);\n const countryRegionsInfo = await getCountryRegionsAction(countryInput, ctx);\n\n const channelConfiguration = ctx.requestContext.channel;\n\n const marketISOCode = (channelConfiguration && channelConfiguration.ChannelCountryRegionISOCode) || 'US';\n const currentCountryRegion = countryRegionsInfo.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n const countryRegionId = (currentCountryRegion && currentCountryRegion.CountryRegionId) || 'USA';\n\n const stateInput = new GetStateProvincesInput(countryRegionId, input.apiSettings);\n return getStateProvinceAction(stateInput, ctx);\n}\n\nexport const getCountryStateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-country-state',\n action: >getCountryStateAction,\n input: createInput\n});\n\nexport default getCountryStateActionDataAction;\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 ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey, QueryResultSettingsProxy } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for get state provinces data action.\n */\nexport class GetStateProvincesInput implements IActionInput {\n public countryRegionId: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\n this.countryRegionId = countryRegionId;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\n\n public getCacheObjectType = () => 'StateProvinceInfo';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\n return getStateProvincesAsync(\n {\n callerContext: ctx,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(ctx)\n },\n input.countryRegionId\n );\n}\n\nexport const getStateProvinceActionDataAction = createObservableDataAction({\n action: >getStateProvinceAction\n});\n\nexport default getStateProvinceActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport {\n IListMapViewState,\n ILoadMapApiInput,\n IStoreInfo,\n IStoreSelectionStateContext,\n IStoreSelectorLocation,\n IStoreSelectorStateManager\n} from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(\n storeId?: string,\n storeName?: string | undefined,\n writeToCookie: boolean = false,\n latitude?: number,\n longitude?: number\n ): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (\n !searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled\n ) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl =\n actionContext.requestContext.app &&\n actionContext.requestContext.app.config &&\n actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${\n geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT\n }/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise(resolve => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${\n input.market ? `&setMkt=${input.market}` : ''\n }`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\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 { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\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.\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","module.exports = React;","module.exports = ReactDOM;"],"names":["SavesubmitEnabledisableInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","Msdyn365","action","async","input","ctx","disableButton","id","args","AutoSuggest","telemetry","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","this","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","detachAutosuggest","dispose","undefined","_loadMapAPI","storeSelectorStateManager","loadMapApi","key","lang","market","GetAddressPurposesInput","apiSettings","buildCacheKey","getAddressPurposesAction","getAddressPurposesAsync","callerContext","queryResultSettings","createObservableDataAction","inputData","requestContext","GetStateProvincesInput","countryRegionId","getStateProvinceAction","getStateProvincesAsync","AddressCommon","context","resources","getDefaultCountryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","request","user","isAuthenticated","getStateProvinces","response","actionContext","error","Promise","resolve","isEmpty","address","ThreeLetterISORegionName","State","City","addCustomerAddress","updateLogisticsLocationRoleRecordId","submitCustomerAddress","addAddress","updateCustomerAddress","updateAddress","updateCustomerPrimaryAddress","updatePrimaryAddress","addressAction","AddressTypeValue","AddressManagementInput","execAddressAction","addresses","length","RecordId","customerAddresses","addressPurposes","ArrayExtensions","hasElements","addressPurpose","purpose","AddressType","LogisticsLocationRoleRecordId","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","AddressOperation","AddressFormat","countryRegionsInfo","addressMetaData","getPrefilledAddressDropdownData","stateDefaultSelectionText","stateProvinceInfo","defaultStateText","value","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","getTwoLetterISORegionName","_getCountryRegionInfo","validateAddressFormat","validationError","propertyName","validationtor","isValid","getAddressFormat","forEach","addressFormatItem","name","_inputValidation","getTranformedAddress","result","postalCode","ZipCode","selectedState","state","StateName","adminDistrict","StateId","addressLine","Street","locality","district","DistrictName","CountyName","FullAddress","formattedAddress","_validateRegEx","validationRule","regEx","RegExp","test","get","countryRegionInfo","_getAddressDisplayFormat","map","ShortName","Name","set","validationRules","message","toLowerCase","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","push","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","pcAPTDisplayItem","APT","pcAddressDisplayItem","Address","nameDisplayItem","phoneDisplayItem","Phone","isPrimaryDisplayItem","IsPrimary","type","AddressMetaData","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","item","_addItem","Input","PhoneRegex","defaultRegex","County","Dropdown","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","Checkbox","displayType","format","includes","nameKey","replace","_validationRules","isRequired","some","rule","Required","optionalString","label","ruleType","Object","keys","itemType","_validationRule","Format","props","React","className","role","text","ariaLabel","disabled","isDisabled","telemetryContent","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","itemId","isChecked","additionalAddributes","autoFocus","shouldBeAutoFocused","onChange","checked","displayData","selectedValue","isSelected","getDropdownItem","title","shouldUseAutoFocus","htmlFor","getRequriedAttribute","_getMaxLength","addressCharacterLength","aptUnitCharacterLength","cityCharacterLength","getAddessItems","selectedAddress","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","onInputChange","onDropdownChange","shouldAutoFocus","index","elementId","classname","AddressInputComponent","AdressCheckboxComponent","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","isShowLabel","labelText","mainClass","AddressShow","AddressDetail","items","addressTypeValue","toString","description","AddressDetailItemComponent","getInput","onAddressOptionChange","ichecked","additionalAttributes","addressChangeCheckboxAriaLabel","getAddressSelectItems","SelectItem","showItems","CheckoutPickupCartLines","moduleClassName","cartLines","itemTitle","cartLine","isShowQty","quantity","classnames","lineId","Image","imageProps","productQuantityInfo","altText","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","quality","CheckoutShippingAddress","super","addressListSelectedAddress","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","products","_getProductsByCartLines","data","checkout","checkoutCart","cart","ChannelId","line","product","x","ProductId","setState","shippingGroups","_onSuggestionSelected","_clearAddressFields","addUpdateAddress","fullAddress","split","trim","formatAddress","autoSuggest","_clearValidation","_dataInitialize","reaction","countryStates","featureState","feature","IsEnabled","CartLines","filter","_isDelivery","_isNotPickupMode","DeliveryMode","FulfillmentStoreId","deliveryMode","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","channelDeliveryOptionConfig","pickupDeliveryMode","PickupDeliveryModeCodes","pickupMode","channelId","productInputs","ObjectExtensions","isNullOrUndefined","ProductInput","getSimpleProducts","_renderAddOrUpdateAddress","currentOperation","Add","addressCommon","editAddressHeading","addAddressHeading","hasError","onCancel","onSave","hasExternalSubmitGroup","isUpdating","addressActionResponse","heading","AddressForm","Heading","isShowSaveButton","saveButton","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressErrorTitleComponent","AddressErrorMessageComponent","AddressAddUpdate","Shipping","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","moduleState","onSubmit","_resetView","_renderSelectAddress","onAddAddress","SelectAddress","addButton","addressAddButtonText","addressAddButtonAriaLabel","AddressSelect","_onAddressOptionChange","_goToAddAddress","_onSelectAddress","_attachMapAutoSuggest","isMapApiLoaded","event","addressRecordId","currentTarget","onAddressAddUpdate","target","_onCountryChange","_onAddressAddUpdateSubmit","updatedAddress","TwoLetterISORegionName","Update","_updateModuleState","then","newAddress","_onAddOrUpdateSuccess","twoLetterIsoRegionName","_getAddressFormatExcludeList","config","addressFormatExcludeList","showAddressType","_getStateProvinces","_getDefaultAddress","_initModuleState","init","status","_canShip","onEdit","defaultAddress","ShippingAddress","_updateCurrentOperation","Show","_setShippingAddress","List","update","shippingAddress","emailDeliveryModeCode","EmailDeliveryModeCode","hasInvoiceLine","_setDefaultCountryRegionId","newShippingAddress","updateShippingAddress","catch","operation","onReady","onPending","onUpdating","getTelemetryObject","telemetryPageName","friendlyName","autoSuggestionEnabled","BingMapsEnabled","ChannelCountryRegionISOCode","DefaultLanguageId","shouldComponentUpdate","nextProps","nextState","render","renderView","headingImages","itemsText","singleItemText","imageSettings","cartlines","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","gridSettings","loadFailureBehavior","Quantity","itemText","lineImageProps","cartLineImages","isRetailMultiplePickUpOptionEnabled","viewState","isShowAddress","isShowAddresList","isShowAddOrUpdateAddress","moduleProps","showAddress","_renderShowAddress","showAddressSelect","showAddOrUpdateAddress","countryRegionISOCode","__decorate","observable","computed","withModuleState","observer","Node","Module","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","getAddressPurposesActionDataAction","GetCountryRegionsInput","locale","getCountryRegionsAction","getCountryRegionsByLanguageIdAsync","getCountryRegionsActionDataAction","GetCountryStateInput","getCountryStateAction","countryInput","channelConfiguration","stateInput","getCountryStateActionDataAction","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","searchContent","jsonp","crypto","getRandomValues","Uint32Array","query","encodeURI","geolocationApiUrl","app","requestUrl","script","createElement","remove","resourceSets","point","coordinates","body","appendChild","StringExtensions","isNullOrEmpty","getElementById","url","reject","defer","mapAPIReady","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","getGenericAction","_this","CheckoutState","CheckoutStateInput","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","newTokenizedPaymentCard","newTenderLine","newBillingAddress","newCardPrefix","giftCardNumber","giftCard","Id","newLoyaltyCardNumber","newAmount","newGuestCheckoutEmail","newIsTermsAndConditionAccepted","getModuleStates","cacheKey","ModuleStatesCacheKey","moduleStates","WrappedComponent","_super","typeName","states","hasInitialized","isCancellable","isSubmitContainer","childIds","validate","isReady","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","setHasError","onSkip","onDisable","getModule","moduleId","getModuleStateManager","getModuleByTypeName","getModuleStateManagerByTypeName","values","_moduleState","source","module","isMatch","allMatched","skipSkippableItem","_validateLeaf","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","_validateContainer","enableControl","initializeState","__extends","ModuleState","exports","ReactDOM"],"sourceRoot":""}