{"version":3,"file":"static/js/3e1f196c78a50d9f9b40.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/dotdigital-extension/DataServiceEntities.g.ts?cecd","webpack://Dobbies.Commerce/./src/dotdigital-extension/DataActionExtension.g.ts?36a7","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/actions/get-address-purposes.ts?6940","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/actions/get-country-regions.ts?8d2e","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/address-autosuggest.ts?47eb","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/actions/get-state-provinces.ts?f908","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/address-common.ts?b8b1","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/address-format.data.ts?7c45","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/address-module.data.ts?986f","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/address-format.ts?651c","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/address-meta-data.ts?8465","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-alert.tsx?ab13","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-button.tsx?d503","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-checkbox.tsx?c8db","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-dropdown.tsx?019e","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-error-message.tsx?431e","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-error-title.tsx?626c","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-input.tsx?2780","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-label.tsx?da64","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-add.tsx?b44f","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-detail-item.tsx?76b1","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-show.tsx?6ac7","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/common/components/address-list.tsx?8bb7","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/dobbies-account-management-address.tsx?dd7c","webpack://Dobbies.Commerce/./src/modules/dobbies-account-management-address/dobbies-account-management-address.view.tsx?5ea7","webpack://Dobbies.Commerce/./lib/dobbies-account-management-address/module-registration.js?8eb7","webpack://Dobbies.Commerce/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://Dobbies.Commerce/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://Dobbies.Commerce/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["// tslint:disable\r\n/* eslint-disable security/detect-object-injection */\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * VSIRestAPIHandler entity interface.\r\n */\r\nexport interface IVSIRestAPIHandler {\r\n Id: number;\r\n result?: string;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n}\r\n\r\n/**\r\n * VSIRestAPIHandler entity class.\r\n */\r\nexport class VSIRestAPIHandlerExtensionClass implements IVSIRestAPIHandler {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Id: number;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Id = odataObject.Id;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat('Class');\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i]);\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\n// tslint:disable\r\nimport { AsyncResult, callActionOrExecute, DataServiceQuery, IContext, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\n// @ts-ignore\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n// @ts-ignore\r\nfunction vSIGetAPIResponseQuery(id?: number): DataServiceQuery {\r\n const key = id ? { Id: id } : null;\r\n return new DataServiceQuery('VSIGetRestAPIResponse', 'VSIRestAPIHandler', DataServiceEntities.VSIRestAPIHandlerExtensionClass, key);\r\n}\r\n\r\nexport function createVSIInitiateRestCallInput(\r\n targetSystem: string,\r\n methodType: string,\r\n requestHeader: string,\r\n requestBody: string,\r\n urlParams: string,\r\n servicePath: string\r\n): IDataServiceRequest {\r\n const query = vSIGetAPIResponseQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'VSI_CallGenericRestAPIHandler',\r\n true,\r\n DataServiceEntities.VSIRestAPIHandlerExtensionClass,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IVSIRestAPIHandler' },\r\n {\r\n targetSystem: targetSystem,\r\n methodType: methodType,\r\n requestHeader: requestHeader,\r\n requestBody: requestBody,\r\n urlParams: urlParams,\r\n servicePath: servicePath\r\n }\r\n );\r\n}\r\n\r\nexport function vSIInitiateRestCallAsync(\r\n context: IContext,\r\n targetSystem: string,\r\n methodType: string,\r\n requestHeader: string,\r\n requestBody: string,\r\n urlParams: string,\r\n servicePath: string\r\n): AsyncResult {\r\n const request = createVSIInitiateRestCallInput(targetSystem, methodType, requestHeader, requestBody, urlParams, servicePath);\r\n return callActionOrExecute(request, context.callerContext);\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { getAddressPurposesAsync } 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 => 'application';\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({\r\n callerContext: ctx,\r\n queryResultSettings: {}\r\n });\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { getCountryRegionsByLanguageIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { CountryRegionInfo } 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 country regions data action.\r\n */\r\nexport class GetCountryRegionsInput implements IActionInput {\r\n public locale: string;\r\n\r\n private readonly apiSettings: ICommerceApiSettings;\r\n\r\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\r\n this.locale = locale;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\r\n\r\n public getCacheObjectType = () => 'CountryRegionInfo';\r\n\r\n public dataCacheType = (): CacheType => 'application';\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>): GetCountryRegionsInput => {\r\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\r\n throw new Error('Unable to create country regions input. Locale is not provided.');\r\n }\r\n\r\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\r\n};\r\n\r\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\r\n // This API is returning more that 100 records. So, can't use the default page size for this.\r\n // Removing the query result setting.\r\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\r\n}\r\n\r\nexport const getCountryRegionsActionDataAction = createObservableDataAction({\r\n action: >getCountryRegionsAction,\r\n input: createInput\r\n});\r\n\r\nexport default getCountryRegionsActionDataAction;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { 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(\r\n telemetry: ITelemetry,\r\n autoSuggestOptions: IAutoSuggestOptions,\r\n BingMapsApiKey?: string,\r\n countryCode?: string,\r\n defaultLanguageId?: string\r\n ) {\r\n this.telemetry = telemetry;\r\n this.autoSuggestOptions = autoSuggestOptions;\r\n this.bingMapsApiKey = BingMapsApiKey;\r\n this.countryCode = countryCode;\r\n this.defaultLanguageId = defaultLanguageId;\r\n }\r\n\r\n public attachAutoSuggest = (\r\n inputId: string,\r\n containerId: string,\r\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\r\n ): void => {\r\n if (!this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = { ...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 // eslint-disable-next-line @typescript-eslint/naming-convention\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport { getStateProvincesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\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(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: {}\r\n },\r\n input.countryRegionId\r\n );\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.\r\n * All rights reserved. See LICENSE 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,\r\n AddressPurpose,\r\n CountryRegionInfo,\r\n StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n addAddress,\r\n AddressManagementInput,\r\n ArrayExtensions,\r\n updateAddress,\r\n updatePrimaryAddress\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\n\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 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 (\r\n addressAction: IObservableAction,\r\n address: Address\r\n ): 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 (\r\n addressAction: IObservableAction,\r\n input: IActionInput | IActionInput[],\r\n address: Address\r\n ): Promise => {\r\n let response: IAddressResponse = {};\r\n\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n 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(\r\n purpose => purpose.AddressType === address.AddressTypeValue\r\n );\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 Name = 1001,\r\n Phone = 1002,\r\n IsPrimary = 1003,\r\n AddressTypeValue = 1004,\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n 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}\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\nexport interface IAddressFormatData {\r\n validationRules?: IAddressValidationRule[];\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 } 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 Invoice = 'Invoice',\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 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\nexport interface IAddressModuleData {\r\n address: Address;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport {\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\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[]): Address => {\r\n const address: Address = {};\r\n\r\n // Zip Code\r\n if (result.address.postalCode !== undefined) {\r\n address.ZipCode = result.address.postalCode;\r\n } else {\r\n address.ZipCode = '';\r\n }\r\n\r\n // State\r\n if (stateProvinceInfo) {\r\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\r\n if (!selectedState) {\r\n address.State = '';\r\n address.StateName = result.address.adminDistrict;\r\n } else {\r\n address.State = selectedState.StateId;\r\n address.StateName = selectedState.StateName;\r\n }\r\n }\r\n\r\n // Street\r\n if (result.address.addressLine !== undefined) {\r\n address.Street = result.address.addressLine;\r\n } else {\r\n address.Street = ' ';\r\n }\r\n\r\n // City\r\n if (result.address.locality !== undefined) {\r\n address.City = result.address.locality;\r\n } else {\r\n address.City = '';\r\n }\r\n\r\n // District\r\n if (result.address.district !== undefined) {\r\n address.DistrictName = result.address.district;\r\n address.CountyName = result.address.district;\r\n } else {\r\n address.DistrictName = '';\r\n }\r\n\r\n // Formatted Address\r\n address.FullAddress = result.address.formattedAddress;\r\n\r\n return address;\r\n };\r\n\r\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, { [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 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 const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n\r\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\r\n if (isPrimaryDisplayItem) {\r\n addressDisplayItem.push(isPrimaryDisplayItem);\r\n }\r\n }\r\n\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","/*!\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 { 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 : [\r\n AddressItemType.AddressTypeValue,\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName,\r\n AddressItemType.Street,\r\n AddressItemType.Phone\r\n ];\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, 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 this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\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 {message && <>{message}}\r\n \r\n );\r\n};\r\n\r\nexport default AddressAlertFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { 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 );\r\n};\r\n\r\nexport default AddressButtonFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { 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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string | number;\r\n additionalAddributes?: object;\r\n displayData: { key?: string | number; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\r\n let isSelected: boolean;\r\n if (typeof key === 'number') {\r\n isSelected = key === selectedValue;\r\n } else {\r\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\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 { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\r\n\r\n return (\r\n \r\n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\r\n \r\n );\r\n};\r\n\r\nexport default AddressDropdownFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\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

{message}

;\r\n};\r\n\r\nexport default AddressErrorMessageFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\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

