{"version":3,"sources":["webpack:///./src/themes/fth/views/smwe-account-management-address.view.tsx?6a06","webpack:///src/common/components/address-list.tsx?8cb2","webpack:///src/modules/account-management-address/account-management-address.tsx?2c3f","webpack:///src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?e155","webpack:///./src/common/components/address-list.tsx?754d","webpack:///./src/modules/smwe-account-management-address/smwe-account-management-address.tsx?35da","webpack:///./src/common/components/address-select.tsx?85a3","webpack:///./src/modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address.tsx?9114","webpack:///src/common/address-autosuggest.ts?520f","webpack:///src/common/components/address-button.tsx?e3b2","webpack:///./src/common/components/address-billing-checkbox.tsx?7444","webpack:///./src/common/components/address-billing-heading.tsx?49ee","webpack:///./src/modules/smwe-checkout-billing-address/smwe-checkout-billing-address.tsx?d744","webpack:///./src/modules/smwe-checkout-billing-address/smwe-checkout-billing-address.view.tsx?2734","webpack:///src/common/components/address-error-title.tsx?a723","webpack:///src/modules/business-account-address/business-account-address.tsx?d57d","webpack:///src/common/components/address-detail-item.tsx?c5b6","webpack:///src/common/components/address-show.tsx?376c","webpack:///src/common/address-meta-data.ts?d29d","webpack:///src/modules/account-management-address/account-management-address.view.tsx?739e","webpack:///src/common/address-format.data.ts?da4c","webpack:///./src/common/components/address-detail-item.tsx?b203","webpack:///./src/common/components/address-show.tsx?6d63","webpack:///src/common/components/address-select.tsx?e342","webpack:///src/modules/checkout-shipping-address/checkout-shipping-address.tsx?bd44","webpack:///src/modules/business-account-address/business-account-address.view.tsx?dcd1","webpack:///./src/modules/smwe-account-management-address/smwe-account-management-address.view.tsx?ff91","webpack:///src/common/components/address-billing-checkbox.tsx?1b2a","webpack:///src/common/components/address-billing-heading.tsx?4a5c","webpack:///src/modules/checkout-billing-address/checkout-billing-address.tsx?83e6","webpack:///src/common/address-format.ts?400b","webpack:///src/common/address-common.ts?0583","webpack:///./src/modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address.view.tsx?81a2","webpack:///./src/themes/fth/views/smwe-checkout-shipping-address.view.tsx?455c","webpack:///src/modules/checkout-billing-address/checkout-billing-address.view.tsx?d08e","webpack:///./src/themes/fth/views/smwe-checkout-billing-address.view.tsx?b88d","webpack:///src/common/components/address-alert.tsx?0da8","webpack:///src/common/components/address-checkbox.tsx?a46e","webpack:///src/common/components/address-dropdown.tsx?3e73","webpack:///src/common/components/address-label.tsx?9ddc","webpack:///src/common/components/address-add.tsx?0cbd","webpack:///src/common/components/address-error-message.tsx?c7bd","webpack:///src/common/components/address-input.tsx?ed8f","webpack:///src/common/address-module.data.ts?1a63"],"names":["AddressShow","AddressDetail","items","React","Node","Object","map","item","description","AddressList","List","isShowList","heading","Item","key","error","showItems","isShowPrimaryButton","primaryButton","editButton","Error","isShowError","title","message","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","addButton","primaryAddressList","otherAddressList","AddressAddUpdate","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","AddressItem","label","alert","input","AddressError","AccountManagementAddressView","props","AccountAddressManagement","viewState","showAddressList","showAddOrUpdateAddress","headingText","moduleProps","config","text","className","Module","isShowAddresList","isShowAddOrUpdateAddress","getButtonAriaLabel","ariaLabel","addressName","replace","getAddressList","addresses","showPrimaryButton","resources","isUpdating","addressActionResponse","selectedAddress","addressFormat","onEditAddress","onRemoveAddress","onUpdatePrimaryAddress","addressPurposes","telemetryContent","errorTitle","errorMessage","length","Heading","address","isSelectedAddress","RecordId","getAddressFormat","ThreeLetterISORegionName","AddressErrorTitleComponent","AddressErrorMessageComponent","AddressButtonComponent","classname","disabled","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","Name","onClick","addressEditButtonText","addressEditButtonAriaLabel","removeButton","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddressSectionHeading","primaryAddresses","filter","IsPrimary","getOtherAddressList","otherAddressSectionHeading","otherAddresses","AccountManagementAddress","constructor","super","countryRegionId","defaultAddressType","_renderAddOrUpdateAddress","this","addressType","AddressType","Shipping","addUpdateAddress","defaultCountryRegionId","validationError","dropdownDisplayData","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","stateProvinceInfo","onInputChange","_onAddressAddUpdateInputChange","onDropdownChange","_onAddressAddUpdateDropdownChange","onSave","_onAddressAddUpdateSubmit","onCancel","_resetView","_renderListAddress","onAddAddress","Msdyn365","tag","headingTag","editProps","onEdit","event","target","value","requestContext","contextRequest","addressEmptyListAddressMessage","addressAddButtonText","addressAddButtonAriaLabel","customerAddresses","context","request","_goToEditAddress","_onRemoveAddress","_goToAddAddress","_onSubmitUpdatePrimaryAddress","_attachMapAutoSuggest","async","data","storeSelectorStateManager","result","isMapApiLoaded","autoSuggest","attachAutoSuggest","_onSuggestionSelected","_clearAddressFields","getTranformedAddress","set","ZipCode","CountyName","City","State","DistrictName","FullAddress","setTimeout","Street","forEach","format","undefined","name","excludedAddressFields","includes","_clearValidation","onAddressAddUpdate","validateAddressFormat","type","checked","RegExp","AddressItemType","AddressTypeValue","_onCountryChange","_onAddressUpdate","response","onSuccess","then","addressCommon","isAuthenticatedFlow","currentOperation","AddressOperation","Update","updateCustomerAddress","addCustomerAddress","Promise","resolve","_onAddOrUpdateSuccess","twoLetterISORegionName","getTwoLetterISORegionName","changeAutoSuggestionCountryCode","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","push","_getStateProvinces","Add","getStateProvinces","some","state","StateId","_updateCurrentOperation","operation","updateCustomerPrimaryAddress","_onUpdatePrimaryAddressSuccess","Deactivate","_setDefaultCountryRegionId","telemetry","countryRegions","AddressCommon","AddressFormat","AddressMetaData","getTelemetryObject","telemetryPageName","friendlyName","actionContext","channel","autoSuggestionEnabled","autoSuggestOptions","reaction","BingMapsApiKey","BingMapsEnabled","options","AutoSuggest","ChannelCountryRegionISOCode","DefaultLanguageId","loadMapApi","_loadMapAPI","disposeAutoSuggest","render","renderView","classnames","market","getDefaultCountryRegionId","__decorate","observable","action","observer","AddressSelect","SelectAddress","SelectItem","CheckoutShippingAddressView","CheckoutShippingAddress","showAddress","showAddressSelect","isShowAddress","catch","e","exception","customerAccountNumber","user","componentDidMount","getInput","index","onAddressOptionChange","ichecked","additionalAttributes","AddressInputComponent","toString","onChange","additionalAddributes","getAddressSelectItems","addressListSelectedAddress","hasExternalSubmitGroup","moduleState","onSubmit","_renderSelectAddress","addressSaveButtonText","addressSaveButtonAriaLabel","addressCancelButtonText","addressCancelButtonAriaLabel","_onAddressOptionChange","_onSelectAddress","addressRecordId","currentTarget","find","_updateModuleState","_getDefaultAddress","_initModuleState","status","_canShip","_forceDisable","_setShippingAddress","init","defaultAddress","Show","cart","emailDeliveryModeCode","EmailDeliveryModeCode","CartLines","DeliveryMode","onDisable","shippingAddress","checkout","checkoutCart","isEmpty","cartLine","PickupDeliveryModeCode","newShippingAddress","TwoLetterISORegionName","updateShippingAddress","onReady","onPending","onUpdating","countryStates","_renderShowAddress","store","WineClubDataStore","getInstance","get","wineState","getModuleByTypeName","deliveryType","hasModuleState","computed","withModuleState","countryCode","defaultLanguageId","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","errorCallback","debug","credentials","bingMapsApiKey","setOptions","detachAutosuggest","dispose","lang","AddressButton","payLoad","getPayloadObject","attributes","getTelemetryAttributes","AddressBillingCheckbox","isChecked","shouldShowCheckbox","IAddressBillingHeadingGenerator","CheckoutBillingAddress","Billing","_onSubmitAddress","isBillingAddressRequried","isCartContainsItemsForShipping","clubStore","isBillingAddressSameAsShipping","ItemId","billingAddress","_onBillingAddressSameAsShippingChange","_setBillingAddress","updateCartDeliverySpecification","setHasError","checkoutState","updateCartDeliverySpecificationInput","deliveryModeId","substatus","_containsOnlyGifts","setError","addressGenericErrorMessage","updateBillingAddress","newBillingAddress","isDisabled","isShowSameAsShippingCheckbox","AddressBillingHeadingComponent","addressBillingAddressHeading","sameAsShippingCheckbox","AddressBillingCheckoxComponent","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","pickupDeliveryModeCode","loyaltyAmount","giftCards","reduce","count","giftCard","Balance","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","shouldPaidByCard","emailCode","nonDigitalItems","line","CheckoutBillingAddressView","AdressErrorTitle","BusinessAccountAddress","excludedList","_resetAddressFields","addressFormatItem","displayType","AddressItemDisplayType","Input","Checkbox","Company","_updateAddress","_updateCountryRegionId","updateForm","isRequired","cleanValue","_isEmpty","i","_isInputRequired","addressItemValue","validationRules","validationRule","AddressValidationRuleType","Required","resetAddress","AddressDetailItem","isNewLine","isShowLabel","labelText","toLowerCase","mainClass","addressTypeValue","AddressDetailItemComponent","Phone","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","getItemFormat","id","_addItem","County","Dropdown","District","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","nameKey","_validationRules","rule","optionalString","ruleType","keys","itemType","_validationRule","regEx","phoneNumberString","match","join","_formatPhoneNumber","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_getShippingAddressFromCartLines","channelDeliveryOptionConfig","cartLines","PickupDeliveryModeCodes","deliveryMode","ShippingAddress","hasInvoiceLine","featureState","feature","IsEnabled","BusinessAccountAddressView","IAddressBillingHeading","isBillingAddressSameAsShippingAddress","additionalProperties","removeBillingAddress","giftCardExtends","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","countryRegionsInfo","addressMetaData","stateDefaultSelectionText","defaultStateText","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","_getCountryRegionInfo","ISOCode","propertyName","validationtor","isValid","_inputValidation","postalCode","selectedState","StateName","adminDistrict","addressLine","locality","district","formattedAddress","_validateRegEx","test","countryRegionInfo","_getAddressDisplayFormat","countryRegion","CountryRegionId","ShortName","addressPurpose","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","NewLine","phoneDisplayItem","isPrimaryDisplayItem","marketISOCode","currentCountryRegion","parseRetailException","addressErrorMessageTitle","isAuthenticated","GetStateProvincesInput","apiSettings","getStateProvinceAction","submitCustomerAddress","addAddress","updateAddress","updatePrimaryAddress","addressAction","AddressManagementInput","execAddressAction","AdressAlert","role","AdressCheckbox","autoFocus","AdressDropdown","displayData","selectedValue","isSelected","getDropdownItem","AdressLabel","htmlFor","getRequriedAttribute","getAddessItems","elementId","AdressCheckboxComponent","AdressDropdownComponent","AddressLabelComponent","AddressAlertComponent","editAddressHeading","addAddressHeading","AdressErrorMessage","AdressInput"],"mappings":"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","file":"static/js/20.1c3a7cff064d66f22c58.chunk.js","sourcesContent":["/*---------------------------------------------------------------------------------------------\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../../common/components/address-add';\r\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../../common/components/address-list';\r\nimport { IAddressShowItem, IAddressShowProps } from '../../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '../../../modules/smwe-account-management-address/smwe-account-management-address';\r\nimport { ISmweAccountManagementAddressConfig } from '../../../modules/smwe-account-management-address/smwe-account-management-address.props.autogenerated';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({\r\n List,\r\n isShowList,\r\n heading,\r\n items\r\n}) => {\r\n\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n {isShowError && \r\n {title}\r\n {message}\r\n }\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n const headingText = (AccountAddressManagement.moduleProps.config as ISmweAccountManagementAddressConfig).heading?.text;\r\n\r\n return (\r\n
\r\n {headingText}\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { AddressFormat } from '../../common/address-format';\nimport { IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (className: string, addresses: Address[], showPrimaryButton: boolean, props: IAddressListInputProps, heading?: HeadingData): IAddressList => {\n const { resources, isUpdating, addressActionResponse, selectedAddress, addressFormat, onEditAddress, onRemoveAddress, onUpdatePrimaryAddress, addressPurposes, telemetryContent } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className: className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map((address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({ addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''), address: address, addressPurposes: addressPurposes }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: isShowError ? true : false,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n { onUpdatePrimaryAddress(address); }\n }\n }\n />\n ),\n editButton: (\n { onEditAddress(address); }\n }\n }\n />\n ),\n removeButton: (\n { onRemoveAddress(address); }\n }\n }\n />\n )\n };\n })\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent } = props;\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n heading!.text = event.target.value;\n };\n const headingComponent = heading && heading.text && (\n \n );\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport {\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\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 {\n AddressOperation, AddressType, IAddressResource, IAddressResponse\n} 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\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\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}\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\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private addressPurposes: AddressPurpose[];\n private resources: IAddressResource;\n private defaultAddressType: number = 6; // Default to Home\n private telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n 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(this.countryRegions, new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()), this.addressPurposes);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public async componentDidMount(): Promise {\n\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled,\n autoSuggestOptions\n }\n } = this.props;\n\n this.props.data.countryRegions.then(() => {\n this._setDefaultCountryRegionId();\n });\n\n reaction(\n () => this.countryRegionId,\n () => this._getStateProvinces()\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n\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(telemetry, options, channel?.BingMapsApiKey, channel?.ChannelCountryRegionISOCode, channel?.DefaultLanguageId);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined && (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 public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public render(): JSX.Element {\n const { renderView, config } = this.props;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n 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 };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate(\n {\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(this.resources.addressStateDefaultSelectionText, this.stateProvinceInfo),\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 private _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n return AddressList(\n {\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: config.heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress\n }\n );\n };\n\n private _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 @action\n private _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 // 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 @action\n private _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId);\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 @action\n private _clearValidation = (): void => {\n this.validationError = {};\n }\n\n private 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 private _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 private _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 private _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n\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 private _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 = this.currentOperation === AddressOperation.Update ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress) : 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 private _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 private _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 private _getStateProvinces = (): void => {\n if (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n return;\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\n (result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\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 private _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n }\n\n private _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n }\n\n private _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n }\n\n private _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n }\n\n private _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 private _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n }\n\n private _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n }\n\n private _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n }\n}\n\nexport default AccountManagementAddress;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\n\nconst AddressShow: React.FC = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items && items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\n })}\n \n );\n};\n\nconst AddressSelect: React.FC = ({\n SelectAddress,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n}) => {\n\n return (\n \n {addButton}\n {items && items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n {item.input}\n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\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\n return (\n \n {heading}\n {items && items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst CheckoutShippingAddressView: React.FC = props => {\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\n\n return (\n \n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\r\nimport { Heading, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource, IAddressResponse } from '../../common/address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressListError {\r\n Error: INodeProps;\r\n isShowError: boolean;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressListItem {\r\n Item: INodeProps;\r\n key: number;\r\n error: IAddressListError;\r\n showItems: IAddressShowProps;\r\n isShowPrimaryButton: boolean;\r\n primaryButton: React.ReactNode;\r\n editButton: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressList {\r\n List: INodeProps;\r\n isShowList: boolean;\r\n heading: React.ReactNode;\r\n items: IAddressListItem[];\r\n}\r\n\r\nexport interface IAddressListProps {\r\n ListAddress: INodeProps;\r\n heading: React.ReactNode;\r\n isShowEmptyListMessage: boolean;\r\n emptyListMessage: React.ReactNode;\r\n addButton: React.ReactNode;\r\n primaryAddressList: IAddressList;\r\n otherAddressList: IAddressList;\r\n}\r\n\r\nexport interface IAddressListInputProps {\r\n isUpdating?: boolean;\r\n selectedAddress?: Address;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n heading?: HeadingData;\r\n primaryAddressSectionHeading?: HeadingData;\r\n otherAddressSectionHeading?: HeadingData;\r\n addressActionResponse?: IAddressResponse;\r\n resources: IAddressResource;\r\n onAddAddress(): void;\r\n onEditAddress(address?: Address): void;\r\n onUpdatePrimaryAddress(address: Address): void;\r\n}\r\n\r\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\r\n return ariaLabel.replace('{addressName}', addressName || '');\r\n};\r\n\r\nconst getAddressList = (className: string, addresses: Address[], showPrimaryButton: boolean, props: IAddressListInputProps, heading?: HeadingData): IAddressList => {\r\n const { resources, isUpdating, addressActionResponse, selectedAddress, addressFormat, onEditAddress, onUpdatePrimaryAddress } = props;\r\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\r\n\r\n return {\r\n List: { className: className },\r\n isShowList: addresses.length > 0,\r\n heading: heading && ,\r\n items: addresses.map((address: Address): IAddressListItem => {\r\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\r\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\r\n return {\r\n Item: { className: `${className}-list` },\r\n key: address.RecordId || 0,\r\n showItems: AddressShow({ addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''), address: address }),\r\n error: {\r\n Error: { className: `${className}-error` },\r\n isShowError: isShowError ? true : false,\r\n title: ,\r\n message: \r\n },\r\n isShowPrimaryButton: showPrimaryButton,\r\n\r\n primaryButton: (\r\n { onUpdatePrimaryAddress(address); }\r\n }\r\n }\r\n />\r\n ),\r\n editButton: (\r\n { onEditAddress(address); }\r\n }\r\n }\r\n />\r\n )\r\n };\r\n })\r\n };\r\n};\r\n\r\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\r\n const { addresses, primaryAddressSectionHeading } = props;\r\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\r\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\r\n};\r\n\r\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\r\n const { addresses, otherAddressSectionHeading } = props;\r\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\r\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\r\n};\r\n\r\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\r\n const { addresses, heading, resources, onAddAddress } = props;\r\n\r\n return {\r\n ListAddress: { className: 'ms-address-list' },\r\n heading: heading && ,\r\n isShowEmptyListMessage: addresses.length === 0,\r\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\r\n addButton: (\r\n \r\n ),\r\n primaryAddressList: getPrimaryAddressList(props),\r\n otherAddressList: getOtherAddressList(props)\r\n };\r\n};\r\n","\r\n/*---------------------------------------------------------------------------------------------\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 classnames from 'classnames';\r\nimport { observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n Address, CountryRegionInfo, StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressCommon } from '../../common/address-common';\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { AddressItemType } from '../../common/address-format.data';\r\nimport { AddressMetaData } from '../../common/address-meta-data';\r\nimport {\r\n AddressOperation, AddressType, IAddressResource, IAddressResponse\r\n} from '../../common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\r\nimport { ISmweAccountManagementAddressData } from './smwe-account-management-address.data';\r\nimport { ISmweAccountManagementAddressProps } from './smwe-account-management-address.props.autogenerated';\r\n\r\nexport interface IAccountManagementAddressViewState {\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface IAccountManagementAddressViewProps extends React.Component> {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: IAccountManagementAddressViewState;\r\n AccountAddressManagement: IModuleProps;\r\n isUpdating: boolean;\r\n showAddressList: IAddressListProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountManagementAddress extends React.Component> {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private addUpdateAddress: Address;\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private customerAccountNumber?: string;\r\n private resources: IAddressResource;\r\n\r\n constructor(props: ISmweAccountManagementAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.customerAccountNumber = context && context.request && context.request.user && context.request.user.customerAccountNumber;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.addressFormat = new AddressFormat(context, this.countryRegions, new AddressMetaData({ ...resources }));\r\n this.addressCommon = new AddressCommon(context, resources, telemetry, this.customerAccountNumber);\r\n this._setDefaultCountryRegionId();\r\n }\r\n\r\n public componentDidMount(): void {\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddresList: this.currentOperation === AddressOperation.List,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List,\r\n },\r\n AccountAddressManagement: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-management-address', config.className)\r\n },\r\n showAddressList: this._renderListAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate(\r\n {\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat((this.addUpdateAddress.ThreeLetterISORegionName) || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(this.resources.addressStateDefaultSelectionText, this.stateProvinceInfo, true),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n onSave: this._onAddressAddUpdateSubmit,\r\n onCancel: this._resetView\r\n }\r\n );\r\n };\r\n\r\n private _renderListAddress = (): IAddressListProps => {\r\n const { config } = this.props;\r\n\r\n return AddressList(\r\n {\r\n isUpdating: this.isUpdating,\r\n selectedAddress: this.selectedAddress,\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n heading: config.heading,\r\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\r\n otherAddressSectionHeading: config.otherAddressSectionHeading,\r\n onEditAddress: this._goToEditAddress,\r\n onAddAddress: this._goToAddAddress,\r\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress\r\n }\r\n );\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n };\r\n\r\n private _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 private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\r\n this.isUpdating = true;\r\n response.then(\r\n (result: IAddressResponse) => {\r\n if (result.address) {\r\n this.hasError = false;\r\n onSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n }\r\n this.isUpdating = false;\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n }\r\n );\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response = this.currentOperation === AddressOperation.Update ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress) : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\r\n (result: StateProvinceInfo[]) => {\r\n this.stateProvinceInfo = result;\r\n }).catch(e => this.props.telemetry.exception(e));\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation) => {\r\n this.currentOperation = operation;\r\n };\r\n\r\n private _onSubmitUpdatePrimaryAddress = (address: Address): void => {\r\n this.selectedAddress = address;\r\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\r\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\r\n };\r\n\r\n private _goToEditAddress = (address: Address): void => {\r\n this.addUpdateAddress = { ...address };\r\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\r\n this._updateCurrentOperation(AddressOperation.Update);\r\n };\r\n\r\n private _goToAddAddress = (): void => {\r\n this.addUpdateAddress = {};\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: this.countryRegionId });\r\n\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n this._resetView();\r\n };\r\n\r\n private _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n };\r\n\r\n private _resetView = (): void => {\r\n this.selectedAddress = undefined;\r\n this._updateCurrentOperation(AddressOperation.List);\r\n };\r\n}\r\n\r\nexport default AccountManagementAddress;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { IAddressResource } from '../../common/address-module.data';\r\nimport AddressButtonComponent from './address-button';\r\nimport { AddressInputComponent } from './address-input';\r\nimport { AddressShow, IAddressShowProps } from './address-show';\r\n\r\nexport interface IAddressSelectInputProps {\r\n hasExternalSubmitGroup?: boolean;\r\n addressFormat: AddressFormat;\r\n addresses: Address[];\r\n resources: IAddressResource;\r\n selectedAddress: Address;\r\n onAddressOptionChange(event: React.ChangeEvent): void;\r\n onAddAddress(): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressSelectItem {\r\n key: number;\r\n SelectItem: INodeProps;\r\n input: React.ReactNode;\r\n showItems: IAddressShowProps;\r\n}\r\n\r\nexport interface IAddressSelectProps {\r\n SelectAddress: INodeProps;\r\n addButton: React.ReactNode;\r\n items: IAddressSelectItem[];\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\r\n const { addresses, onAddressOptionChange, selectedAddress } = props;\r\n\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\r\n const { addresses, addressFormat } = props;\r\n\r\n return addresses.map((address, index) => {\r\n return {\r\n key: address.RecordId || 0,\r\n SelectItem: { className: 'msc-address-select__item' },\r\n input: getInput(index, address, props),\r\n showItems: AddressShow({ addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''), address: address })\r\n };\r\n });\r\n};\r\n\r\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\r\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\r\n\r\n return {\r\n SelectAddress: { className: 'msc-address-select' },\r\n addButton: (\r\n \r\n ),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n items: getAddressSelectItems(props)\r\n };\r\n};","\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport { computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleStateProps, statusType, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { AddressCommon } from '../../common/address-common';\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { AddressItemType } from '../../common/address-format.data';\r\nimport { AddressMetaData } from '../../common/address-meta-data';\r\nimport {\r\n AddressOperation, AddressType, IAddressResource, IAddressResponse\r\n} from '../../common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\r\nimport { WineClubDataStore } from '../wine-club-signup/wine-club-data';\r\nimport { ISmweCheckoutShippingAddressData } from './smwe-checkout-shipping-address.data';\r\nimport { ISmweCheckoutShippingAddressProps } from './smwe-checkout-shipping-address.props.autogenerated';\r\n\r\nexport interface IProps extends ISmweCheckoutShippingAddressProps, IModuleStateProps { }\r\n\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface ICheckoutShippingAddressViewProps extends IProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n// @ts-ignore\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private addUpdateAddress: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n @observable private isUpdating?: boolean;\r\n @observable private hasError?: boolean;\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private customerAccountNumber?: string;\r\n private resources: IAddressResource;\r\n\r\n 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.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.customerAccountNumber = context && context.request && context.request.user && context.request.user.customerAccountNumber;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressFormat = new AddressFormat(context, this.countryRegions, new AddressMetaData({ ...resources }));\r\n this.addressCommon = new AddressCommon(context, resources, telemetry, this.customerAccountNumber);\r\n this.validationError = {};\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n }).catch(e => this.props.telemetry.exception(e));\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress: this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update,\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n showAddressSelect: this._renderSelectAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate(\r\n {\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat((this.addUpdateAddress.ThreeLetterISORegionName) || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(this.resources.addressStateDefaultSelectionText, this.stateProvinceInfo, true),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this.onSubmit,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => { } : this._resetView\r\n }\r\n );\r\n };\r\n\r\n private _renderSelectAddress = (): IAddressSelectProps => {\r\n return AddressSelect(\r\n {\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onAddAddress: this._goToAddAddress,\r\n onSave: this._onSelectAddress,\r\n // tslint:disable-next-line: no-empty\r\n onCancel: !this.selectedAddress ? () => { } : this._resetView\r\n }\r\n );\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({ address: this.selectedAddress, addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || '') });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find((address) => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n };\r\n\r\n private _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 private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response = this.currentOperation === AddressOperation.Update ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress) : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.isUpdating = true;\r\n this._updateModuleState();\r\n\r\n response.then(\r\n (result: IAddressResponse) => {\r\n this.isUpdating = false;\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n this._onAddOrUpdateSuccess(result);\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\r\n (result: StateProvinceInfo[]) => {\r\n this.stateProvinceInfo = result;\r\n }).catch(e => this.props.telemetry.exception(e));\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n private _forceDisable(): boolean {\r\n const store = WineClubDataStore.getInstance().get();\r\n const wineState = this.props.moduleState.getModuleByTypeName('checkout-club-info-collector');\r\n return store.deliveryType === 'PICKUP' && wineState.hasModuleState;\r\n }\r\n\r\n private _initModuleState = (): void => {\r\n let status: statusType = this._canShip() ? 'updating' : 'disabled';\r\n if (this._forceDisable()) {\r\n status = 'disabled';\r\n this._setShippingAddress(this.addressListSelectedAddress); // DG: Force the shipping address to be {} instead of undefined. Undefined breaks API calls.\r\n }\r\n const { request } = this.props.context;\r\n this.props.moduleState.init({\r\n status: status,\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n const defaultAddress = this._getDefaultAddress();\r\n if (this._canShip()) {\r\n if (defaultAddress) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n } else {\r\n this.props.data.cart.then(() => {\r\n const { cart } = this.props.data;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n // \"GIFT CARD CHECK\"\r\n if (cart && cart.result && cart.result.CartLines && cart.result.CartLines.filter(item => item.DeliveryMode === emailDeliveryModeCode).length === 1) {\r\n if (!defaultAddress) {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n }).catch(e => this.props.telemetry.exception(e));\r\n }\r\n\r\n if (this._forceDisable()) { this.props.moduleState.onDisable(); }\r\n };\r\n\r\n // private _setBillingAddress = (newBillingAddress: Address): void => {\r\n // if (this.props.data.checkout.result) {\r\n // this.props.data.checkout.result.updateBillingAddress({newBillingAddress});\r\n // }\r\n // }\r\n\r\n private onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n private _canShip = (): boolean => {\r\n const { checkout } = this.props.data;\r\n const { request } = this.props.context;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty) {\r\n return false;\r\n }\r\n // @ts-ignore: Type-checker not realizing above request.channel check\r\n return checkout.result.checkoutCart.cart.CartLines.some(cartLine => cartLine.DeliveryMode !== request.channel.PickupDeliveryModeCode);\r\n };\r\n\r\n private _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n private _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n private _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n private _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n void this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\r\n }\r\n };\r\n\r\n @computed get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n }\r\n\r\n private _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show, this.shippingAddress);\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n private _updateModuleState = () => {\r\n if (this._forceDisable()) { this.props.moduleState.onDisable(); return; }\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;","// tslint:disable:no-reference\n/// \n\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n/**\n *\n * Auto Suggest\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n private telemetry: ITelemetry;\n private countryCode?: string;\n private bingMapsApiKey?: string;\n private defaultLanguageId?: string;\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(telemetry: ITelemetry, autoSuggestOptions: IAutoSuggestOptions, BingMapsApiKey?: string, countryCode?: string, defaultLanguageId?: string) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (inputId: string, containerId: string, selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role','combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n }\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if(this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n }\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n }\n\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.countryCode,\n market: this.defaultLanguageId\n });\n }\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick(event: React.MouseEvent): void;\n}\n\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n );\n};\n\nexport default AddressButton;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport { WineClubDataStore } from '../../modules/wine-club-signup/wine-club-data';\r\nimport { AddressInputComponent } from './address-input';\r\n\r\nexport interface IAddressBillingCheckbox {\r\n isChecked: boolean;\r\n value: string;\r\n ariaLabel: string;\r\n text: string;\r\n wineState: boolean;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AddressBillingCheckbox: React.FC = ({\r\n isChecked,\r\n value,\r\n ariaLabel,\r\n text,\r\n wineState,\r\n onChange\r\n}) => {\r\n\r\n const additionalAttributes = {\r\n checked: isChecked,\r\n 'aria-checked': isChecked,\r\n };\r\n\r\n const clubData = WineClubDataStore.getInstance().get();\r\n let shouldShowCheckbox = true;\r\n if (clubData.deliveryType === 'PICKUP' && wineState) {\r\n shouldShowCheckbox = false;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default AddressBillingCheckbox;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressBillingHeading {\r\n text: string;\r\n}\r\n\r\nconst IAddressBillingHeadingGenerator: React.FC = ({\r\n text\r\n}) => (\r\n

