{"version":3,"file":"static/js/04e1886d06dee09dad20.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-checkout-billing-address/address-format.data.ts?2fbc","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-button.tsx?9955","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-checkbox.tsx?c734","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-dropdown.tsx?a6d2","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-error-message.tsx?3aa9","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-error-title.tsx?584b","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-input.tsx?8ce6","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-label.tsx?467c","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/components/address-add.tsx?c299","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/dobbies-checkout-billing-address.tsx?8a2c","webpack://Dobbies.Commerce/./src/modules/dobbies-checkout-billing-address/dobbies-checkout-billing-address.view.tsx?421b","webpack://Dobbies.Commerce/./src/themes/dobbiesclub/actions/input-field-validation-action.ts?e61a","webpack://Dobbies.Commerce/./lib/dobbies-checkout-billing-address/module-registration.js?45a0","webpack://Dobbies.Commerce/./src/modules/account-management-address/account-management-address.tsx?27e7","webpack://Dobbies.Commerce/./src/modules/account-management-address/account-management-address.view.tsx?8c9f","webpack://Dobbies.Commerce/./src/modules/business-account-address/business-account-address.tsx?299e","webpack://Dobbies.Commerce/./src/modules/business-account-address/business-account-address.view.tsx?5078","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. 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\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 recordId?: string;\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, recordId } = 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 let placeholder = name;\r\n if (name === 'Name') {\r\n placeholder = `${name} *`;\r\n }\r\n if (name === 'Name') {\r\n placeholder = `${name} *`;\r\n }\r\n if (name === 'Street') {\r\n placeholder = `${name} *`;\r\n }\r\n if (name === 'City') {\r\n placeholder = `${name} *`;\r\n }\r\n if (name === 'ZipCode') {\r\n placeholder = `Postcode *`;\r\n }\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\n// import AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressCheckboxComponent from './address-checkbox';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n defaultAddressType: number;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n telemetryContent?: ITelemetryContent;\r\n 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 postCodeInput?: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n defaultAddressType,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange,\r\n 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 const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n if (addressFormatItem.name.toLowerCase() === 'phone' || addressFormatItem.name.toLowerCase() === 'name') {\r\n input = <>;\r\n } else 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\n/// \r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IContext } from '@msdyn365-commerce/retail-proxy';\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\n// import { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './components/address-add';\r\n// import { AddressBillingCheckbox } from '@msdyn365-commerce-modules/address';\r\nimport { AddressBillingHeading } from '@msdyn365-commerce-modules/address';\r\nimport { AddressShow, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { IDobbiesCheckoutBillingAddressData } from './dobbies-checkout-billing-address.data';\r\nimport { IDobbiesCheckoutBillingAddressProps } from './dobbies-checkout-billing-address.props.autogenerated';\r\nimport { ErrorComponent } from '@msdyn365-commerce-modules/address';\r\nimport { focusOnCheckoutError } from '@msdyn365-commerce-modules/address';\r\nimport { IDeliveryOption, IPostCodeDropDownOption, IPostCodeVerification } from '../dobbies-checkout-shipping-address';\r\nimport { vSIInitiateRestCallAsync } from '../../dotdigital-extension/DataActionExtension.g';\r\nimport { InputFieldValidation } from '../../themes/dobbiesclub/actions/input-field-validation-action';\r\n/**\r\n * Props interface.\r\n */\r\nexport interface IProps extends IDobbiesCheckoutBillingAddressProps, IModuleStateProps {}\r\n\r\n/**\r\n * Checkout billing address view state interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n isShowSameAsShippingCheckbox: boolean;\r\n errorMessage?: string;\r\n addressOptions: IPostCodeDropDownOption[];\r\n postCodeEmptyErrorMessage: string;\r\n showHeading: boolean;\r\n}\r\n\r\n/**\r\n * Checkout billing address view props interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewProps extends IProps {\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 validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutBillingAddressViewState;\r\n CheckoutBillingAddress: IModuleProps;\r\n sameAsShippingCheckbox: React.ReactNode;\r\n heading: React.ReactNode;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\r\n renderPostCodeSearchInput?: React.ReactNode;\r\n showHeading?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutBillingAddress component.\r\n * @extends {React.PureComponent>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutBillingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private isBillingAddressSameAsShipping: boolean;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private readonly addressActionResponse?: IAddressResponse;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n // private addRenderRef: React.RefObject;\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n\r\n private postCodeInputRef: React.RefObject;\r\n\r\n public constructor(props: IProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.isBillingAddressSameAsShipping = false;\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.postCodeInputRef = React.createRef();\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\r\n this.state = {\r\n isShowAddress: false,\r\n isShowAddOrUpdateAddress: false,\r\n isShowSameAsShippingCheckbox: false,\r\n errorMessage: '',\r\n addressOptions: [],\r\n postCodeEmptyErrorMessage: '',\r\n showHeading: true\r\n };\r\n\r\n // This.addRenderRef = React.createRef();\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.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\r\n shippingAddress => {\r\n if (this.props.moduleState.isUpdating) {\r\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this.isBillingAddressSameAsShipping = true;\r\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\r\n const yesCheckbox = document.getElementById('usesameaddressyes') as HTMLInputElement;\r\n if (yesCheckbox) {\r\n yesCheckbox.checked = true;\r\n }\r\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\r\n }\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.isBillingAddressRequried,\r\n isBillingAddressRequried => {\r\n if (isBillingAddressRequried) {\r\n if (this.props.moduleState.isDisabled) {\r\n this.onEdit();\r\n }\r\n } else {\r\n this.props.data.checkout.result?.removeBillingAddress({});\r\n this.props.moduleState.onDisable();\r\n }\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n\r\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\r\n checkoutError.errorMessage\r\n ) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\r\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\r\n );\r\n }\r\n // this.addFocusOutListeners();\r\n setTimeout(() => {\r\n const yesCheckbox = document.getElementById('usesameaddressyes') as HTMLInputElement;\r\n if (yesCheckbox) {\r\n this.addFocusOutListeners();\r\n yesCheckbox.checked = true;\r\n this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: true });\r\n }\r\n }, 1000);\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(\r\n nextProps: IDobbiesCheckoutBillingAddressProps,\r\n nextState: ICheckoutBillingAddressViewState\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 | null {\r\n if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\r\n return null;\r\n }\r\n\r\n const {\r\n resources,\r\n moduleState: { hasError }\r\n } = this.props;\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const errorMessage = this.state.errorMessage;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\r\n isShowSameAsShippingCheckbox: this.props.config.isNewSignupJourney\r\n ? true\r\n : this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\r\n },\r\n CheckoutBillingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-billing-address', config.className)\r\n },\r\n heading: ,\r\n alert: hasError && errorMessage && ,\r\n checkoutErrorRef: this.checkoutErrorRef,\r\n showHeading: this.state.showHeading,\r\n sameAsShippingCheckbox: this.sameAsShippingCheckBoxes(),\r\n // (\r\n // \r\n // ),\r\n showAddress: this._renderShowAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n renderPostCodeSearchInput: this._renderPostCodeInputField()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\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\r\n private findAddress = async (e: React.ChangeEvent) => {\r\n const { value } = e.currentTarget;\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\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 this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: true });\r\n this._onSubmitAddress();\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\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\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\r\n private _renderPostCodeInputField = () => {\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\r\n private addFocusOutListeners = () => {\r\n const allAddressInputs = document.getElementsByClassName('msc-address-form__input-text');\r\n if (allAddressInputs && allAddressInputs.length) {\r\n for (let i = 0; i < allAddressInputs.length; i++) {\r\n if (allAddressInputs[i] instanceof HTMLInputElement) {\r\n const inputElem = allAddressInputs[i] as HTMLInputElement;\r\n inputElem.addEventListener('focusout', (event: FocusEvent) => {\r\n this.saveAddressOnAllInformationFilled();\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n private saveAddressOnAllInformationFilled = () => {\r\n const allAddressInputs = document.getElementsByClassName('msc-address-form__input-text');\r\n const addressValues: string[] = [];\r\n if (allAddressInputs && allAddressInputs.length) {\r\n for (let i = 0; i < allAddressInputs.length; i++) {\r\n if (allAddressInputs[i] instanceof HTMLInputElement) {\r\n const inputElem = allAddressInputs[i] as HTMLInputElement;\r\n if (!inputElem.value) {\r\n this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: false });\r\n return;\r\n }\r\n addressValues.push(inputElem.value);\r\n }\r\n }\r\n }\r\n if (addressValues.length === allAddressInputs.length) {\r\n this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: true });\r\n this._onSubmitAddress();\r\n }\r\n };\r\n\r\n /**\r\n * On suggestion selected.\r\n * @param result - The suggestion result.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n 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\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, 0);\r\n };\r\n\r\n /**\r\n * Clear address fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Clear validation.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n /**\r\n * On address update.\r\n * @param name - Name.\r\n * @param value - Value.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: IProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Render add or update address function.\r\n * @returns - Address add update props.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n resources: this.resources,\r\n addressType: AddressType.Billing,\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 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 hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this._onSubmitAddress,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * On country region change function.\r\n * @param countryRegionId - Country region Id.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Gets address format for exclude list.\r\n * @returns - Address item type.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Attach map auto suggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * On address add update input change.\r\n * @param event - The event.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\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 * On address add update dropdown change.\r\n * @param event - The event.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Gets state provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Initialize module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\r\n\r\n if (this.isBillingAddressRequried) {\r\n if (billingAddress) {\r\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\r\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\r\n this._updateModuleState();\r\n } else if (this.isCartContainsItemsForShipping) {\r\n this.isBillingAddressSameAsShipping = true;\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n } else {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Sets default country region Id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * On change - Billing address same as shipping.\r\n * @param event - The event.\r\n */\r\n // private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\r\n // this.isBillingAddressSameAsShipping = event.currentTarget.checked;\r\n\r\n // if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\r\n // this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n // } else {\r\n // this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\r\n // }\r\n // };\r\n\r\n @computed private get isCartContainsItemsForShipping(): boolean {\r\n const { request } = this.props.context;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\r\n\r\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\r\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\r\n ? false\r\n : retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n }\r\n\r\n @computed private get billingAddress(): Address | undefined {\r\n return this.props.data.checkout.result?.billingAddress;\r\n }\r\n\r\n @computed private get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result?.shippingAddress;\r\n }\r\n\r\n @computed private get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\r\n }\r\n\r\n @computed private get getGiftCardTotalAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.giftCardExtends) {\r\n return 0;\r\n }\r\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\r\n return count + (giftCard.Balance || 0);\r\n }, 0);\r\n }\r\n\r\n @computed private get getCustomerAccountAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n const defaultAmount = 0;\r\n\r\n return checkoutState?.customerAccountAmount ?? defaultAmount;\r\n }\r\n\r\n @computed private get shouldPaidByCard(): boolean {\r\n const {\r\n data: { checkout },\r\n config\r\n } = this.props;\r\n if (!checkout.result) {\r\n return false;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n const cart = checkoutResult.checkoutCart.cart;\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\r\n return false;\r\n }\r\n\r\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\r\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\r\n\r\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\r\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\r\n\r\n return amountDue > 0 && !isPaidByOtherPaymentSource;\r\n }\r\n\r\n @computed private get isBillingAddressRequried(): boolean {\r\n return (\r\n this.shouldPaidByCard &&\r\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\r\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\r\n );\r\n }\r\n\r\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\r\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\r\n }\r\n\r\n /**\r\n * On submit address.\r\n */\r\n private readonly _onSubmitAddress = (): void => {\r\n set(this.addUpdateAddress, { Phone: this.shippingAddress?.Phone });\r\n let name = '';\r\n if (this.props.data.customerInformation.result?.FirstName) {\r\n name = this.props.data.customerInformation.result?.FirstName;\r\n }\r\n if (this.props.data.customerInformation.result?.LastName) {\r\n name = `${name} ${this.props.data.customerInformation.result?.LastName}`;\r\n }\r\n if (name) {\r\n set(this.addUpdateAddress, { Name: this.shippingAddress?.Phone });\r\n }\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n this.props.moduleState.setHasError(true);\r\n\r\n if (\r\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\r\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\r\n ) {\r\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\r\n }\r\n\r\n return;\r\n }\r\n\r\n this._setBillingAddress(this.addUpdateAddress);\r\n // this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\r\n // this._updateModuleState();\r\n };\r\n\r\n /**\r\n * On submit.\r\n */\r\n private readonly onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\r\n this._onSubmitAddress();\r\n break;\r\n case AddressOperation.Show:\r\n this.props.telemetry.information('Billing address submit for Show operation.');\r\n if (this.selectedAddress) {\r\n this._setBillingAddress(this.selectedAddress);\r\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\r\n this._updateModuleState();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * On cancel.\r\n */\r\n private readonly onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\r\n this._resetView();\r\n this._clearAddressFields();\r\n break;\r\n case AddressOperation.Show:\r\n this.props.telemetry.information('Billing address cancel for Show operation.');\r\n this._resetView();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * On edit.\r\n */\r\n private readonly onEdit = (): void => {\r\n this.props.telemetry.information('Billing address onEdit is called.');\r\n\r\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\r\n }\r\n this.props.moduleState.onUpdating();\r\n };\r\n\r\n /**\r\n * Sets billing address.\r\n * @param address - The address.\r\n */\r\n private readonly _setBillingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newBillingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\r\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n this.props.data.checkout.result\r\n .updateBillingAddress({\r\n newBillingAddress,\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\r\n }\r\n })\r\n .then(resp => {\r\n console.log('Billing address updated', resp);\r\n })\r\n .catch(e => {\r\n console.log('Billing address update error', e);\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Reset view.\r\n */\r\n private readonly _resetView = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - Address operation\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (operation === AddressOperation.Show && this.isBillingAddressSameAsShipping && this.shippingAddress) {\r\n this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: true });\r\n this.props.data.checkout.result\r\n ?.updateBillingAddress({\r\n newBillingAddress: this.shippingAddress,\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\r\n }\r\n })\r\n .then(resp => {\r\n console.log('Billing address updated', resp);\r\n })\r\n .catch(e => {\r\n console.log('Billing address update error', e);\r\n });\r\n }\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\r\n setTimeout(() => {\r\n this.addFocusOutListeners();\r\n }, 1000);\r\n }\r\n };\r\n\r\n /**\r\n * Updates the module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n @action\r\n private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n errorMessage\r\n });\r\n };\r\n\r\n private checkOnlyOne = (checkbox: HTMLInputElement): void => {\r\n const checkboxes = document.getElementsByName(checkbox.name) as NodeListOf;\r\n checkboxes.forEach(item => {\r\n if (item !== checkbox) {\r\n item.checked = false;\r\n }\r\n });\r\n };\r\n\r\n private sameAsShippingCheckBoxes = () => {\r\n return (\r\n
\r\n

Use the same address for my billing address:

\r\n
\r\n {' '}\r\n Yes\r\n {' '}\r\n No\r\n
\r\n
\r\n );\r\n };\r\n\r\n private readonly _onYesBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\r\n this.isBillingAddressSameAsShipping = true;\r\n\r\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\r\n }\r\n this.checkOnlyOne(event.target);\r\n this.setState({ showHeading: false });\r\n this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: true });\r\n };\r\n\r\n private readonly _onNoBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\r\n this.isBillingAddressSameAsShipping = false;\r\n\r\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n } else {\r\n // this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\r\n this._updateCurrentOperation(AddressOperation.Add, {});\r\n }\r\n this.checkOnlyOne(event.target);\r\n this.setState({ showHeading: true });\r\n this.props.context.actionContext.update(new InputFieldValidation(), { areAllFieldsValid: false });\r\n };\r\n}\r\n\r\nexport default CheckoutBillingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from './components/address-add';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutBillingAddressViewProps } from './dobbies-checkout-billing-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n const shouldShowAddressItem = (name: string) => {\r\n const allowedFields = ['Name', 'Street', 'City', 'ZipCode'];\r\n if (allowedFields.includes(name)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n if (!shouldShowAddressItem(item.key)) {\r\n return <>;\r\n }\r\n const fieldName = item.key === 'ZipCode' ? 'Postcode' : item.key;\r\n return (\r\n <>\r\n
\r\n {fieldName}: {item.description}\r\n
\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address Heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - IAddressError.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - AddressForm Node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n postCodeInput\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {postCodeInput}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Billing Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutBillingAddress Module.\r\n */\r\nconst CheckoutBillingAddressView: React.FC = props => {\r\n const {\r\n CheckoutBillingAddress,\r\n checkoutErrorRef,\r\n alert,\r\n viewState,\r\n heading,\r\n sameAsShippingCheckbox,\r\n showAddress,\r\n showAddOrUpdateAddress\r\n } = props;\r\n\r\n return (\r\n \r\n {alert}\r\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\r\n {!viewState.isShowAddress ? heading : <>}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddOrUpdateAddress && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * CategoryPathStateShareInput Input Action\r\n */\r\n\r\nexport class InputFieldValidation implements IActionInput {\r\n // TODO: Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `inputFieldValidation`;\r\n public getCacheObjectType = () => 'inputFieldValidation';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface InputFieldValidationState {\r\n areAllFieldsValid: boolean | undefined;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new InputFieldValidation();\r\n};\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nexport async function sampleStateAction(input: InputFieldValidation, ctx: IActionContext): Promise {\r\n return { areAllFieldsValid: undefined };\r\n}\r\n\r\n/**\r\n * SampleState - create action\r\n */\r\nexport default createObservableDataAction({\r\n action: >sampleStateAction,\r\n input: createInput\r\n});\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-checkout-billing-address'] = {\n c: () => require('partner/modules/dobbies-checkout-billing-address/dobbies-checkout-billing-address.tsx'),\n $type: 'contentModule',\n da: [{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-checkout-billing-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-checkout-billing-address'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|dobbies-checkout-billing-address|dobbies-checkout-billing-address'] = {\n c: () => require('partner/modules/dobbies-checkout-billing-address/dobbies-checkout-billing-address.view.tsx'),\n cn: '__local__-__local__-dobbies-checkout-billing-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\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\nimport { IAccountManagementAddressData } from './account-management-address.data';\nimport { IAccountManagementAddressProps } from './account-management-address.props.autogenerated';\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewProps extends React.Component> {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: IAccountManagementAddressViewState;\n AccountAddressManagement: IModuleProps;\n isUpdating: boolean;\n showAddressList: IAddressListProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n screenReaderNotification: React.ReactNode;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountManagementAddress extends React.Component> {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address;\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private removeAddressData?: Address;\n\n private readonly addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[] = [];\n private addressPurposes: AddressPurpose[] = [];\n private readonly resources: IAddressResource;\n private readonly defaultAddressType: number = 6; // Default to Home\n private readonly telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n public constructor(props: IAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n if (this.props.data.countryRegions.result !== undefined) {\n this._setDefaultCountryRegionId();\n }\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => {\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n },\n async () => {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n await this._attachMapAutoSuggest();\n }\n }\n );\n }\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n /**\n * Should component update function.\n * @param nextProps - Account management address props.\n * @param nextState - Next state.\n * @returns - True if component should update, false otherwise.\n */\n public shouldComponentUpdate(\n nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\n\n // Set the feature state value for 'Async Customer Address Creation'.\n this.asyncCustomerAddressCreationFeatureIsEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n !this.isEditAsyncCustomerFeatureEnabled &&\n (customerInformation?.IsAsyncCustomer || false) && (\n \n ),\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddresList: this.currentOperation === AddressOperation.List,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\n },\n AccountAddressManagement: {\n moduleProps: this.props,\n className: classnames('ms-account-management-address', config.className)\n },\n showAddressList: this._renderListAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On Suggestion Selected Function.\n * @param result - Microsoft.Maps.ISuggestionResult.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IAccountManagementAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n };\n\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n /**\n * Render List Address Function.\n * @returns - AddressList.\n */\n private readonly _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n /**\n * Render Address title.\n * @param event - Msdyn365.ContentEditableEvent.\n */\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n config.heading!.text = event.target.value;\n };\n const heading = config.heading && {\n text: config.heading.text,\n headingTag: config.heading.tag\n };\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n addressPurposes: this.addressPurposes,\n resources: this.resources,\n heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n handleLineItemHeadingChange,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress,\n isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\n });\n };\n\n /**\n * Attach Map Auto Suggest Function.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On Address Add Update Function.\n * @param name - String.\n * @param value - String | Boolean | Number.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * On Address Add Update Input Change.\n * @param event - Input Change Event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * On Address Add Update Dropdown Change.\n * @param event - Dropdown Change Event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n this.onAddressAddUpdate(event.target.name, +event.target.value);\n } else {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n }\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * On Address Update Function.\n * @param response - Promise.\n * @param onSuccess - IAddressResponse.\n */\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n this.isUpdating = true;\n response.then(\n (result: IAddressResponse) => {\n if (result.address) {\n this.hasError = false;\n onSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n }\n this.isUpdating = false;\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n }\n );\n };\n\n /**\n * On Address Add Update Submit Function.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * On Country Change Function.\n * @param countryRegionId - String.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\n this._clearAddressFields();\n };\n\n /**\n * Get Address Format Exclude List Function.\n * @returns - Address Format Exclude List.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Get State Provinces Function.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Update CurrentOperation Function.\n * @param operation - AddressOperation.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n this._clearAddressFields();\n };\n\n /**\n * On Submit Update Primary Address Function.\n * @param address - Address.\n */\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n /**\n * Go To Edit Address Function.\n * @param address - Address.\n */\n private readonly _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n /**\n * On Remove Address Function.\n * @param address - Address.\n */\n private readonly _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n this.removeAddressData = address;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * Renders Notification screen reader text for removed address.\n * @param address - Address input.\n * @returns Notification for removed address.\n */\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\n return (\n
\n {notification}\n
\n );\n };\n\n /**\n * Go To Add Address Function.\n */\n private readonly _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n this._setDefaultCountryRegionId();\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * On Add Or Update Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n /**\n * On Update Primary Address Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n /**\n * Reset view function.\n */\n private readonly _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n };\n}\n\nexport default AccountManagementAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport * as React from 'react';\n\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressData } from './business-account-address.data';\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\n\n/**\n * Interface for IBusinessAccountAddressExtendedProps.\n */\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\n/**\n * Interface for IBusinessAccountAddressState.\n */\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\n\n/**\n * Interface for IBusinessAccountAddressViewProps.\n */\nexport interface IBusinessAccountAddressViewProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n BusinessAccountAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component, IBusinessAccountAddressState>}\n */\nclass BusinessAccountAddress extends React.Component {\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private readonly validationError: object;\n\n private readonly addressActionResponse?: IAddressResponse;\n\n private readonly isUpdating?: boolean;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 0; // Default to None (This value set in HQ as Business)\n\n private readonly shouldAutoFocus?: boolean = false;\n\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBusinessAccountAddressExtendedProps) {\n super(props);\n\n const { context, data, resources, telemetry } = this.props;\n this.addUpdateAddress = {};\n this.resources = resources;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n // Initializing data props\n this._dataInitialize(this.props);\n\n this._setDefaultCountryRegionId();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { renderView, config, hasError, resetAddress } = this.props;\n\n // Business-sign-up will pass this flag when cancel button is clicked\n if (resetAddress) {\n this._resetAddressFields();\n }\n\n const viewProps = {\n ...this.props,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n hasError,\n className: config.className,\n BusinessAccountAddress: {\n moduleProps: this.props,\n className: classnames('ms-business-account-address', config.className)\n },\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Reset Address.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _resetAddressFields = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n\n addressFormat.map(addressFormatItem => {\n switch (addressFormatItem.displayType) {\n case AddressItemDisplayType.Input:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n case AddressItemDisplayType.Checkbox:\n this.addUpdateAddress[addressFormatItem.name] = false;\n break;\n default:\n switch (addressFormatItem.type) {\n case AddressItemType.ThreeLetterISORegionName:\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\n break;\n case AddressItemType.AddressTypeValue:\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\n break;\n case AddressItemType.State:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n default:\n this.addUpdateAddress[addressFormatItem.name] = undefined;\n }\n }\n });\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n // Set validationError and hasError to hide error messages since in the B2B\n // request form, no errors would visually show since user wont be able to submit\n // until form is filled and correct\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Company,\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n shouldAutoFocus: this.shouldAutoFocus,\n validationError: this.validationError,\n hasError: this.props.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange\n });\n };\n\n /**\n * On Address Add Update Input Change Function.\n * @param event - Input event change function.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n /**\n * On Address Add Update Dropdown Change Function.\n * @param event - Change dropdown event.\n */\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n await this._updateCountryRegionId(event.target.value);\n } else {\n this._updateAddress(event.target.name, event.target.value);\n }\n };\n\n /**\n * Update Address Function.\n * @param name - String.\n * @param value - String.\n */\n private readonly _updateAddress = (name: string, value: string | number) => {\n const { updateForm, isRequired, resources } = this.props;\n let cleanValue = value;\n if (typeof value === 'string') {\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\n }\n set(this.addUpdateAddress, { [name]: cleanValue });\n\n if (this._isEmpty()) {\n if (isRequired) {\n updateForm(true, undefined);\n } else {\n // Reset addressFormat as if address was NOT a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, []),\n this.addressPurposes\n );\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat if address was a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, this.props.isRequired ? undefined : []),\n this.addressPurposes\n );\n\n // Verify with new rules\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n updateForm(false, this.addUpdateAddress);\n } else {\n updateForm(true, undefined);\n }\n }\n };\n\n /**\n * Is empty Function.\n * @returns - Boolean.\n */\n // Walk through array and check if valued is defined or value is not an empty string\n private readonly _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (const addressFormatItem of addressFormat) {\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\n\n // Check each input field, if value is defined and not an empty string --> address is not empty\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n /**\n * Is Input Required Function.\n * @param addressFormatItem - IAddressItem.\n * @returns - Boolean.\n */\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\n !addressFormatItem.validationRules ||\n addressFormatItem.validationRules.length === 0\n ) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {hasError && alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Business Account Address View Component.\n * @param props - Props.\n * @returns - BusinessAccountAddress Module.\n */\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n \n \n );\n};\n\nexport default BusinessAccountAddressView;\n","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","AddressItemDisplayType","AddressValidationRuleType","AddressItemType","props","text","ariaLabel","disabled","isDisabled","telemetryContent","onClick","role","payLoad","getPayloadObject","attributes","getTelemetryAttributes","React","Object","assign","itemId","name","type","isChecked","additionalAddributes","autoFocus","shouldBeAutoFocused","onChange","checked","value","displayData","recordId","map","item","getDropdownItem","selectedValue","isSelected","toLowerCase","message","title","maxLength","shouldUseAutoFocus","placeholder","htmlFor","getRequriedAttribute","validationRules","find","validationRule","Required","getAddessItems","selectedAddress","addressFormat","addressType","dropdownDisplayData","defaultCountryRegionId","defaultAddressType","validationError","onInputChange","onDropdownChange","shouldAutoFocus","addressFormatItem","index","elementId","errorMessage","get","classname","isNewLine","input","displayType","Input","AddressInputComponent","Checkbox","AdressCheckboxComponent","ThreeLetterISORegionName","AddressTypeValue","AdressDropdownComponent","AddressItem","label","AddressLabelComponent","alert","CheckoutBillingAddress","super","countryRegionId","countryRegions","addressPurposes","checkoutErrorRef","mapPostCodeOptions","data","addressOptions","delivery_points","option","obj","line_1","line_2","town","dps","postCode","code","postcode","push","findAddress","async","e","currentTarget","_this$postCodeInputRe","actionContext","postCodeInputRef","current","response","res","JSON","stringify","responseResult","parse","error_msg","setState","postCodeEmptyErrorMessage","resources","validPostCodeErrorText","handleAddressOption","state","addressOption","x","onAddressAddUpdate","update","InputFieldValidation","areAllFieldsValid","_onSubmitAddress","_renderAddressOptions","sort","a","b","localeCompare","_renderEmptyPostCodeErrorMessage","_renderPostCodeInputField","_this$state$addressOp","ref","enterPostCodePlaceholderText","addFocusOutListeners","allAddressInputs","document","getElementsByClassName","HTMLInputElement","addEventListener","event","saveAddressOnAllInformationFilled","addressValues","inputElem","_onSuggestionSelected","_clearAddressFields","address","getTranformedAddress","stateProvinceInfo","set","addUpdateAddress","Street","ZipCode","CountyName","City","State","DistrictName","FullAddress","setTimeout","getAddressFormat","forEach","format","_this$autoSuggest","autoSuggest","excludedAddressFields","includes","_clearValidation","validateAddressFormat","_dataInitialize","reaction","_data$countryRegions$","_data$addressPurposes","countryStates","_data$countryStates$r","_renderAddOrUpdateAddress","_this$addUpdateAddres","editAddressHeading","addAddressHeading","hasError","onCancel","onSave","hasExternalSubmitGroup","isUpdating","addressActionResponse","heading","RecordId","AddressForm","Heading","items","isShowSaveButton","saveButton","AddressButtonComponent","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","error","AddressError","errorTitle","AddressErrorTitleComponent","AddressErrorMessageComponent","AddressAddUpdate","AddressType","Billing","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","_onAddressAddUpdateDropdownChange","moduleState","_resetView","_onCountryChange","_this$autoSuggest2","twoLetterIsoRegionName","getTwoLetterISORegionName","TwoLetterISORegionName","changeAutoSuggestionCountryCode","_getAddressFormatExcludeList","config","addressFormatExcludeList","showAddressType","IsPrimary","_attachMapAutoSuggest","storeSelectorStateManager","_this$autoSuggest3","isMapApiLoaded","attachAutoSuggest","target","replace","RegExp","_getStateProvinces","currentOperation","AddressOperation","Add","Update","addressCommon","getStateProvinces","then","some","StateId","_initModuleState","_this$props$data$chec","init","status","isBillingAddressRequried","onEdit","onSubmit","billingAddress","isBillingAddressSameAsShippingAddress","checkout","isBillingAddressSameAsShipping","_updateCurrentOperation","Show","_updateModuleState","isCartContainsItemsForShipping","shippingAddress","_this$shippingAddress","_this$props$data$cust","_this$props$data$cust3","Phone","_this$props$data$cust2","_this$props$data$cust4","_this$shippingAddress2","_this$props$data$chec2","_this$props$data$chec3","customerInformation","FirstName","LastName","Name","setHasError","shouldEnableSinglePaymentAuthorizationCheckout","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","_setBillingAddress","telemetry","information","onUpdating","newBillingAddress","_objectSpread","updateBillingAddress","additionalProperties","resp","console","log","catch","operation","_this$props$data$chec4","onReady","_setErrorMessage","checkOnlyOne","checkbox","getElementsByName","sameAsShippingCheckBoxes","_onYesBillingAddressSameAsShippingChange","_onNoBillingAddressSameAsShippingChange","showHeading","List","AddressCommon","AddressFormat","AddressMetaData","getTelemetryObject","telemetryPageName","friendlyName","isShowAddress","isShowAddOrUpdateAddress","isShowSameAsShippingCheckbox","_this$props$data$chec6","requestContext","channel","autoSuggestionEnabled","autoSuggestOptions","_setDefaultCountryRegionId","yesCheckbox","getElementById","_this$props$data$chec5","removeBillingAddress","onDisable","BingMapsApiKey","BingMapsEnabled","options","AutoSuggest","ChannelCountryRegionISOCode","DefaultLanguageId","_loadMapAPI","_this$props$data$stor","loadMapApi","_this$autoSuggest4","_this$props$data$stor2","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec7","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec8","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","_this$props$data$stor3","_this$autoSuggest5","disposeAutoSuggest","shouldComponentUpdate","nextProps","nextState","render","_shouldHideBillingAddressForOBO","renderView","viewState","isNewSignupJourney","moduleProps","classnames","AddressBillingHeading","addressBillingAddressHeading","ErrorComponent","errorMessageTitle","sameAsShippingCheckbox","showAddress","_renderShowAddress","showAddOrUpdateAddress","renderPostCodeSearchInput","_this$selectedAddress","AddressShow","_request$channel","market","getDefaultCountryRegionId","_featureState$result","_request$channel2","_request$channel3","_this$props$data$chec9","channelDeliveryOptionConfig","featureState","retailMultiplePickUpOptionEnabled","feature","IsEnabled","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","checkoutCart","hasInvoiceLine","cart","CartLines","cartLine","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","_this$props$data$chec10","_this$props$data$chec11","checkoutState","loyaltyAmount","giftCardExtends","reduce","count","giftCard","Balance","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","getCustomerAccountAmount","_this$props$data$chec12","_this$props$data$chec13","shouldPaidByCard","isPaymentVerificationRedirection","isCheckoutCallFailed","Msdyn365","EnabledPaymentsForOBO","PaymentInstrument","__decorate","observable","action","computed","withModuleState","observer","_ref","AddressDetail","Node","fieldName","description","_ref2","postCodeInput","Module","getCacheKey","getCacheObjectType","dataCacheType","sampleStateAction","ctx","createObservableDataAction","inputData","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","path","runOn","iNM","ns","n","p","pdp","md","window","__bindings__","viewDictionary","cn","AccountManagementAddress","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","isEditAsyncCustomerFeatureEnabled","_data$address$result","customerAddresses","Shipping","_onAddressAddUpdateSubmit","_renderListAddress","_this$props$context$a","headingTag","tag","AddressList","addresses","primaryAddressSectionHeading","otherAddressSectionHeading","contextRequest","handleLineItemHeadingChange","onEditAddress","_goToEditAddress","onRemoveAddress","_onRemoveAddress","onAddAddress","_goToAddAddress","onUpdatePrimaryAddress","_onSubmitUpdatePrimaryAddress","isAsyncCustomerAddressCreationFeatureEnabled","isAsyncCustomer","IsAsyncCustomer","canRenderAsyncCustomerDataAsUnmodifiable","app","_onAddressUpdate","onSuccess","isAuthenticatedFlow","updateCustomerAddress","addCustomerAddress","Promise","resolve","_onAddOrUpdateSuccess","twoLetterISORegionName","updateCustomerPrimaryAddress","_onUpdatePrimaryAddressSuccess","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","_data$featureState","_data$featureState2","_this$props$context$a2","infoMessageBar","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","isShowAddresList","AccountAddressManagement","showAddressList","screenReaderNotification","isShowList","Item","showItems","isShowPrimaryButton","primaryButton","editButton","removeButton","isShowError","AddressLists","_ref3","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","_ref4","BusinessAccountAddress","excludedList","_resetAddressFields","Company","_updateAddress","_updateCountryRegionId","updateForm","isRequired","cleanValue","_isEmpty","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","componentDidMount","resetAddress","module","exports","ReactDOM"],"sourceRoot":""}