{title}

;\r\n};\r\n\r\nexport default AddressErrorTitleFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n value: string;\r\n maxLength?: number;\r\n autoFocus?: boolean;\r\n additionalAddributes?: object;\r\n telemetryContent?: ITelemetryContent;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\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 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 /* VSI Customization - START - 03/02/21 - Mark input field as numeric field if it is for phone input */\r\n const isPhone = name ? name.toLowerCase() === 'phone' : undefined;\r\n const patternAttribute = isPhone\r\n ? {\r\n pattern: `^\\s*\\(?(020[7,8]{1}\\)?[ ]?[1-9]{1}[0-9{2}[ ]?[0-9]{4})|(0[1-8]{1}[0-9]{3}\\)?[ ]?[1-9]{1}[0-9]{2}[ ]?[0-9]{3})\\s*$`\r\n }\r\n : {};\r\n /* VSI Customization - END */\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressInputFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nexport interface IAdressLabel {\r\n id: string;\r\n text: string;\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 { id: itemId, text } = props;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressLabelFunctionComponent;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { 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\nimport { IPostCodeDropDownOption } from '../../../dobbies-checkout-shipping-address';\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 postalOptions: IPostCodeDropDownOption[];\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n telemetryContent?: ITelemetryContent;\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\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 postalOptions,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange,\r\n shouldAutoFocus\r\n } = props;\r\n\r\n return addressFormat.map((addressFormatItem, index) => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n let errorMessage = get(validationError, addressFormatItem.name);\r\n const addr = selectedAddress[addressFormatItem.name];\r\n if (addr && addr.length >= 1 && addressFormatItem.name === 'ZipCode' && postalOptions.length <= 0) {\r\n errorMessage = 'Postcode is not valid';\r\n }\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n\r\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\r\n selectedValue = selectedValue || defaultAddressType;\r\n }\r\n\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className, 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.\r\n * All rights reserved. See LICENSE 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.\r\n * All rights reserved. See LICENSE 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 } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { AddressItemType, IAddressItem } from '../../common/address-format.data';\r\n\r\nimport AddressDetailItemComponent from './address-detail-item';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: Address;\r\n addressPurposes: AddressPurpose[];\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, addressPurposes, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map(item => {\r\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n const addressType = addressPurposes.find(\r\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\r\n );\r\n if (addressType) {\r\n const value = addressType.Name || '';\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n }\r\n }\r\n return {\r\n key: item.name,\r\n description: (\r\n \r\n )\r\n };\r\n })\r\n };\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\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\nimport { Address, AddressPurpose } 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 * as React from 'react';\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource, IAddressResponse } from '../../common/address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressListError {\r\n Error: INodeProps;\r\n isShowError: boolean;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressListItem {\r\n Item: INodeProps;\r\n key: number;\r\n error: IAddressListError;\r\n showItems: IAddressShowProps;\r\n isShowPrimaryButton: boolean;\r\n primaryButton: React.ReactNode;\r\n editButton: React.ReactNode;\r\n removeButton: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressList {\r\n List: INodeProps;\r\n isShowList: boolean;\r\n heading: React.ReactNode;\r\n items: IAddressListItem[];\r\n}\r\n\r\nexport interface IAddressListProps {\r\n ListAddress: INodeProps;\r\n heading: React.ReactNode;\r\n isShowEmptyListMessage: boolean;\r\n emptyListMessage: React.ReactNode;\r\n addButton: React.ReactNode;\r\n primaryAddressList: IAddressList;\r\n otherAddressList: IAddressList;\r\n}\r\n\r\nexport interface IAddressListInputProps {\r\n isUpdating?: boolean;\r\n selectedAddress?: Address;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n addressPurposes: AddressPurpose[];\r\n heading?: HeadingData;\r\n primaryAddressSectionHeading?: HeadingData;\r\n otherAddressSectionHeading?: HeadingData;\r\n addressActionResponse?: IAddressResponse;\r\n resources: IAddressResource;\r\n contextRequest: Msdyn365.IRequestContext;\r\n telemetryContent?: ITelemetryContent;\r\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\r\n onAddAddress(): void;\r\n onEditAddress(address?: Address): void;\r\n onRemoveAddress(address?: Address): void;\r\n onUpdatePrimaryAddress(address: Address): void;\r\n}\r\n\r\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\r\n return ariaLabel.replace('{addressName}', addressName || '');\r\n};\r\n\r\nconst getAddressList = (\r\n className: string,\r\n addresses: Address[],\r\n showPrimaryButton: boolean,\r\n props: IAddressListInputProps,\r\n heading?: HeadingData\r\n): IAddressList => {\r\n const {\r\n resources,\r\n isUpdating,\r\n addressActionResponse,\r\n selectedAddress,\r\n addressFormat,\r\n onEditAddress,\r\n onRemoveAddress,\r\n onUpdatePrimaryAddress,\r\n addressPurposes,\r\n telemetryContent\r\n } = props;\r\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\r\n\r\n return {\r\n List: { className },\r\n isShowList: addresses.length > 0,\r\n heading: heading && ,\r\n items: addresses.map(\r\n (address: Address): IAddressListItem => {\r\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\r\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\r\n return {\r\n Item: { className: `${className}-list` },\r\n key: address.RecordId || 0,\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address,\r\n addressPurposes\r\n }),\r\n error: {\r\n Error: { className: `${className}-error` },\r\n isShowError: !!isShowError,\r\n title: ,\r\n message: \r\n },\r\n isShowPrimaryButton: showPrimaryButton,\r\n\r\n primaryButton: (\r\n {\r\n onUpdatePrimaryAddress(address);\r\n }\r\n }}\r\n />\r\n ),\r\n editButton: (\r\n {\r\n onEditAddress(address);\r\n },\r\n role: 'link'\r\n }}\r\n />\r\n ),\r\n removeButton: (\r\n {\r\n onRemoveAddress(address);\r\n },\r\n role: 'link'\r\n }}\r\n />\r\n )\r\n };\r\n }\r\n )\r\n };\r\n};\r\n\r\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\r\n const { addresses, primaryAddressSectionHeading } = props;\r\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\r\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\r\n};\r\n\r\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\r\n const { addresses, otherAddressSectionHeading } = props;\r\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\r\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\r\n};\r\n\r\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\r\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\r\n\r\n const headingComponent = heading?.text && (\r\n {\r\n // Required\r\n },\r\n requestContext: props.contextRequest\r\n }}\r\n />\r\n );\r\n\r\n return {\r\n ListAddress: { className: 'ms-address-list' },\r\n heading: headingComponent,\r\n isShowEmptyListMessage: addresses.length === 0,\r\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\r\n addButton: (\r\n \r\n ),\r\n primaryAddressList: getPrimaryAddressList(props),\r\n otherAddressList: getOtherAddressList(props)\r\n };\r\n};\r\n","/*!\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\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo, IContext } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { action, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { AutoSuggest } from './common/address-autosuggest';\r\nimport { IAutoSuggestOptions } from './common/address-autosuggest.data';\r\nimport { vSIInitiateRestCallAsync } from '../../dotdigital-extension/DataActionExtension.g';\r\nimport { IDeliveryOption, IPostCodeDropDownOption, IPostCodeVerification } from '../dobbies-checkout-shipping-address';\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 { AddressList, IAddressListProps } from './common/components/address-list';\r\nimport { IDobbiesAccountManagementAddressData } from './dobbies-account-management-address.data';\r\nimport { IDobbiesAccountManagementAddressProps } from './dobbies-account-management-address.props.autogenerated';\r\n\r\nexport interface IAccountManagementAddressViewState {\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface IDobbiesAccountManagementAddressState {\r\n postCodeEmptyErrorMessage: string;\r\n addressOptions: IPostCodeDropDownOption[];\r\n postalOptions: IPostCodeDropDownOption[];\r\n}\r\n\r\nexport interface IAccountManagementAddressViewProps\r\n extends React.Component> {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: IAccountManagementAddressViewState;\r\n AccountAddressManagement: IModuleProps;\r\n isUpdating: boolean;\r\n showAddressList: IAddressListProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n renderInputWithButton: React.ReactNode;\r\n screenReaderNotification: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountManagementAddress extends React.Component<\r\n IDobbiesAccountManagementAddressProps,\r\n IDobbiesAccountManagementAddressState\r\n> {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private addUpdateAddress: Address;\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n @observable private removeAddressData?: Address;\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private addressPurposes: AddressPurpose[];\r\n private resources: IAddressResource;\r\n private defaultAddressType: number = 6; // Default to Home\r\n private telemetryContent: ITelemetryContent;\r\n private autoSuggest?: AutoSuggest;\r\n /* VSI-Customization -- START Post code look related */\r\n private postCodeInputRef: React.RefObject;\r\n /* VSI-Customization -- END */\r\n constructor(props: IDobbiesAccountManagementAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\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.addUpdateAddress = {};\r\n this.validationError = {};\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.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n /* VSI-Customization -- START post code lookup related */\r\n this.postCodeInputRef = React.createRef();\r\n /* VSI-Customization -- END */\r\n this.state = {\r\n addressOptions: [],\r\n postalOptions: [],\r\n postCodeEmptyErrorMessage: ''\r\n };\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this.props.data.countryRegions.then(() => {\r\n this._setDefaultCountryRegionId();\r\n });\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\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 if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\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 reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\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 reaction(\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n },\r\n async () => {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n /**\r\n * Should component update function.\r\n * @param nextProps - Account management address props.\r\n * @param nextState - Next state.\r\n * @returns - True if component should update, false otherwise.\r\n */\r\n\r\n public shouldComponentUpdate(\r\n nextProps: IDobbiesAccountManagementAddressProps,\r\n nextState: IDobbiesAccountManagementAddressState\r\n ): 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 {\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n renderInputWithButton: this._renderInputWithButton(),\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\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 isShowAddresList: this.currentOperation === AddressOperation.List,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\r\n },\r\n AccountAddressManagement: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-management-address', config.className)\r\n },\r\n showAddressList: this._renderListAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\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 account management props.\r\n */\r\n\r\n private readonly _dataInitialize = (props: IDobbiesAccountManagementAddressProps): void => {\r\n const { data } = props;\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\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 reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n };\r\n\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.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 addressActionResponse: this.addressActionResponse,\r\n postalOptions: this.state.postalOptions || [],\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n telemetryContent: this.telemetryContent,\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n onSave: this._onAddressAddUpdateSubmit,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n private findAddress = async (e: React.ChangeEvent) => {\r\n const { value } = e.currentTarget;\r\n\r\n if (value && value.length >= 5) {\r\n const context: IContext = { callerContext: this.props.context.actionContext };\r\n const urlParams = {\r\n key: '1024c-01f0c-70dd6-06464',\r\n postcode: this.postCodeInputRef.current?.value,\r\n response: 'data_formatted'\r\n };\r\n const res = await vSIInitiateRestCallAsync(\r\n context,\r\n 'Fetchify',\r\n 'get',\r\n '{\"cache-control\":\"no-cache\", \"Accept\":\"application/json\" }',\r\n '',\r\n JSON.stringify(urlParams),\r\n `/json/rapidaddress`\r\n );\r\n if (res.result) {\r\n const responseResult: IPostCodeVerification = JSON.parse(res.result);\r\n /* VSI-Customization -- START If response got from API map it into array and update it with state (setState) */\r\n if (!responseResult.error_msg) {\r\n const addressOptions = this.mapPostCodeOptions(responseResult);\r\n this.setState({ addressOptions: addressOptions, postCodeEmptyErrorMessage: '' });\r\n /* VSI-Customization -- START If error code returns it means postcode isn't valid */\r\n } else {\r\n this.setState({ addressOptions: [], postCodeEmptyErrorMessage: this.props.resources.validPostCodeErrorText });\r\n }\r\n }\r\n } else if (value.length < 5) {\r\n this.setState({ addressOptions: [], postCodeEmptyErrorMessage: '' });\r\n }\r\n };\r\n /* VSI-Customization -- END */\r\n\r\n private findPostalAddress = async (value: string) => {\r\n if (value && value.length >= 5) {\r\n const context: IContext = { callerContext: this.props.context.actionContext };\r\n const urlParams = {\r\n key: '1024c-01f0c-70dd6-06464',\r\n postcode: value,\r\n response: 'data_formatted',\r\n sort: 'asc'\r\n };\r\n\r\n const res = await vSIInitiateRestCallAsync(\r\n context,\r\n 'Fetchify',\r\n 'get',\r\n \"{'cache-control':'no-cache' , 'Accept':'application/json'}\",\r\n '',\r\n JSON.stringify(urlParams),\r\n `/json/rapidaddress`\r\n );\r\n if (res.result) {\r\n const responseResult: IPostCodeVerification = JSON.parse(res.result);\r\n /* VSI-Customization -- START If response got from API map it into array and update it with state (setState) */\r\n if (!responseResult.error_msg) {\r\n const postalOptions = this.mapPostCodeOptions(responseResult);\r\n this.setState({ postalOptions: postalOptions, postCodeEmptyErrorMessage: '' });\r\n /* VSI-Customization -- START If error code returns it means postcode isn't valid */\r\n } else {\r\n this.setState({ postalOptions: [] });\r\n }\r\n }\r\n } else if (value.length < 5) {\r\n this.setState({ postalOptions: [], postCodeEmptyErrorMessage: '' });\r\n }\r\n };\r\n\r\n /* VSI-Customization -- START If postcode is invalid display the error text message that please enter a valid postcode */\r\n private _renderEmptyPostCodeErrorMessage = () => {\r\n return (\r\n <>\r\n {this.state.postCodeEmptyErrorMessage && (\r\n
\r\n

{this.state.postCodeEmptyErrorMessage}

\r\n
\r\n )}\r\n \r\n );\r\n };\r\n /* VSI-Customization -- END */\r\n\r\n /* VSI-Customization -- START When user selects option from autosuggestion box embed the selected option values into form fields */\r\n private handleAddressOption = (option: IPostCodeDropDownOption) => (e: React.MouseEvent) => {\r\n const { addressOptions } = this.state;\r\n if (addressOptions && addressOptions.length > 0) {\r\n const addressOption = addressOptions.find(x => x.option.toLowerCase() === option.option.toLowerCase());\r\n if (addressOption) {\r\n // populate values into form\r\n this.onAddressAddUpdate('City', addressOption.town);\r\n this.onAddressAddUpdate('Street', `${addressOption.postCode.line_1}, ${addressOption.postCode.line_2}`);\r\n this.onAddressAddUpdate('ZipCode', addressOption.code);\r\n // clear the postcode input field\r\n // clear the array\r\n this.postCodeInputRef.current!.value = '';\r\n this.setState({ addressOptions: [] });\r\n } else {\r\n this.onAddressAddUpdate('City', '');\r\n this.onAddressAddUpdate('Street', '');\r\n this.onAddressAddUpdate('ZipCode', '');\r\n }\r\n }\r\n };\r\n /* VSI-Customization -- END */\r\n\r\n /* VSI-Customization -- START Created JSX based on options retrieved from API */\r\n private _renderAddressOptions = (): React.ReactNode => {\r\n const { addressOptions } = this.state;\r\n if (addressOptions && addressOptions.length > 0) {\r\n return (\r\n
\r\n {addressOptions\r\n .sort((a, b) => a.option.localeCompare(b.option))\r\n .map((option: IPostCodeDropDownOption) => {\r\n return (\r\n // tslint:disable-next-line: react-a11y-event-has-role\r\n
\r\n {option.option}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n }\r\n return;\r\n };\r\n /* VSI-Customization -- END */\r\n\r\n /* VSI-Customization -- START Render input field with button */\r\n private _renderInputWithButton = () => {\r\n return (\r\n
\r\n \r\n {this.state.addressOptions?.length > 0 ? (\r\n
{this._renderAddressOptions()}
\r\n ) : (\r\n
{this._renderEmptyPostCodeErrorMessage()}
\r\n )}\r\n
\r\n );\r\n };\r\n /* VSI-Customization -- END */\r\n\r\n /* VSI-Customization -- START Map response data into array and update state with mapped array */\r\n private mapPostCodeOptions = (data: IPostCodeVerification) => {\r\n const addressOptions: IPostCodeDropDownOption[] = [];\r\n data &&\r\n data.delivery_points.map((option: IDeliveryOption) => {\r\n // create object and push it into array of type IPostCodeDropDownOption\r\n const obj: IPostCodeDropDownOption = {\r\n option: `${option.line_1}, ${option.line_2}, ${data.town}`,\r\n dps: option.dps,\r\n postCode: option,\r\n town: data.town,\r\n code: data.postcode\r\n };\r\n addressOptions.push(obj);\r\n });\r\n return addressOptions;\r\n };\r\n /* VSI-Customization -- END */\r\n\r\n private _renderListAddress = (): IAddressListProps => {\r\n const { config } = this.props;\r\n /**\r\n * Render Address ttitle.\r\n * @param event - Msdyn365.ContentEditableEvent.\r\n */\r\n\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n config.heading!.text = event.target.value;\r\n };\r\n const heading = config.heading && {\r\n text: config.heading.text,\r\n headingTag: config.heading.tag\r\n };\r\n\r\n return AddressList({\r\n isUpdating: this.isUpdating,\r\n selectedAddress: this.selectedAddress,\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n addressPurposes: this.addressPurposes,\r\n resources: this.resources,\r\n heading,\r\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\r\n otherAddressSectionHeading: config.otherAddressSectionHeading,\r\n contextRequest: this.props.context.request,\r\n telemetryContent: this.telemetryContent,\r\n handleLineItemHeadingChange,\r\n onEditAddress: this._goToEditAddress,\r\n onRemoveAddress: this._onRemoveAddress,\r\n onAddAddress: this._goToAddAddress,\r\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress\r\n });\r\n };\r\n private _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n @action\r\n private _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { ['Street']: address.Street });\r\n }, 0);\r\n };\r\n @action\r\n private _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n @action\r\n private _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n private onAddressAddUpdate = (name: string, value: string | boolean | number) => {\r\n if (name === 'ZipCode') {\r\n this.findPostalAddress(value as string);\r\n }\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n this.onAddressAddUpdate(event.target.name, +event.target.value);\r\n } else {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n }\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\r\n this.isUpdating = true;\r\n response.then(\r\n (result: IAddressResponse) => {\r\n if (result.address) {\r\n this.hasError = false;\r\n onSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n }\r\n this.isUpdating = false;\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n }\r\n );\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n if (this.state.postalOptions && this.state.postalOptions.length <= 0) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ['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 private _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation) => {\r\n this.currentOperation = operation;\r\n this._clearAddressFields();\r\n };\r\n\r\n private _onSubmitUpdatePrimaryAddress = (address: Address): void => {\r\n this.selectedAddress = address;\r\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\r\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\r\n };\r\n\r\n private _goToEditAddress = (address: Address): void => {\r\n this.addUpdateAddress = { ...address };\r\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\r\n this._updateCurrentOperation(AddressOperation.Update);\r\n };\r\n\r\n private _onRemoveAddress = (address: Address): void => {\r\n address.Deactivate = true;\r\n this.removeAddressData = address;\r\n const response = this.addressCommon.updateCustomerAddress(address);\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * Renders Notification screen reader text for removed address.\r\n * @param address - Address input.\r\n * @returns Notification for removed address.\r\n */\r\n\r\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\r\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\r\n return (\r\n
\r\n {notification}\r\n
\r\n );\r\n };\r\n\r\n private _goToAddAddress = (): void => {\r\n this.addUpdateAddress = {};\r\n this._setDefaultCountryRegionId();\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n this._resetView();\r\n };\r\n\r\n private _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n };\r\n\r\n private _resetView = (): void => {\r\n this.selectedAddress = undefined;\r\n this._updateCurrentOperation(AddressOperation.List);\r\n };\r\n}\r\n\r\nexport default AccountManagementAddress;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\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 {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from './dobbies-account-management-address';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n const { key, description } = item;\r\n if (key.toLowerCase() !== 'threeletterisoregionname') {\r\n return <>{description};\r\n }\r\n return;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\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 renderInputWithButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {/* VSI-Customization -- START Render input field for postcode and button */}\r\n {renderInputWithButton}\r\n {/* VSI-Customization -- END */}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n if (key.toLowerCase() !== 'threeletterisoregionname') {\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n } else {\r\n return;\r\n }\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, screenReaderNotification } = props;\r\n /* VSI-Customization -- START If user is not authenticated then redirets */\r\n if (!props.context.request.user.isAuthenticated) {\r\n const signinURL = props.context.request.user.signInUrl;\r\n window.location.assign(signinURL);\r\n }\r\n /* VSI-Customization -- END */\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && (\r\n \r\n )}\r\n {screenReaderNotification}\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\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['dobbies-account-management-address'] = {\n c: () => require('partner/modules/dobbies-account-management-address/dobbies-account-management-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'modules/dobbies-account-management-address/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'modules/dobbies-account-management-address/actions/get-country-regions', 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: 'dobbies-account-management-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-account-management-address'\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 = 'modules/dobbies-account-management-address/actions/get-address-purposes';\n let dataAction = require('partner/modules/dobbies-account-management-address/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'modules/dobbies-account-management-address/actions/get-country-regions';\n let dataAction = require('partner/modules/dobbies-account-management-address/actions/get-country-regions');\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|dobbies-account-management-address|dobbies-account-management-address'] = {\n c: () => require('partner/modules/dobbies-account-management-address/dobbies-account-management-address.view.tsx'),\n cn: '__local__-__local__-dobbies-account-management-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 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 if (window) {\n const currentWindowAPI = window.mapAPIReady;\n window.mapAPIReady = () => {\n if (currentWindowAPI) {\n currentWindowAPI();\n }\n this.isMapApiLoaded = true;\n };\n }\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","module.exports = React;","module.exports = ReactDOM;"],"names":["VSIRestAPIHandlerExtensionClass","constructor","odataObject","this","Id","result","ExtensionProperties","undefined","i","length","className","substr","lastIndexOf","concat","EntityClasses","createVSIInitiateRestCallInput","targetSystem","methodType","requestHeader","requestBody","urlParams","servicePath","id","key","DataServiceQuery","DataServiceEntities","vSIGetAPIResponseQuery","createDataServiceRequestForOperation","bypassCache","returnEntity","vSIInitiateRestCallAsync","context","request","callActionOrExecute","callerContext","GetAddressPurposesInput","apiSettings","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","async","getAddressPurposesAction","input","ctx","getAddressPurposesAsync","queryResultSettings","getAddressPurposesActionDataAction","createObservableDataAction","action","inputData","requestContext","GetCountryRegionsInput","locale","getCountryRegionsAction","getCountryRegionsByLanguageIdAsync","getCountryRegionsActionDataAction","Error","AutoSuggest","telemetry","autoSuggestOptions","BingMapsApiKey","countryCode","defaultLanguageId","excludedAddressFields","attachAutoSuggest","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","options","_objectSpread","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","setTimeout","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","changeAutoSuggestionCountryCode","setOptions","disposeAutoSuggest","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","_loadMapAPI","storeSelectorStateManager","loadMapApi","lang","market","GetStateProvincesInput","countryRegionId","getStateProvinceAction","getStateProvincesAsync","AddressCommon","resources","getDefaultCountryRegionId","countryRegions","marketISOCode","currentCountryRegion","find","countryRegion","ISOCode","CountryRegionId","parseRetailException","errorTitle","addressErrorMessageTitle","errorMessage","addressGenericErrorMessage","isAuthenticatedFlow","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","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","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","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","getItemFormat","isNewLine","NewLine","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","role","text","ariaLabel","disabled","isDisabled","telemetryContent","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","assign","itemId","isChecked","additionalAddributes","autoFocus","shouldBeAutoFocused","onChange","checked","displayData","getDropdownItem","selectedValue","isSelected","title","shouldUseAutoFocus","isPhone","patternAttribute","pattern","htmlFor","getRequriedAttribute","getAddessItems","selectedAddress","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","postalOptions","onInputChange","onDropdownChange","shouldAutoFocus","index","elementId","addr","classname","AddressInputComponent","AdressCheckboxComponent","AdressDropdownComponent","AddressItem","AddressLabelComponent","alert","AddressAlertComponent","isShowLabel","labelText","mainClass","AddressShow","AddressDetail","items","addressTypeValue","toString","description","AddressDetailItemComponent","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","heading","isUpdating","addressActionResponse","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","List","isShowList","Heading","isSelectedAddress","isShowError","Item","showItems","AddressErrorTitleComponent","AddressErrorMessageComponent","isShowPrimaryButton","primaryButton","AddressButtonComponent","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","editButton","addressEditButtonText","addressEditButtonAriaLabel","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","filter","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AccountManagementAddress","super","_dataInitialize","data","reaction","_data$countryRegions$","_data$addressPurposes","_data$address$result","_renderAddOrUpdateAddress","editAddressHeading","addAddressHeading","hasError","onCancel","onSave","hasExternalSubmitGroup","AddressForm","isShowSaveButton","saveButton","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","AddressError","AddressAddUpdate","Shipping","addUpdateAddress","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","_onAddressAddUpdateSubmit","_resetView","findAddress","e","currentTarget","_this$postCodeInputRe","postcode","postCodeInputRef","current","res","JSON","stringify","responseResult","parse","error_msg","setState","addressOptions","postCodeEmptyErrorMessage","validPostCodeErrorText","mapPostCodeOptions","findPostalAddress","sort","_renderEmptyPostCodeErrorMessage","handleAddressOption","option","addressOption","x","onAddressAddUpdate","town","postCode","line_1","line_2","code","_renderAddressOptions","a","b","localeCompare","dps","_renderInputWithButton","_this$state$addressOp","ref","placeholder","enterPostCodePlaceholderText","delivery_points","obj","_renderListAddress","config","headingTag","tag","_heading$headingTag","onAddAddress","handleLineItemHeadingChange","ListAddress","Msdyn365","editProps","onEdit","contextRequest","isShowEmptyListMessage","emptyListMessage","addressEmptyListAddressMessage","addButton","addressAddButtonText","addressAddButtonAriaLabel","primaryAddressList","otherAddressList","AddressList","event","target","_goToEditAddress","_onRemoveAddress","_goToAddAddress","_onSubmitUpdatePrimaryAddress","_attachMapAutoSuggest","_this$autoSuggest","isMapApiLoaded","autoSuggest","_onSuggestionSelected","_clearAddressFields","_this$autoSuggest2","_clearValidation","_onCountryChange","_onAddressUpdate","onSuccess","then","addressCommon","currentOperation","Update","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","TwoLetterISORegionName","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","_getStateProvinces","Add","_updateCurrentOperation","operation","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","_setDefaultCountryRegionId","getTelemetryObject","telemetryPageName","friendlyName","channel","autoSuggestionEnabled","BingMapsEnabled","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","_this$autoSuggest4","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest5","shouldComponentUpdate","nextProps","nextState","render","renderView","renderInputWithButton","viewState","isShowAddresList","isShowAddOrUpdateAddress","AccountAddressManagement","moduleProps","classnames","showAddressList","showAddOrUpdateAddress","screenReaderNotification","__decorate","observable","observer","_ref","Node","_ref2","AddressLists","_ref3","_ref4","signinURL","signInUrl","window","location","Module","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","preferredStore","_unused","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","arguments","StoreId","StoreName","Latitude","Longitude","_writeToCookie","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","computed","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","searchContent","jsonp","crypto","getRandomValues","Uint32Array","trim","query","encodeURI","geolocationApiUrl","app","requestUrl","script","createElement","remove","resourceSets","point","coordinates","body","appendChild","_document","StringExtensions","isNullOrEmpty","getElementById","currentWindowAPI","mapAPIReady","url","reject","_document2","_document3","defer","src","addEventListener","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","getGenericAction","module","exports","ReactDOM"],"sourceRoot":""}