{text}

\r\n );\r\n\r\nexport default IAddressBillingHeadingGenerator;\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 classnames from 'classnames';\r\nimport { computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n Address, CountryRegionInfo, GiftCard, StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { AddressCommon } from '../../common/address-common';\r\nimport { AddressFormat } from '../../common/address-format';\r\nimport { AddressItemType } from '../../common/address-format.data';\r\nimport { AddressMetaData } from '../../common/address-meta-data';\r\nimport {\r\n AddressOperation, AddressType, IAddressResource, IAddressResponse\r\n} from '../../common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport AddressBillingCheckoxComponent from '../../common/components/address-billing-checkbox';\r\nimport AddressBillingHeadingComponent from '../../common/components/address-billing-heading';\r\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\r\n\r\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { WineClubDataStore } from '../wine-club-signup/wine-club-data';\r\nimport { ISmweCheckoutBillingAddressData } from './smwe-checkout-billing-address.data';\r\nimport { ISmweCheckoutBillingAddressProps } from './smwe-checkout-billing-address.props.autogenerated';\r\n\r\nexport interface IProps extends ISmweCheckoutBillingAddressProps, IModuleStateProps { }\r\n\r\nexport interface ICheckoutBillingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n isShowSameAsShippingCheckbox: boolean;\r\n}\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}\r\n\r\n/**\r\n *\r\n * CheckoutBillingAddress component\r\n * @extends {React.PureComponent>}\r\n */\r\n// @ts-ignore\r\n@withModuleState\r\n@observer\r\nclass CheckoutBillingAddress extends React.Component {\r\n\r\n @observable private currentOperation: AddressOperation;\r\n @observable private isBillingAddressSameAsShipping: boolean;\r\n @observable private selectedAddress?: Address;\r\n @observable private addUpdateAddress: Address;\r\n @observable private countryRegionId: string = 'USA';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private validationError: object;\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n private addressCommon: AddressCommon;\r\n private addressFormat: AddressFormat;\r\n private countryRegions: CountryRegionInfo[];\r\n private customerAccountNumber?: string;\r\n private resources: IAddressResource;\r\n // private addRenderRef: React.RefObject;\r\n\r\n 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.customerAccountNumber = context && context.request && context.request.user && context.request.user.customerAccountNumber;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressFormat = new AddressFormat(context, this.countryRegions, new AddressMetaData({ ...resources }));\r\n this.addressCommon = new AddressCommon(context, resources, telemetry, this.customerAccountNumber);\r\n\r\n // this.addRenderRef = React.createRef();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this.props.data.checkout.then(() => {\r\n this._initModuleState();\r\n this._setDefaultCountryRegionId();\r\n }).catch(e => this.props.telemetry.exception(e));\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => this._getStateProvinces()\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n 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 } 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 && this.props.moduleState.isDisabled) {\r\n this.onEdit();\r\n } else {\r\n this.props.moduleState.onDisable();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!(this.isBillingAddressRequried)) {\r\n return null;\r\n }\r\n\r\n const { resources } = this.props;\r\n\r\n const { renderView, config } = this.props;\r\n\r\n const clubStore = WineClubDataStore.getInstance().get();\r\n const wineState = this.props.moduleState.getModuleByTypeName('checkout-club-info-collector').hasModuleState;\r\n\r\n let isShowSameAsShippingCheckbox = this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating;\r\n if (clubStore.deliveryType === 'PICKUP' && wineState) {\r\n isShowSameAsShippingCheckbox = false;\r\n }\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: isShowSameAsShippingCheckbox\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 // tslint:disable-next-line: max-line-length\r\n sameAsShippingCheckbox: (\r\n \r\n ),\r\n showAddress: this._renderShowAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate(\r\n {\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 selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(this.resources.addressStateDefaultSelectionText, this.stateProvinceInfo),\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\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({ address: this.selectedAddress, addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || '') });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\r\n };\r\n\r\n private onAddressAddUpdate = (name: string, value: string) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n };\r\n\r\n private _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 private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\r\n (result: StateProvinceInfo[]) => {\r\n this.stateProvinceInfo = result;\r\n }).catch(e => this.props.telemetry.exception(e));\r\n };\r\n\r\n private _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 if (this.isBillingAddressRequried) {\r\n const { checkout } = this.props.data;\r\n const cart = checkout.result && checkout.result.checkoutCart.cart;\r\n if (this.isCartContainsItemsForShipping) {\r\n const clubStore = WineClubDataStore.getInstance().get();\r\n const wineState = this.props.moduleState.getModuleByTypeName('checkout-club-info-collector').hasModuleState;\r\n if (clubStore.deliveryType === 'PICKUP' && wineState) {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n } else {\r\n this.isBillingAddressSameAsShipping = true;\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n } else if (cart && cart.CartLines && cart.CartLines.filter(item=>item.ItemId==='GIFTCARD').length===1) {\r\n if (this.billingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n } else {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _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 get isCartContainsItemsForShipping(): boolean {\r\n const { request } = this.props.context;\r\n\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n return ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine => cartLine.DeliveryMode !== pickupDeliveryModeCode);\r\n }\r\n\r\n @computed get billingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.billingAddress;\r\n }\r\n\r\n @computed get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\r\n }\r\n\r\n @computed get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState && checkoutState.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\r\n }\r\n\r\n @computed get getGiftCardTotalAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.giftCards) {\r\n return 0;\r\n }\r\n return checkoutState.giftCards.reduce(\r\n (count: number, giftCard: GiftCard) => {\r\n return count + (giftCard.Balance || 0);\r\n },\r\n 0);\r\n }\r\n\r\n @computed get shouldPaidByCard(): boolean {\r\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\r\n if (!cart || !cart.CartLines || !cart.CartLines.length) {\r\n return false;\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;\r\n return amountDue > 0;\r\n }\r\n\r\n @computed get isBillingAddressRequried(): boolean {\r\n return this.shouldPaidByCard;\r\n }\r\n\r\n private _onSubmitAddress = (): void => {\r\n const isBilling = true;\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, isBilling)) {\r\n this.props.moduleState.setHasError(true);\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 // tslint:disable-next-line:no-floating-promises\r\n void this.updateCartDeliverySpecification();\r\n };\r\n\r\n private updateCartDeliverySpecification = async(): Promise => {\r\n const { resources } = this.props;\r\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\r\n if(this.props.data.checkout.result?.checkoutCart.cart &&\r\n this.props.data.checkout.result?.checkoutCart.cart.CartLines &&\r\n this.props.data.checkout.result?.checkoutCart.cart.CartLines.length > 0 &&\r\n this.props.data.checkout.result?.checkoutCart.cart.CartLines[0].DeliveryMode) {\r\n const updateCartDeliverySpecificationInput = {\r\n deliveryModeId: this.props.data.checkout.result?.checkoutCart.cart.CartLines[0].DeliveryMode || '',\r\n shippingAddress: checkoutState.shippingAddress\r\n };\r\n await checkoutState.checkoutCart.updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\r\n .then((response) => {\r\n if (\r\n response.status === 'FAILED' &&\r\n response.substatus === 'NOCONTENT' &&\r\n this._containsOnlyGifts()\r\n ) {\r\n this.onReady();\r\n return;\r\n }\r\n if (response.status === 'FAILED') {\r\n this.setError(resources.addressGenericErrorMessage);\r\n } else {\r\n this.onReady();\r\n }\r\n })\r\n .catch(\r\n () => {\r\n this.setError(resources.addressGenericErrorMessage);\r\n }\r\n );\r\n }\r\n };\r\n\r\n private async _containsOnlyGifts(): Promise {\r\n const cart = await this.props.data.checkout;\r\n const emailCode = this.props.context.request.channel?.EmailDeliveryModeCode;\r\n const nonDigitalItems = cart.checkoutCart.cart.CartLines?.filter(line => line.DeliveryMode !== emailCode);\r\n return nonDigitalItems?.length === 0;\r\n }\r\n\r\n private onReady = () => {\r\n this.props.moduleState.onReady();\r\n };\r\n\r\n private setError = (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 };\r\n\r\n private onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onSubmitAddress();\r\n break;\r\n case AddressOperation.Show:\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 // tslint:disable-next-line:no-floating-promises\r\n void this.updateCartDeliverySpecification();\r\n }\r\n break;\r\n default:\r\n // tslint:disable-next-line:no-floating-promises\r\n void this.updateCartDeliverySpecification();\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n private onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._resetView();\r\n break;\r\n case AddressOperation.Show:\r\n // @ts-ignore: Compiler not reconizing property form extending class\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 private onEdit = (): void => {\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 private _setBillingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n // tslint:disable-next-line: no-floating-promises\r\n void this.props.data.checkout.result.updateBillingAddress({ newBillingAddress: address });\r\n }\r\n };\r\n\r\n private _resetView = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId });\r\n }\r\n };\r\n\r\n private _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutBillingAddress;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\r\nimport { ICheckoutBillingAddressViewProps } from './smwe-checkout-billing-address';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutBillingAddressView: React.FC = props => {\r\n const { CheckoutBillingAddress, viewState, heading, sameAsShippingCheckbox, showAddress, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAdressErrorTitle {\n title: string;\n}\n\nconst AdressErrorTitle: React.FC = ({ title }) => (\n

\n {title}\n

\n);\n\nexport default AdressErrorTitle;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport classnames from 'classnames';\nimport { observable, set } from 'mobx';\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\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\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 @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private validationError: object;\n\n private addressActionResponse?: IAddressResponse;\n private isUpdating?: boolean;\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private addressPurposes: AddressPurpose[];\n private resources: IAddressResource;\n private defaultAddressType: number = 8; // Default to Business\n private excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n private telemetryContent: ITelemetryContent;\n\n 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(this.countryRegions, new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []), this.addressPurposes);\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public componentDidMount(): void {\n this._setDefaultCountryRegionId();\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: 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 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 // 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 private _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 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 private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n private _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 private _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(this.countryRegions, new AddressMetaData({ ...resources }, this.excludedList, []), this.addressPurposes);\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // get new addressFormat as if address was a required field\n this.addressFormat = new AddressFormat(this.countryRegions, new AddressMetaData({ ...resources }, this.excludedList, undefined), this.addressPurposes);\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 // walk through array and check if valued is defined or value is not an empty string\n private _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (let i = 0; i < addressFormat.length; i ++) {\n const addressFormatItem = addressFormat[i];\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 private _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (addressFormatItem === null || !addressFormatItem.validationRules || addressFormatItem.validationRules.length === 0) {\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 && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n // tslint:disable: no-floating-promises\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 private _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 // 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. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\nconst AddressDetailItem: React.FC = ({\n isNewLine,\n isShowLabel,\n labelText,\n name,\n value\n}) => {\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass= isShowLabel? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`:classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {\n isShowLabel && <>\n {labelText}\n \n \n }\n {value}\n \n );\n};\n\nexport default AddressDetailItem;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { AddressItemType, IAddressItem } from '../../common/address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map((item) => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find((addressTypeValue) => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString());\n if (addressType) {\n const value = addressType.Name || '';\n return {\n key: item.name,\n description: \n };\n }\n }\n return {\n key: item.name,\n description: \n };\n })\n };\n};","import {\n AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data\n */\nexport class AddressMetaData {\n\n private metaData: IAddressItem[] = [];\n private resources: IAddressResource;\n private requiredFieldRegEx: string = '\\\\S';\n private resourcesPrefix: string = 'address';\n private maxLength: number = 64;\n private requiredFields: AddressItemType[];\n private excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields = required !== undefined ? required : [AddressItemType.Name, AddressItemType.ZipCode, AddressItemType.City, AddressItemType.State, AddressItemType.ThreeLetterISORegionName, AddressItemType.Street];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find((item) => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.District, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey);\n let isRequired = false;\n validationRules.forEach(rule => {\n if (rule.type === AddressValidationRuleType.Required) {\n isRequired = true;\n }\n });\n\n // if no optional string is provided in resource file, use the original label text\n const optionalString = this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules: validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\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\nconst AddressShow: React.FC = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items && items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\n })}\n \n );\n};\n\nconst AddressList: React.FC = ({\n List,\n isShowList,\n heading,\n items\n}) => {\n\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items && 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 {isShowError && \n {title}\n {message}\n }\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n );\n })}\n \n );\n};\n\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\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\n return (\n \n {heading}\n {items && items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst AccountManagementAddressView: React.FC = props => {\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\n\n return (\n \n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default AccountManagementAddressView;\n","export enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n District = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classname from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IAddressDetailItem {\r\n isNewLine: boolean;\r\n isShowLabel: boolean;\r\n labelText: string;\r\n name: string;\r\n value: string;\r\n}\r\n\r\nconst AddressDetailItem: React.FC = ({\r\n isNewLine,\r\n isShowLabel,\r\n labelText,\r\n name,\r\n value\r\n}) => {\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}` : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\r\n value = (name.toLowerCase() === 'phone') ? _formatPhoneNumber(value) : value;\r\n return (\r\n
\r\n {\r\n isShowLabel && <>\r\n {labelText}\r\n \r\n \r\n }\r\n {value}\r\n
\r\n );\r\n};\r\n\r\nfunction _formatPhoneNumber(phoneNumberString: string): string {\r\n const cleaned = phoneNumberString.replace(/\\D/g, '');\r\n const match = cleaned.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n const intlCode = (match[1] ? '+1-' : '');\r\n return [intlCode, match[2], '-', match[3], '-', match[4]].join('');\r\n }\r\n return '';\r\n}\r\n\r\nexport default AddressDetailItem;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressItem } from '../../common/address-format.data';\r\nimport AddressDetailItemComponent from './address-detail-item';\r\n\r\nexport interface IAddressShowItem {\r\n key: string;\r\n description: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressShowProps {\r\n AddressDetail: INodeProps;\r\n items: IAddressShowItem[];\r\n}\r\n\r\nexport interface IAddressShowInputProps {\r\n addressFormat: IAddressItem[];\r\n address: Address;\r\n}\r\n\r\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\r\n const { addressFormat, address } = props;\r\n\r\n return {\r\n AddressDetail: { className: 'msc-address-detail' },\r\n items: addressFormat.map((item) => {\r\n return {\r\n key: item.name,\r\n description: \r\n };\r\n })\r\n };\r\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { AddressFormat } from '../../common/address-format';\nimport { IAddressResource } from '../../common/address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress } = props;\n\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({ addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''), address: address, addressPurposes: addressPurposes})\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\n };\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n getTelemetryObject, IModuleProps, ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport {\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy';\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 {\n AddressOperation, AddressType, IAddressResource, IAddressResponse\n} from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\n\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps { }\n\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddressSelect: IAddressSelectProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component\n * @extends {React.Component>}\n */\n// @ts-ignore\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private addUpdateAddress: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private addressListSelectedAddress: Address = {};\n\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private addressPurposes: AddressPurpose[];\n private resources: IAddressResource;\n private defaultAddressType: number = 6; // Default to Home\n private telemetryContent?: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n private multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n constructor(props: ICheckoutAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(this.countryRegions, new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()), this.addressPurposes);\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data?.featureState?.result?.\n find(feature => feature.Name === this.multiplePickupStoreSwitchName)?.IsEnabled;\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled,\n autoSuggestOptions\n }\n } = this.props;\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => this._getStateProvinces()\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n\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(telemetry, options, channel?.BingMapsApiKey, channel?.ChannelCountryRegionISOCode, channel?.DefaultLanguageId);\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if(this.props.data.storeSelectorStateManager.result && (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi && (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const { renderView, config } = this.props;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n showAddressSelect: this._renderSelectAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n const addressFormat = this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow() ? this.addressFormat : this.addressFormat;\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this.onSubmit,\n // tslint:disable-next-line: no-empty\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => { } : this._resetView\n });\n };\n\n private _renderSelectAddress = (): IAddressSelectProps => {\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n onAddAddress: this._goToAddAddress,\n onSave: this._onSelectAddress,\n // tslint:disable-next-line: no-empty\n onCancel: !this.selectedAddress ? () => { } : this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n private _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 @action\n private _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 // 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 @action\n private _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId);\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 @action\n private _clearValidation = (): void => {\n this.validationError = {};\n }\n\n private _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n private onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n private _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 private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n private _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._onAddOrUpdateSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n private _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 private _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 private _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { ['State']: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n private _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n private _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n if (this._canShip()) {\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n private onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this._onSelectAddress();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n private onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n private onEdit = (): void => {\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n private _getShippingAddressFromCartLines = (): Address | undefined => {\n const { request } = this.props.context;\n const { channelDeliveryOptionConfig } = this.props.data;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n const cartLines = this.retailMultiplePickUpOptionEnabled ?\n ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '')\n ? (cartLine.DeliveryMode !== channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode) && cartLine.DeliveryMode !== emailDeliveryModeCode)\n : cartLine\n ):\n ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '')\n ? (cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode)\n : cartLine\n );\n\n if (cartLines && cartLines.length > 0) {\n return cartLines[0].ShippingAddress;\n }\n\n return undefined;\n };\n\n private _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-ignore: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled?\n checkout?.result?.checkoutCart?.cart?.CartLines?.some(\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '')\n ? (cartLine.DeliveryMode !== channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode) && cartLine.DeliveryMode !== emailDeliveryModeCode)\n : cartLine\n )\n : checkout?.result?.checkoutCart?.cart?.CartLines?.some(\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '')\n ? (cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode)\n : cartLine\n );\n };\n\n private _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n private _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n private _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n private _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n }\n };\n\n @computed get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\n }\n\n private _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n ['AddressTypeValue']: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n private _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n}\n\nexport default CheckoutShippingAddress;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\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\n return (\n \n {heading}\n {items && 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\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n {}\n \n );\n};\n\nexport default BusinessAccountAddressView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\r\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from './smwe-account-management-address';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({\r\n List,\r\n isShowList,\r\n heading,\r\n items\r\n}) => {\r\n\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n return (\r\n \r\n {isShowError && \r\n {title}\r\n {message}\r\n }\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nconst AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked,\n };\n\n return (\n \n );\n};\n\nexport default AddressBillingCheckbox;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAddressBillingHeading {\n text: string;\n}\n\nconst IAddressBillingHeading: React.FC = ({\n text\n}) => (\n

{text}

\n );\n\nexport default IAddressBillingHeading;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport {\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\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 {\n AddressOperation, AddressType, IAddressResource, IAddressResponse\n} from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport AddressBillingCheckoxComponent from '../../common/components/address-billing-checkbox';\nimport AddressBillingHeadingComponent from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\n\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps { }\n\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n}\n\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * CheckoutBillingAddress component\n * @extends {React.PureComponent>}\n */\n// @ts-ignore\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n\n @observable private currentOperation: AddressOperation;\n @observable private isBillingAddressSameAsShipping: boolean;\n @observable private selectedAddress?: Address;\n @observable private addUpdateAddress: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n\n private addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[];\n private addressPurposes: AddressPurpose[];\n private resources: IAddressResource;\n private defaultAddressType: number = 6; // Default to Home\n // private addRenderRef: React.RefObject;\n private telemetryContent?: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(this.countryRegions, new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()), this.addressPurposes);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n // this.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled,\n autoSuggestOptions\n }\n } = this.props;\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => this._getStateProvinces()\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n // tslint:disable-next-line:no-floating-promises\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n\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(telemetry, options, channel?.BingMapsApiKey, channel?.ChannelCountryRegionISOCode, channel?.DefaultLanguageId);\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if(this.props.data.storeSelectorStateManager.result && (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi && (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public render(): JSX.Element | null {\n if (!(this.isBillingAddressRequried)) {\n return null;\n }\n\n const { resources } = this.props;\n\n const { renderView, config } = this.props;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n // tslint:disable-next-line: max-line-length\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate(\n {\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat((this.addUpdateAddress.ThreeLetterISORegionName) || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(this.resources.addressStateDefaultSelectionText, this.stateProvinceInfo),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n }\n );\n }\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({ address: this.selectedAddress, addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''), addressPurposes: this.addressPurposes });\n }\n\n return null;\n }\n\n private _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 private _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 private _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n }\n\n @action\n private _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 // 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 @action\n private _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId);\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 @action\n private _clearValidation = (): void => {\n this.validationError = {};\n }\n\n private onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n }\n\n private _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n\n private _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n }\n\n private _getStateProvinces = (): void => {\n if (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n return;\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\n (result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\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 _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result || {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress || false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n }\n\n 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 private _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n }\n\n @computed get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.\n find(feature => feature.Name === multiplePickupStoreSwitchName)?.IsEnabled;\n\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n // if hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled ?\n ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '')\n ? (cartLine.DeliveryMode !== channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode) && cartLine.DeliveryMode !== emailDeliveryModeCode)\n : cartLine\n )\n :((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(\n cartLine => (cartLine.DeliveryMode && cartLine.DeliveryMode !== '')\n ? (cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode)\n : cartLine\n );\n }\n\n @computed get billingAddress(): Address | undefined {\n return this.props.data.checkout.result && this.props.data.checkout.result.billingAddress;\n }\n\n @computed get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress;\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce(\n (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n },\n 0);\n }\n\n @computed get shouldPaidByCard(): boolean {\n const {\n data: {\n checkout\n },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || !cart.CartLines.length) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed get isBillingAddressRequried(): boolean {\n return this.shouldPaidByCard;\n }\n\n private _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n private onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n private onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n // @ts-ignore: Compiler not reconizing property form extending class\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n private onEdit = (): void => {\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n }\n\n private _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n // tslint:disable-next-line:no-floating-promises\n this.props.data.checkout.result.updateBillingAddress({ newBillingAddress, additionalProperties: { isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping } });\n }\n }\n\n private _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n }\n\n private _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId });\n set(this.addUpdateAddress, { ['AddressTypeValue']: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n }\n\n private _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n }\n}\n\nexport default CheckoutBillingAddress;","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { get, set } from 'mobx';\n\nimport {\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport {\n AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule\n} from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser\n */\nexport class AddressFormat {\n private countryRegionsInfo?: CountryRegionInfo[];\n private addressPurposes?: AddressPurpose[];\n private addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Name\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (stateDefaultSelectionText: string, stateProvinceInfo?: StateProvinceInfo[]): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n }\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n }\n\n public validateAddressFormat = (address: Address, validationError: Address, countryRegionId: string, propertyName?: string): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat((address.ThreeLetterISORegionName) || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n }\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if(result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if(result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if(result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n }\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of (addressFormatItem.validationRules || [])) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n private _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test(get(address, propertyName) || '');\n }\n return true;\n }\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return ((countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase());\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","import {\n addAddress, AddressManagementInput, updateAddress, updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common\n */\nexport class AddressCommon {\n\n private context: ICoreContext;\n private resources: IAddressResource;\n private telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n }\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n }\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n }\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n }\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && address.State && address.City) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = (address: Address): Promise => {\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = (address: Address): Promise => {\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private submitCustomerAddress = (addressAction: IObservableAction, address: Address): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private execAddressAction = async (addressAction: IObservableAction, input: IActionInput | IActionInput[], address: Address): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n}\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from './smwe-checkout-shipping-address';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items && items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return ();\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../../common/components/address-add';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '../../../common/components/address-select';\r\nimport { IAddressShowItem, IAddressShowProps } from '../../../common/components/address-show';\r\nimport { ICheckoutShippingAddressViewProps } from '../../../modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {addButton}\r\n {items && items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return ();\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n return (\r\n
\r\n {props.config.heading?.text}\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\nconst AddressShow: React.FC = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items && items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\n })}\n \n );\n};\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\n return (\n \n {heading}\n {items && items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst CheckoutBillingAddressView: React.FC = props => {\n const { CheckoutBillingAddress, viewState, heading, sameAsShippingCheckbox, showAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n {heading}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../../common/components/address-add';\r\nimport { IAddressShowItem, IAddressShowProps } from '../../../common/components/address-show';\r\nimport { ICheckoutBillingAddressViewProps } from '../../../modules/smwe-checkout-billing-address/smwe-checkout-billing-address';\r\n\r\nconst AddressShow: React.FC = ({\r\n AddressDetail,\r\n items\r\n}) => {\r\n\r\n return (\r\n \r\n {items && items.map((item: IAddressShowItem) => {\r\n return (\r\n <>\r\n {item.description}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton,\r\n}) => {\r\n\r\n return (\r\n \r\n {heading}\r\n {items && items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n {label}\r\n {alert}\r\n {input}\r\n );\r\n })}\r\n {hasError && \r\n {error.title}\r\n {error.message}\r\n }\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutBillingAddressView: React.FC = props => {\r\n const { CheckoutBillingAddress, viewState, heading, sameAsShippingCheckbox, showAddress, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n
\r\n {props.config.heading?.text}\r\n \r\n {heading}\r\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\nconst AdressAlert: React.FC = ({ message }) => (\n \n {\n message &&\n <>\n {message}\n \n }\n \n);\n\nexport default AdressAlert;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nconst AdressCheckbox: React.FC = ({\n id,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AdressCheckbox;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string , selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof (key) === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof(selectedValue)==='string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\nconst AdressDropdown: React.FC = ({\n id,\n name,\n className,\n value,\n additionalAddributes,\n displayData,\n onChange\n}) => (\n \n {displayData && displayData.map(item =>\n (\n getDropdownItem(item.key, item.value, value)\n ))\n }\n \n );\n\nexport default AdressDropdown;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAdressLabel {\n id: string;\n text: string;\n}\n\nconst AdressLabel: React.FC = ({\n id,\n text\n}) => (\n \n );\n\nexport default AdressLabel;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport {\n AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressDropdownsData,\n IAddressItem, IAddressValidationRule\n} from '../address-format.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const { addressFormat, addressType, dropdownDisplayData, defaultCountryRegionId, defaultAddressType, validationError = {}, onInputChange, onDropdownChange } = props;\n\n // @ts-ignore\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, { 'msc-address-form__item-newline': addressFormatItem.isNewLine, 'address-form__item-invalid': errorMessage });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className: className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input: input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const { editAddressHeading, addAddressHeading, selectedAddress = {}, resources, hasError, onCancel, onSave, hasExternalSubmitGroup, isUpdating, addressActionResponse, telemetryContent } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && ,\n message: addressActionResponse && addressActionResponse.errorMessage && \n }\n };\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\nconst AdressErrorMessage: React.FC = ({ message }) => (\n

\n {message}\n

\n);\n\nexport default AdressErrorMessage;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n id,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus,\n telemetryContent,\n onChange\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AdressInput;\n","import { Heading } from '@msdyn365-commerce-modules/data-types';\nimport { Address } from '@msdyn365-commerce/retail-proxy';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n}"],"sourceRoot":""}