{"version":3,"sources":["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-select.tsx?e342","webpack:///./src/modules/mands-c-checkout-billing-address/checkout-errors/checkout-errors.ts?a0ba","webpack:///./src/modules/mands-checkout-billing-address/mands-checkout-billing-address.view.tsx?a0bb","webpack:///./src/modules/mands-c-checkout-shipping-address/common/address-module.data.ts?45c6","webpack:///./src/modules/mands-c-checkout-shipping-address/mands-c-checkout-shipping-address.view.tsx?5636","webpack:///src/common/address-autosuggest.ts?520f","webpack:///src/common/components/address-button.tsx?e3b2","webpack:///src/common/components/address-error-title.tsx?a723","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-error-title.tsx?9919","webpack:///src/modules/business-account-address/business-account-address.tsx?d57d","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-select.tsx?7a7d","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-error-alert.tsx?8d65","webpack:///./src/modules/mands-c-checkout-shipping-address/mands-c-checkout-shipping-address.tsx?a433","webpack:///src/common/components/address-label.tsx?9ddc","webpack:///src/common/components/address-show.tsx?376c","webpack:///src/common/address-meta-data.ts?d29d","webpack:///./src/modules/mands-c-checkout-shipping-address/common/address-format.ts?14cf","webpack:///../../src/index.ts?0e3e","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-billing-checkbox.tsx?6c15","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-billing-heading.tsx?4fdd","webpack:///./src/modules/mands-checkout-billing-address/mands-checkout-billing-address.tsx?3915","webpack:///src/modules/account-management-address/account-management-address.view.tsx?739e","webpack:///src/common/address-format.data.ts?da4c","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-alert.tsx?74f1","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-dropdown.tsx?f68e","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-label.tsx?8d09","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-add.tsx?047b","webpack:///../../../src/module-state-manager/with-module-state.tsx?61ca","webpack:///./src/modules/mands-c-checkout-shipping-address/common/address-format.data.ts?480e","webpack:///src/common/components/address-alert.tsx?0da8","webpack:///src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?7802","webpack:///src/modules/checkout-shipping-address/checkout-shipping-address.tsx?bd44","webpack:///../../src/checkout-state.ts?acd8","webpack:///src/modules/business-account-address/business-account-address.view.tsx?dcd1","webpack:///src/common/components/address-dropdown.tsx?3e73","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-input.tsx?d0d9","webpack:///./src/modules/mands-c-checkout-shipping-address/common/address-meta-data.ts?27bd","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/module-state-manager/module-state.ts?7579","webpack:///./src/modules/mands-c-checkout-shipping-address/common/address-common.ts?2173","webpack:///./src/modules/mands-account-management-address/mands-account-management-address.view.tsx?ea99","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-button.tsx?6f2c","webpack:///src/common/components/address-list.tsx?8cb2","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-list.tsx?df9e","webpack:///./src/modules/mands-account-management-address/mands-account-management-address.tsx?ddb9","webpack:///src/common/address-format.ts?400b","webpack:///src/common/address-common.ts?0583","webpack:///src/modules/checkout-billing-address/checkout-billing-address.view.tsx?d08e","webpack:///../../../src/module-state-manager/index.ts?8e3a","webpack:///src/common/components/address-checkbox.tsx?a46e","webpack:///src/common/components/address-add.tsx?0cbd","webpack:///src/common/components/address-error-message.tsx?c7bd","webpack:///src/checkout-errors/checkout-errors.ts?687e","webpack:///src/common/components/address-error-alert.tsx?b25e","webpack:///../../src/checkout-utilities.data.ts?b2cc","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-error-message.tsx?39e9","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-detail-item.tsx?73a1","webpack:///./src/modules/mands-c-checkout-shipping-address/common/components/address-show.tsx?cb6c","webpack:///src/common/components/address-input.tsx?ed8f","webpack:///../../src/checkout-state-data-action.ts?8344","webpack:///src/common/components/address-detail-item.tsx?c5b6","webpack:///src/common/address-module.data.ts?1a63"],"names":["AccountManagementAddress","React","constructor","props","super","countryRegionId","countryRegions","addressPurposes","defaultAddressType","asyncCustAddressCreationFeatureName","editAsyncCustomerFeatureName","asyncCustomerAddressCreationFeatureIsEnabled","isEditAsyncCustomerFeatureEnabled","_onSuggestionSelected","async","this","_clearAddressFields","address","addressFormat","getTranformedAddress","result","stateProvinceInfo","set","addUpdateAddress","Street","ZipCode","CountyName","City","State","DistrictName","FullAddress","setTimeout","getAddressFormat","ThreeLetterISORegionName","forEach","format","_this$autoSuggest","undefined","name","autoSuggest","excludedAddressFields","includes","_clearValidation","validationError","_dataInitialize","data","reaction","_data$countryRegions$","_data$addressPurposes","_data$address$result","customerAddresses","_renderAddOrUpdateAddress","AddressAddUpdate","isUpdating","resources","addressType","AddressType","Shipping","defaultCountryRegionId","selectedAddress","addressActionResponse","dropdownDisplayData","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","telemetryContent","onInputChange","_onAddressAddUpdateInputChange","onDropdownChange","_onAddressAddUpdateDropdownChange","onSave","_onAddressAddUpdateSubmit","onCancel","_resetView","_renderListAddress","_this$props$data$cust","_this$props$context$a","config","heading","text","headingTag","tag","AddressList","addresses","primaryAddressSectionHeading","otherAddressSectionHeading","contextRequest","context","request","handleLineItemHeadingChange","event","target","value","onEditAddress","_goToEditAddress","onRemoveAddress","_onRemoveAddress","onAddAddress","_goToAddAddress","onUpdatePrimaryAddress","_onSubmitUpdatePrimaryAddress","isAsyncCustomerAddressCreationFeatureEnabled","isAsyncCustomer","customerInformation","IsAsyncCustomer","canRenderAsyncCustomerDataAsUnmodifiable","app","_attachMapAutoSuggest","storeSelectorStateManager","_this$autoSuggest2","isMapApiLoaded","attachAutoSuggest","onAddressAddUpdate","validateAddressFormat","type","checked","replace","RegExp","AddressItemType","AddressTypeValue","_onCountryChange","_onAddressUpdate","response","onSuccess","then","hasError","addressCommon","isAuthenticatedFlow","currentOperation","AddressOperation","Update","updateCustomerAddress","addCustomerAddress","Promise","resolve","_onAddOrUpdateSuccess","_this$autoSuggest3","twoLetterISORegionName","getTwoLetterISORegionName","TwoLetterISORegionName","changeAutoSuggestionCountryCode","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","push","IsPrimary","_getStateProvinces","Add","getStateProvinces","some","state","StateId","_updateCurrentOperation","operation","updateCustomerPrimaryAddress","_onUpdatePrimaryAddressSuccess","_objectSpread","Deactivate","removeAddressData","_renderScreenReaderRemoveText","notification","formatNotification","removeAddressNotification","Name","className","_setDefaultCountryRegionId","List","telemetry","AddressCommon","AddressFormat","AddressMetaData","getTelemetryObject","telemetryPageName","friendlyName","actionContext","requestContext","channel","autoSuggestionEnabled","autoSuggestOptions","BingMapsApiKey","error","BingMapsEnabled","options","AutoSuggest","ChannelCountryRegionISOCode","DefaultLanguageId","_this$props$data$stor","loadMapApi","_this$autoSuggest4","_loadMapAPI","_this$props$data$stor2","_this$props$data$stor3","_this$autoSuggest5","disposeAutoSuggest","shouldComponentUpdate","nextProps","nextState","render","_data$featureState","_data$featureState2","_this$props$context$a2","renderView","featureState","find","feature","IsEnabled","infoMessageBar","Msdyn365","accountProcessingPendingInfoMessageCanAddAddress","accountProcessingPendingInfoMessage","viewState","isShowAddresList","isShowAddOrUpdateAddress","AccountAddressManagement","moduleProps","classnames","showAddressList","showAddOrUpdateAddress","screenReaderNotification","market","getDefaultCountryRegionId","__decorate","observable","action","observer","AddressShow","_ref","AddressDetail","items","Node","Object","assign","map","item","description","AddressSelect","_ref2","SelectAddress","addButton","isShowSaveButton","saveButton","isShowCancelButton","cancelButton","SelectItem","key","input","showItems","_ref3","AddressForm","AddressItem","label","alert","AddressError","title","message","CheckoutShippingAddressView","CheckoutShippingAddress","checkoutErrorRef","showAddress","showAddressSelect","cartLineImages","Module","ref","isShowAddress","getInput","index","_addressPurposes$find","onAddressOptionChange","addressTypeDescription","purpose","Description","ichecked","RecordId","additionalAttributes","length","addressChangeCheckboxAriaLabel","AddressInputComponent","toString","onChange","additionalAddributes","getAddressSelectItems","hasExternalSubmitGroup","AddressButtonComponent","addressAddButtonText","ariaLabel","addressAddButtonAriaLabel","onClick","addressSaveButtonText","addressSaveButtonAriaLabel","addressCancelButtonText","addressCancelButtonAriaLabel","focusOnCheckoutError","ctx","checkoutState","getCheckoutState","catch","exception","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","CheckoutBillingAddressView","CheckoutBillingAddress","sameAsShippingCheckbox","isShowSameAsShippingCheckbox","countryCode","defaultLanguageId","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","AutosuggestManager","attachAutosuggest","document","querySelector","setAttribute","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","setOptions","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","lang","AddressButtonFunctionComponent","disabled","isDisabled","role","payLoad","getPayloadObject","attributes","getTelemetryAttributes","AddressErrorTitleFunctionComponent","AdressErrorTitle","BusinessAccountAddress","shouldAutoFocus","excludedList","_resetAddressFields","addressFormatItem","displayType","AddressItemDisplayType","Input","Checkbox","countryStates","_data$countryStates$r","Company","_updateAddress","_updateCountryRegionId","updateForm","isRequired","cleanValue","_isEmpty","_isInputRequired","addressItemValue","ObjectExtensions","isNullOrUndefined","validationRules","validationRule","AddressValidationRuleType","Required","componentDidMount","resetAddress","_request$channel","ErrorComponent","addressListSelectedAddress","moduleState","onSubmit","_renderSelectAddress","onAddAddressHandler","onSaveHandler","onCancelHandler","_onAddressOptionChange","_onSelectAddress","addressRecordId","currentTarget","HouseNumber","_updateModuleState","_clearError","_getDefaultAddress","_initModuleState","init","status","_canShip","onEdit","defaultAddress","_getShippingAddressFromCartLines","Show","_setShippingAddress","pickupDeliveryModeCode","PickupDeliveryModeCode","cartLines","checkout","checkoutCart","cart","CartLines","filter","cartLine","DeliveryMode","ShippingAddress","information","shippingAddress","isEmpty","newShippingAddress","updateShippingAddress","_this$addUpdateAddres","_this$addUpdateAddres2","_this$addUpdateAddres3","_this$addUpdateAddres4","split","trim","onReady","onPending","onUpdating","_setErrorMessage","errorMessage","setHasError","setState","customerAccountNumber","user","_this$props$data$chec","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec2","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec3","checkoutErrorFocus","errorMessageTitle","_renderShowAddress","computed","withModuleState","AddressLabelFunctionComponent","id","itemId","htmlFor","addressTypeValue","AddressDetailItemComponent","isNewLine","isShowLabel","Phone","labelText","excluded","required","metaData","requiredFieldRegEx","resourcesPrefix","maxLength","excludedTypes","requiredFields","_init","getItemFormat","_addItem","PhoneRegex","defaultRegex","County","Dropdown","StreetNumber","BuildingCompliment","Postbox","House_RU","Flat_RU","CountryOKSMCode_RU","nameKey","_validationRules","rule","optionalString","ruleType","keys","itemType","_validationRule","Format","regEx","countryRegionsInfo","addressMetaData","stateDefaultSelectionText","defaultStateText","dropdownData","getCountryFormat","getStateFormat","unshift","_getCountryRegionInfo","ISOCode","isValid","_validateRegEx","propertyName","test","get","filteredCountries","allowedCountries","i","findIndex","CountryRegionId","countryRegionInfo","_getAddressDisplayFormat","countryRegion","ShortName","StateName","toLowerCase","addressDisplayItem","AddressFormatLines","nameDisplayItem","_extendAddressDisplayFormat","houseNumberDisplayItem","console","log","formatLine","AddressComponentNameValue","addressItem","NewLine","phoneDisplayItem","AddressBillingCheckbox","isChecked","IAddressBillingHeading","Billing","_onSubmitAddress","isBillingAddressRequried","isCartContainsItemsForShipping","isBillingAddressSameAsShipping","_onBillingAddressSameAsShippingChange","billingAddress","_setBillingAddress","newBillingAddress","updateBillingAddress","onDisable","AddressBillingHeadingComponent","addressBillingAddressHeading","AddressBillingCheckoxComponent","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","loyaltyAmount","giftCards","reduce","count","giftCard","Balance","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","shouldPaidByCard","isShowList","Item","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","primaryAddressList","otherAddressList","_ref4","AccountManagementAddressView","AdressAlert","AdressDropdown","displayData","getDropdownItem","selectedValue","isSelected","AdressLabel","getRequriedAttribute","getAddessItems","elementId","classname","AdressDropdownComponent","AddressLabelComponent","AddressAlertComponent","editAddressHeading","addAddressHeading","Heading","errorTitle","AddressErrorTitleComponent","AddressErrorMessageComponent","WrappedComponent","_super","ModuleState","_this","call","initializeState","_b","typeName","states","getModuleStates","updateModuleStates","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isReady","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","update","setIsCancellable","setIsSubmitContainer","onSkip","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","moduleStates","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","ArrayExtensions","hasElements","enableControl","__extends","prototype","AddressAlertFunctionComponent","CheckoutPickupCartLines","moduleClassName","itemTitle","isMobileCheck","isMobile","variant","VariantType","Browser","gridSettings","xs","w","sm","md","lg","xl","isMobileView","isShowQty","quantity","lineId","Image","imageProps","productQuantityInfo","altText","defaultImageSettings","viewports","q","h","lazyload","quality","_data$featureState$re2","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","products","_getProductsByCartLines","ChannelId","line","product","x","ProductId","shippingGroups","formatAddress","_data$featureState$re","_isDelivery","_isNotPickupMode","FulfillmentStoreId","deliveryMode","_this$props$context$r","_featureState$result","channelDeliveryOptionConfig","_channelDeliveryOptio","pickupDeliveryMode","PickupDeliveryModeCodes","pickupMode","channelId","productInputs","ProductInput","apiSettings","CatalogId","getSimpleProducts","onCancelButtonHandler","_isNewAddress","twoLetterIsoRegionName","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","tokenizedPaymentCard","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","country","_country$ISOCode","shippingCartLines","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","updateHasShippingAddress","newHasShippingAddress","_checkout$result$chec","_checkout$result$chec2","emailDeliveryModeCode","EmailDeliveryModeCode","hasInvoiceLine","_channelDeliveryOptio2","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_countItems","cartlines","_this$props$data$chec6","_this$props$data$chec4","_this$props$data$chec5","_address","_this$props$data$chec7","_this$props$data$chec8","_featureState$result2","headingImages","itemsText","singleItemText","imageSettings","_line$cartLine$LineId","_line$product","_line$product$Primary","_line$product2","_line$product3","_context$request$app","_line$cartLine$Quanti","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","OmniChannelMedia","loadFailureBehavior","Quantity","numberOfCartLines","itemText","lineImageProps","isRetailMultiplePickUpOptionEnabled","showAddressSelectHandler","showAddOrUpdateAddressHandler","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","_this$props$data$chec9","CheckoutState","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","BusinessAccountAddressView","AddressDropdownFunctionComponent","AdressInput","zipCodeRegEx","cityNameRegEx","nameRegEx","phoneRegEx","validationErrorMessage","maxLengthErrorMessage","District","AddressBillingHeading","isBillingAddressSameAsShippingAddress","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","additionalProperties","removeBillingAddress","_shouldHideBillingAddressForOBO","_this$selectedAddress","_request$channel2","_request$channel3","_this$props$data$chec10","giftCardExtends","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","isPaidByOtherPaymentSource","paymenTenderType","getCustomerAccountAmount","_this$props$data$chec11","_this$props$data$chec12","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","ModuleStatesCacheKey","getCacheKey","getCacheObjectType","dataCacheType","cacheKey","marketISOCode","currentCountryRegion","parseRetailException","addressErrorMessageTitle","addressGenericErrorMessage","GetStateProvincesInput","getStateProvinceAction","submitCustomerAddress","addAddress","updateAddress","updatePrimaryAddress","addressAction","AddressManagementInput","execAddressAction","AddressButton","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","isSelectedAddress","isInvalidAsyncState","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","addressEditButtonText","addressEditButtonAriaLabel","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddresses","getOtherAddressList","otherAddresses","_heading$headingTag","headingComponent","editProps","disableAddButton","addressEmptyListAddressMessage","getAddressTypeFormat","validationtor","_inputValidation","postalCode","selectedState","adminDistrict","addressLine","locality","district","formattedAddress","addressPurpose","AddressTypeItem","isPrimaryDisplayItem","isAuthenticated","updateLogisticsLocationRoleRecordId","GetAddressPurposesInput","getAddressPurposesAction","LogisticsLocationRoleRecordId","AddressCheckboxFunctionComponent","autoFocus","shouldBeAutoFocused","AdressCheckboxComponent","AddressErrorMessageFunctionComponent","AdressErrorMessage","AddressDetailItem","mainClass","AddressInputFunctionComponent","shouldUseAutoFocus","CheckoutStateInput","buildCacheKey","createObservableDataAction","inputData","AddressDetailItemFunctionComponent"],"mappings":"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","file":"static/js/16.46f5157e0ecfcd728a62.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressList, IAddressListProps } from '../../common/components/address-list';\nimport { IAccountManagementAddressData } from './account-management-address.data';\nimport { IAccountManagementAddressProps } from './account-management-address.props.autogenerated';\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewState {\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * Account management address view state interface.\n */\nexport interface IAccountManagementAddressViewProps extends React.Component> {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: IAccountManagementAddressViewState;\n AccountAddressManagement: IModuleProps;\n isUpdating: boolean;\n showAddressList: IAddressListProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n screenReaderNotification: React.ReactNode;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountManagementAddress extends React.Component> {\n @observable private currentOperation: AddressOperation;\n @observable private selectedAddress?: Address;\n @observable private countryRegionId: string = 'USA';\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n @observable private customerAddresses: Address[];\n @observable private addUpdateAddress: Address;\n @observable private validationError: object;\n @observable private addressActionResponse?: IAddressResponse;\n @observable private isUpdating?: boolean;\n @observable private hasError?: boolean;\n @observable private removeAddressData?: Address;\n\n private readonly addressCommon: AddressCommon;\n private addressFormat: AddressFormat;\n private countryRegions: CountryRegionInfo[] = [];\n private addressPurposes: AddressPurpose[] = [];\n private readonly resources: IAddressResource;\n private readonly defaultAddressType: number = 6; // Default to Home\n private readonly telemetryContent: ITelemetryContent;\n private autoSuggest?: AutoSuggest;\n\n private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\n\n public constructor(props: IAccountManagementAddressProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.addUpdateAddress = {};\n this.validationError = {};\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n if (this.props.data.countryRegions.result !== undefined) {\n this._setDefaultCountryRegionId();\n }\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => {\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n },\n async () => {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n await this._attachMapAutoSuggest();\n }\n }\n );\n }\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n /**\n * Should component update function.\n * @param nextProps - Account management address props.\n * @param nextState - Next state.\n * @returns - True if component should update, false otherwise.\n */\n public shouldComponentUpdate(\n nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { renderView, config, resources, data } = this.props;\n const customerInformation = data.customerInformation.result;\n\n // Set the feature state value for 'Async Customer Address Creation'.\n this.asyncCustomerAddressCreationFeatureIsEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\n\n this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n !this.isEditAsyncCustomerFeatureEnabled &&\n (customerInformation?.IsAsyncCustomer || false) && (\n \n ),\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddresList: this.currentOperation === AddressOperation.List,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\n },\n AccountAddressManagement: {\n moduleProps: this.props,\n className: classnames('ms-account-management-address', config.className)\n },\n showAddressList: this._renderListAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On Suggestion Selected Function.\n * @param result - Microsoft.Maps.ISuggestionResult.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IAccountManagementAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n };\n\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n onSave: this._onAddressAddUpdateSubmit,\n onCancel: this._resetView\n });\n };\n\n /**\n * Render List Address Function.\n * @returns - AddressList.\n */\n private readonly _renderListAddress = (): IAddressListProps => {\n const { config } = this.props;\n\n /**\n * Render Address title.\n * @param event - Msdyn365.ContentEditableEvent.\n */\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n config.heading!.text = event.target.value;\n };\n const heading = config.heading && {\n text: config.heading.text,\n headingTag: config.heading.tag\n };\n\n return AddressList({\n isUpdating: this.isUpdating,\n selectedAddress: this.selectedAddress,\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n addressPurposes: this.addressPurposes,\n resources: this.resources,\n heading,\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\n otherAddressSectionHeading: config.otherAddressSectionHeading,\n contextRequest: this.props.context.request,\n telemetryContent: this.telemetryContent,\n handleLineItemHeadingChange,\n onEditAddress: this._goToEditAddress,\n onRemoveAddress: this._onRemoveAddress,\n onAddAddress: this._goToAddAddress,\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress,\n isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\n });\n };\n\n /**\n * Attach Map Auto Suggest Function.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On Address Add Update Function.\n * @param name - String.\n * @param value - String | Boolean | Number.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * On Address Add Update Input Change.\n * @param event - Input Change Event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * On Address Add Update Dropdown Change.\n * @param event - Dropdown Change Event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n this.onAddressAddUpdate(event.target.name, +event.target.value);\n } else {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n }\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * On Address Update Function.\n * @param response - Promise.\n * @param onSuccess - IAddressResponse.\n */\n private readonly _onAddressUpdate = (response: Promise, onSuccess: (response: IAddressResponse) => void): void => {\n this.isUpdating = true;\n response.then(\n (result: IAddressResponse) => {\n if (result.address) {\n this.hasError = false;\n onSuccess(result);\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n }\n this.isUpdating = false;\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n }\n );\n };\n\n /**\n * On Address Add Update Submit Function.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow()) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * On Country Change Function.\n * @param countryRegionId - String.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\n this._clearAddressFields();\n };\n\n /**\n * Get Address Format Exclude List Function.\n * @returns - Address Format Exclude List.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Get State Provinces Function.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Update CurrentOperation Function.\n * @param operation - AddressOperation.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\n this.currentOperation = operation;\n this._clearAddressFields();\n };\n\n /**\n * On Submit Update Primary Address Function.\n * @param address - Address.\n */\n private readonly _onSubmitUpdatePrimaryAddress = (address: Address): void => {\n this.selectedAddress = address;\n const response = this.addressCommon.updateCustomerPrimaryAddress(address);\n this._onAddressUpdate(response, this._onUpdatePrimaryAddressSuccess);\n };\n\n /**\n * Go To Edit Address Function.\n * @param address - Address.\n */\n private readonly _goToEditAddress = (address: Address): void => {\n this.addUpdateAddress = { ...address };\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\n this._updateCurrentOperation(AddressOperation.Update);\n };\n\n /**\n * On Remove Address Function.\n * @param address - Address.\n */\n private readonly _onRemoveAddress = (address: Address): void => {\n address.Deactivate = true;\n this.removeAddressData = address;\n const response = this.addressCommon.updateCustomerAddress(address);\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\n };\n\n /**\n * Renders Notification screen reader text for removed address.\n * @param address - Address input.\n * @returns Notification for removed address.\n */\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\n return (\n
\n {notification}\n
\n );\n };\n\n /**\n * Go To Add Address Function.\n */\n private readonly _goToAddAddress = (): void => {\n this.addUpdateAddress = {};\n this._setDefaultCountryRegionId();\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * On Add Or Update Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n this._resetView();\n };\n\n /**\n * On Update Primary Address Success Function.\n * @param response - IAddressResponse.\n */\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n };\n\n /**\n * Reset view function.\n */\n private readonly _resetView = (): void => {\n this.selectedAddress = undefined;\n this._updateCurrentOperation(AddressOperation.List);\n };\n}\n\nexport default AccountManagementAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {addButton}\n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress, resources, addressPurposes } = props;\n const addressTypeDescription = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\n : '';\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel, addressTypeDescription)\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\n };\n};\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\r\n\r\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\r\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\r\n ctx.telemetry.exception(error);\r\n throw error;\r\n });\r\n\r\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\r\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\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 * as React from 'react';\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\r\nimport { IAddressShowItem, IAddressShowProps } from '../mands-c-checkout-shipping-address/common/components/address-show';\r\nimport { ICheckoutBillingAddressViewProps } from './mands-checkout-billing-address';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\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 return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\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","import { Heading } from '@msdyn365-commerce-modules/data-types';\r\nimport { Address } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface IAddressModuleData {\r\n address: Address;\r\n}\r\n\r\nexport enum AddressOperation {\r\n Add = 'Add',\r\n Show = 'Show',\r\n Update = 'Update',\r\n List = 'List'\r\n}\r\n\r\nexport enum AddressType {\r\n Shipping = 'Shipping',\r\n Billing = 'Billing'\r\n}\r\n\r\nexport interface IDropdownDisplayData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n\r\nexport interface IAddressResponse {\r\n errorTitle?: string;\r\n errorMessage?: string;\r\n customerAddresses?: Address[];\r\n address?: Address;\r\n}\r\n\r\nexport interface IAddressConfig {\r\n heading?: Heading;\r\n primaryAddressSectionHeading?: Heading;\r\n otherAddressSectionHeading?: Heading;\r\n addAddressHeading?: Heading;\r\n editAddressHeading?: Heading;\r\n}\r\n\r\nexport interface IAddressResource {\r\n addressChangeCheckboxAriaLabel?: string;\r\n addressAddButtonText: string;\r\n addressAddButtonAriaLabel: string;\r\n addressPrimaryButtonText: string;\r\n addressPrimaryButtonAriaLabel: string;\r\n addressEditButtonText: string;\r\n addressEditButtonAriaLabel: string;\r\n addressSaveButtonText: string;\r\n addressSaveButtonAriaLabel: string;\r\n addressCancelButtonText: string;\r\n addressCancelButtonAriaLabel: string;\r\n addressStateDefaultSelectionText: string;\r\n addressNameLabel: string;\r\n addressNameRequiredErrorMessage: string;\r\n addressPhoneLabel: string;\r\n addressPhoneRequiredErrorMessage: string;\r\n addressZipCodeLabel: string;\r\n addressZipCodeRequiredErrorMessage: string;\r\n addressCityLabel: string;\r\n addressCityRequiredErrorMessage: string;\r\n addressCountyLabel: string;\r\n addressCountyRequiredErrorMessage: string;\r\n addressStateLabel: string;\r\n addressStateRequiredErrorMessage: string;\r\n addressThreeLetterISORegionNameLabel: string;\r\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\r\n addressStreetRequiredErrorMessage: string;\r\n addressDistrictLabel: string;\r\n addressDistrictRequiredErrorMessage: string;\r\n addressStreetNumberLabel: string;\r\n addressStreetNumberRequiredErrorMessage: string;\r\n addressBuildingComplimentLabel: string;\r\n addressBuildingComplimentRequiredErrorMessage: string;\r\n addressPostboxLabel: string;\r\n addressPostboxRequiredErrorMessage: string;\r\n addressHouseRULabel: string;\r\n addressHouseRURequiredErrorMessage: string;\r\n addressFlatRULabel: string;\r\n addressFlatRURequiredErrorMessage: string;\r\n addressCountryOKSMCodeRULabel: string;\r\n addressCountryOKSMCodeRURequiredErrorMessage: string;\r\n addressErrorMessageTitle: string;\r\n addressGenericErrorMessage: string;\r\n addressEmptyListAddressMessage: string;\r\n // VSI - Customization HouseNumber\r\n addressHouseNumberLabel: string;\r\n addressHouseNumberRequiredErrorMessage: string;\r\n // END\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 * 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 './mands-c-checkout-shipping-address';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\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 return (\r\n \r\n {addButton}\r\n {items &&\r\n items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { checkoutErrorRef, alert, CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress } = props;\r\n\r\n return (\r\n \r\n {alert}\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetry } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\n\nimport { IAutoSuggestOptions } from './address-autosuggest.data';\n\n/**\n *\n * Auto Suggest.\n */\nexport class AutoSuggest {\n public readonly excludedAddressFields: string[] = ['ThreeLetterISORegionName', 'Name', 'AddressTypeValue', 'Phone'];\n\n private readonly telemetry: ITelemetry;\n\n private readonly countryCode?: string;\n\n private readonly bingMapsApiKey?: string;\n\n private readonly defaultLanguageId?: string;\n\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private autoSuggestOptions: IAutoSuggestOptions;\n\n constructor(\n telemetry: ITelemetry,\n autoSuggestOptions: IAutoSuggestOptions,\n BingMapsApiKey?: string,\n countryCode?: string,\n defaultLanguageId?: string\n ) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (\n inputId: string,\n containerId: string,\n selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void\n ): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAddressButton {\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n role?: string;\n onClick(event: React.MouseEvent): void;\n}\n\n/**\n * Address button.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressButtonFunctionComponent: React.FC = (props: IAddressButton) => {\n const { className, text, ariaLabel, disabled: isDisabled, telemetryContent, onClick, role } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorTitle {\n title: string;\n}\n\n/**\n * Address error title.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorTitleFunctionComponent: React.FC = (props: IAdressErrorTitle) => {\n const { title } = props;\n\n return

{title}

;\n};\n\nexport default AddressErrorTitleFunctionComponent;\n","/*---------------------------------------------------------------------------------------------\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 IAdressErrorTitle {\r\n title: string;\r\n}\r\n\r\nconst AdressErrorTitle: React.FC = ({ title }) =>

{title}

;\r\n\r\nexport default AdressErrorTitle;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction, set } from 'mobx';\nimport * as React from 'react';\n\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressData } from './business-account-address.data';\nimport { IBusinessAccountAddressProps } from './business-account-address.props.autogenerated';\n\n/**\n * Interface for IBusinessAccountAddressExtendedProps.\n */\nexport interface IBusinessAccountAddressExtendedProps extends IBusinessAccountAddressProps {\n hasError: boolean;\n isRequired: boolean;\n resetAddress: boolean;\n updateForm(errors: boolean, currentAddress?: Address): void;\n}\n\n/**\n * Interface for IBusinessAccountAddressState.\n */\nexport interface IBusinessAccountAddressState {\n countryId?: string;\n states?: StateProvinceInfo[];\n}\n\n/**\n * Interface for IBusinessAccountAddressViewProps.\n */\nexport interface IBusinessAccountAddressViewProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n BusinessAccountAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component, IBusinessAccountAddressState>}\n */\nclass BusinessAccountAddress extends React.Component {\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private readonly validationError: object;\n\n private readonly addressActionResponse?: IAddressResponse;\n\n private readonly isUpdating?: boolean;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 0; // Default to None (This value set in HQ as Business)\n\n private readonly shouldAutoFocus?: boolean = false;\n\n private readonly excludedList: AddressItemType[] = [AddressItemType.Name, AddressItemType.AddressTypeValue, AddressItemType.IsPrimary]; // Default to hiding Name and AddressType inputs\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBusinessAccountAddressExtendedProps) {\n super(props);\n\n const { context, data, resources, telemetry } = this.props;\n this.addUpdateAddress = {};\n this.resources = resources;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n // Initializing data props\n this._dataInitialize(this.props);\n\n this._setDefaultCountryRegionId();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessAccountAddressExtendedProps, nextState: IBusinessAccountAddressState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { renderView, config, hasError, resetAddress } = this.props;\n\n // Business-sign-up will pass this flag when cancel button is clicked\n if (resetAddress) {\n this._resetAddressFields();\n }\n\n const viewProps = {\n ...this.props,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n hasError,\n className: config.className,\n BusinessAccountAddress: {\n moduleProps: this.props,\n className: classnames('ms-business-account-address', config.className)\n },\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Reset Address.\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _resetAddressFields = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n\n addressFormat.map(addressFormatItem => {\n switch (addressFormatItem.displayType) {\n case AddressItemDisplayType.Input:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n case AddressItemDisplayType.Checkbox:\n this.addUpdateAddress[addressFormatItem.name] = false;\n break;\n default:\n switch (addressFormatItem.type) {\n case AddressItemType.ThreeLetterISORegionName:\n this.addUpdateAddress[addressFormatItem.name] = this.countryRegionId;\n break;\n case AddressItemType.AddressTypeValue:\n this.addUpdateAddress[addressFormatItem.name] = this.defaultAddressType;\n break;\n case AddressItemType.State:\n this.addUpdateAddress[addressFormatItem.name] = '';\n break;\n default:\n this.addUpdateAddress[addressFormatItem.name] = undefined;\n }\n }\n });\n };\n\n /**\n * Method data initialization.\n * @param props -The account management props.\n */\n private readonly _dataInitialize = (props: IBusinessAccountAddressExtendedProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n // Set validationError and hasError to hide error messages since in the B2B\n // request form, no errors would visually show since user wont be able to submit\n // until form is filled and correct\n /**\n * Render Add Or Update Address Function.\n * @returns - AddressAddUpdate.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Company,\n addressFormat: this.addressFormat.getAddressFormat(this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n shouldAutoFocus: this.shouldAutoFocus,\n validationError: this.validationError,\n hasError: this.props.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange\n });\n };\n\n /**\n * On Address Add Update Input Change Function.\n * @param event - Input event change function.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n this._updateAddress(event.target.name, event.target.value);\n };\n\n /**\n * On Address Add Update Dropdown Change Function.\n * @param event - Change dropdown event.\n */\n private readonly _onAddressAddUpdateDropdownChange = async (event: React.ChangeEvent): Promise => {\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n await this._updateCountryRegionId(event.target.value);\n } else {\n this._updateAddress(event.target.name, event.target.value);\n }\n };\n\n /**\n * Update Address Function.\n * @param name - String.\n * @param value - String.\n */\n private readonly _updateAddress = (name: string, value: string | number) => {\n const { updateForm, isRequired, resources } = this.props;\n let cleanValue = value;\n if (typeof value === 'string') {\n cleanValue = (value || '').replace(new RegExp('[<>]', 'gi'), '');\n }\n set(this.addUpdateAddress, { [name]: cleanValue });\n\n if (this._isEmpty()) {\n if (isRequired) {\n updateForm(true, undefined);\n } else {\n // Reset addressFormat as if address was NOT a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, []),\n this.addressPurposes\n );\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat if address was a required field\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this.excludedList, this.props.isRequired ? undefined : []),\n this.addressPurposes\n );\n\n // Verify with new rules\n if (this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n updateForm(false, this.addUpdateAddress);\n } else {\n updateForm(true, undefined);\n }\n }\n };\n\n /**\n * Is empty Function.\n * @returns - Boolean.\n */\n // Walk through array and check if valued is defined or value is not an empty string\n private readonly _isEmpty = () => {\n const addressFormat = this.addressFormat.getAddressFormat(this.countryRegionId);\n for (const addressFormatItem of addressFormat) {\n if (addressFormatItem.type !== AddressItemType.ThreeLetterISORegionName || this._isInputRequired(addressFormatItem)) {\n const addressItemValue = this.addUpdateAddress[addressFormatItem.name];\n\n // Check each input field, if value is defined and not an empty string --> address is not empty\n if (addressItemValue || (addressItemValue && addressItemValue !== '')) {\n return false;\n }\n }\n }\n\n return true;\n };\n\n /**\n * Is Input Required Function.\n * @param addressFormatItem - IAddressItem.\n * @returns - Boolean.\n */\n private readonly _isInputRequired = (addressFormatItem: IAddressItem): boolean => {\n if (\n ObjectExtensions.isNullOrUndefined(addressFormatItem) ||\n !addressFormatItem.validationRules ||\n addressFormatItem.validationRules.length === 0\n ) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\n","/*---------------------------------------------------------------------------------------------\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 { format, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose } 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 addressPurposes: AddressPurpose[];\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, addressPurposes, resources } = props;\r\n const addressTypeDescription = address.AddressTypeValue\r\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\r\n : '';\r\n const ichecked = address.RecordId === selectedAddress.RecordId;\r\n const additionalAttributes = {\r\n checked: ichecked,\r\n 'aria-checked': ichecked,\r\n 'aria-setsize': addresses.length,\r\n 'aria-posinset': index + 1,\r\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel!, addressTypeDescription)\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({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address\r\n })\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.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\n/**\r\n * The payment error.\r\n */\r\nexport interface IPaymentError {\r\n title: string;\r\n message?: string;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * The payment error.\r\n * @param param0 - First param.\r\n * @param param0.title - Title.\r\n * @param param0.message - Message.\r\n * @param param0.className - ClassName.\r\n * @returns React node.\r\n */\r\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\r\n
\r\n

{title}

\r\n

{message}

\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, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { Address, AddressPurpose, 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 { AddressOperation, AddressType, IAddressResource, IAddressResponse } from './common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from './common/components/address-add';\r\nimport { AddressSelect, IAddressSelectProps } from './common/components/address-select';\r\nimport { AddressShow, IAddressShowProps } from './common/components/address-show';\r\nimport { IMandsCCheckoutShippingAddressData } from './mands-c-checkout-shipping-address.data';\r\nimport { IMandsCCheckoutShippingAddressProps } from './mands-c-checkout-shipping-address.props.autogenerated';\r\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\r\nimport { ErrorComponent } from '../mands-c-checkout-shipping-address/common/components/address-error-alert';\r\nimport { focusOnCheckoutError } from '../mands-c-checkout-billing-address/checkout-errors/checkout-errors';\r\n\r\nimport { ICartLineWithProduct } from '../mands-c-checkout-shipping-address/common/components/checkout-shipping-cartlines-images';\r\nexport interface IProps extends IMandsCCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\nexport interface ICheckoutAddresState {\r\n shippingGroups: ICartLineWithProduct[];\r\n errorMessage?: string;\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 alert?: React.ReactNode;\r\n checkoutErrorRef?: React.RefObject;\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 // VSI - House Number\r\n @observable private selectedAddress?: Address & { HouseNumber?: string };\r\n @observable private addUpdateAddress: Address & { HouseNumber?: string };\r\n // VSI - END\r\n @observable private countryRegionId: string = 'GBR';\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 private readonly checkoutErrorRef: React.RefObject = React.createRef();\r\n private addressPurposes: AddressPurpose[] = [];\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(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._initModuleState();\r\n this._setDefaultCountryRegionId();\r\n });\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 if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutError,\r\n checkoutError => {\r\n if (\r\n checkoutError &&\r\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\r\n checkoutError.errorMessage\r\n ) {\r\n this._setErrorMessage(checkoutError.errorMessage);\r\n }\r\n }\r\n );\r\n reaction(\r\n () => this.props.data.checkout.result?.checkoutErrorFocus,\r\n checkoutErrorFocus => {\r\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\r\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\r\n }\r\n }\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 {\r\n renderView,\r\n config,\r\n moduleState: { hasError }\r\n } = this.props;\r\n const { errorMessageTitle } = this.props.resources;\r\n // const errorMessage = this.state.errorMessage;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n // alert: hasError && errorMessage && ,\r\n alert: hasError && ,\r\n\r\n checkoutErrorRef: this.checkoutErrorRef,\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 private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n 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 private _renderSelectAddress = (\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps => {\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n 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 private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || '')\r\n });\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 // VSI - Customization House | Street\r\n this.addUpdateAddress.Street = `${this.addUpdateAddress.HouseNumber} | ${this.addUpdateAddress.Street}`;\r\n delete this.addUpdateAddress.HouseNumber;\r\n // console.log('address object', this.addUpdateAddress);\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n // VSI - Update address \"concat street with house number\"\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this.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._clearError();\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 (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _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 _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n if (this._canShip()) {\r\n /* VSI upgraded 10.0.14 code - START */\r\n const defaultAddress = this._getShippingAddressFromCartLines() || this._getDefaultAddress();\r\n /* VSI upgraded - END */\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 }\r\n };\r\n /* VSI upgraded 10.0.14 code - START */\r\n private _getShippingAddressFromCartLines = (): Address | undefined => {\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n\r\n const cartLines = (\r\n (this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) ||\r\n []\r\n ).filter(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode !== pickupDeliveryModeCode : cartLine\r\n );\r\n\r\n if (cartLines && cartLines.length > 0) {\r\n return cartLines[0].ShippingAddress;\r\n }\r\n\r\n return undefined;\r\n };\r\n /* VSI upgraded - END */\r\n private onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this.props.telemetry.information('Shipping address submit for List operation.');\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 this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\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 this.props.telemetry.information('Shipping address cancel for List operation.');\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 this.props.telemetry.information('Shipping address onEdit is called.');\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(\r\n cartLine => cartLine.DeliveryMode !== request.channel?.PickupDeliveryModeCode\r\n );\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 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(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n 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 // VSI-CUSTOMIZATION: Update Operation\r\n if (this.addUpdateAddress.Street?.split('|') && this.addUpdateAddress.Street?.split('|').length > 1) {\r\n set(this.addUpdateAddress, { ['HouseNumber']: this.addUpdateAddress.Street?.split('|')[0]?.trim() });\r\n this.addUpdateAddress.Street = this.addUpdateAddress.Street?.split('|')[1]?.trim();\r\n }\r\n // set(this.addUpdateAddress, {['HouseNumber']: this.addUpdateAddress.Street?.split('|')[0]?.trim()});\r\n // this.addUpdateAddress.Street = this.addUpdateAddress.Street?.split('|')[1]?.trim();\r\n // VSI - Update Operation Customizaiton\r\n set(this.addUpdateAddress, {\r\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\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.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 private readonly _setErrorMessage = (errorMessage: string): void => {\r\n this.props.telemetry.error(errorMessage);\r\n this.props.moduleState.setHasError(true);\r\n this.props.moduleState.onUpdating();\r\n this.setState({\r\n errorMessage\r\n });\r\n };\r\n private readonly _clearError = (): void => {\r\n this.props.moduleState.setHasError(false);\r\n this.setState({\r\n errorMessage: ''\r\n });\r\n };\r\n /**\r\n * Returns count of products.\r\n * @param cartLine - The checkout shipping cart line info props.\r\n * @returns Number of products.\r\n */\r\n // private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\r\n // return cartlines.reduce((count, line) => {\r\n // return count + (line.quantity || 0);\r\n // }, 0);\r\n // }\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressLabel {\n id: string;\n text: string;\n}\n\n/**\n * Address label.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressLabelFunctionComponent: React.FC = (props: IAdressLabel) => {\n const { id: itemId, text } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressItemType, IAddressItem } from '../address-format.data';\nimport AddressDetailItemComponent from './address-detail-item';\n\nexport interface IAddressShowItem {\n key: string;\n description: React.ReactNode;\n}\n\nexport interface IAddressShowProps {\n AddressDetail: INodeProps;\n items: IAddressShowItem[];\n}\n\nexport interface IAddressShowInputProps {\n addressFormat: IAddressItem[];\n address: Address;\n addressPurposes: AddressPurpose[];\n}\n\nexport const AddressShow = (props: IAddressShowInputProps): IAddressShowProps => {\n const { addressFormat, addressPurposes, address } = props;\n\n return {\n AddressDetail: { className: 'msc-address-detail' },\n items: addressFormat.map(item => {\n if (item.name === AddressItemType[AddressItemType.AddressTypeValue]) {\n const addressType = addressPurposes.find(\n addressTypeValue => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString()\n );\n if (addressType) {\n const addressTypeDescription = addressType.Description || '';\n return {\n key: item.name,\n description: (\n \n )\n };\n }\n }\n return {\n key: item.name,\n description: (\n \n )\n };\n })\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n private readonly metaData: IAddressItem[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly requiredFieldRegEx: string = '\\\\S';\n\n private readonly resourcesPrefix: string = 'address';\n\n private readonly maxLength: number = 64;\n\n private readonly requiredFields: AddressItemType[];\n\n private readonly excludedTypes: AddressItemType[];\n\n constructor(resources: IAddressResource, excluded?: AddressItemType[], required?: AddressItemType[]) {\n this.resources = resources || {};\n this.excludedTypes = excluded || [];\n this.requiredFields =\n required !== undefined\n ? required\n : [\n AddressItemType.AddressTypeValue,\n AddressItemType.Name,\n AddressItemType.ZipCode,\n AddressItemType.City,\n AddressItemType.State,\n AddressItemType.ThreeLetterISORegionName,\n AddressItemType.Street\n ];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find(item => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, PhoneRegex.defaultRegex);\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.DistrictName, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.AddressTypeValue, AddressItemDisplayType.Dropdown);\n this._addItem(AddressItemType.IsPrimary, AddressItemDisplayType.Checkbox);\n }\n\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType, format?: string): void {\n if (this.excludedTypes.includes(type)) {\n return;\n }\n\n const nameKey = AddressItemType[type].replace('_', '');\n\n // Find out if currentItem is required field\n const validationRules = this._validationRules(type, nameKey, format);\n const isRequired = validationRules.some(rule => rule.type === AddressValidationRuleType.Required);\n\n // If no optional string is provided in resource file, use the original label text\n const optionalString =\n this.resources[`${this.resourcesPrefix}${nameKey}LabelOptional`] || this.resources[`${this.resourcesPrefix}${nameKey}Label`];\n const item: IAddressItem = {\n type,\n displayType,\n name: AddressItemType[type],\n label: isRequired ? this.resources[`${this.resourcesPrefix}${nameKey}Label`] : optionalString,\n maxLength: this.maxLength,\n validationRules,\n isNewLine: true\n };\n\n this.metaData.push(item);\n }\n\n private _validationRules(type: AddressItemType, name: string, format?: string): IAddressValidationRule[] {\n const validationRules: IAddressValidationRule[] = [];\n\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\n const message: string = this.resources[`${key}ErrorMessage`];\n switch (ruleType) {\n case AddressValidationRuleType.Required: {\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\n }\n break;\n }\n case AddressValidationRuleType.Format: {\n validationRules.push(this._validationRule(ruleType, format!, message));\n break;\n }\n default:\n }\n }\n return validationRules;\n }\n\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\n return {\n type,\n regEx,\n message\n };\n }\n}\n","/*---------------------------------------------------------------------------------------------\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 { get, set } from 'mobx';\r\n\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\r\nimport { AddressMetaData } from './address-meta-data';\r\n\r\n/**\r\n *\r\n * Retail Service Address format parser\r\n */\r\nexport class AddressFormat {\r\n private countryRegionsInfo?: CountryRegionInfo[];\r\n private addressMetaData: AddressMetaData;\r\n\r\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData) {\r\n const filteredCountries = [];\r\n const allowedCountries = ['GBR'];\r\n if (countryRegionsInfo) {\r\n for (let i = 0; i < countryRegionsInfo.length; i++) {\r\n const findOptionsIndex = allowedCountries.findIndex(item => item === countryRegionsInfo[i].CountryRegionId);\r\n\r\n if (findOptionsIndex !== -1) {\r\n filteredCountries.push(countryRegionsInfo[i]);\r\n }\r\n }\r\n }\r\n this.countryRegionsInfo = filteredCountries;\r\n this.addressMetaData = addressMetaData;\r\n }\r\n\r\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n if (countryRegionInfo) {\r\n return this._getAddressDisplayFormat(countryRegionInfo);\r\n }\r\n return [];\r\n }\r\n\r\n public getCountryFormat(): { key?: string; value?: string }[] {\r\n return (this.countryRegionsInfo || []).map(countryRegion => {\r\n return {\r\n key: countryRegion.CountryRegionId,\r\n value: countryRegion.ShortName\r\n };\r\n });\r\n }\r\n\r\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\r\n return (stateProvinceInfo || []).map(state => {\r\n return {\r\n key: state.StateId,\r\n value: state.StateName\r\n };\r\n });\r\n }\r\n\r\n public getPrefilledAddressDropdownData = (\r\n stateDefaultSelectionText: string,\r\n stateProvinceInfo?: StateProvinceInfo[]\r\n ): IAddressDropdownsData => {\r\n const defaultStateText = {\r\n key: '',\r\n value: stateDefaultSelectionText\r\n };\r\n const dropdownData: IAddressDropdownsData = {};\r\n\r\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\r\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\r\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\r\n\r\n return dropdownData;\r\n };\r\n\r\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\r\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\r\n\r\n return countryRegionInfo!.ISOCode;\r\n };\r\n\r\n public validateAddressFormat = (address: Address, validationError: Address, countryRegionId: string): boolean => {\r\n let isValid: boolean = true;\r\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\r\n\r\n addressFormat.forEach(addressFormatItem => {\r\n set(validationError, { [addressFormatItem.name]: null });\r\n\r\n for (const validationRule of addressFormatItem.validationRules || []) {\r\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\r\n set(validationError, { [addressFormatItem.name]: validationRule.message });\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n });\r\n return isValid;\r\n };\r\n\r\n private _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\r\n if (validationRule.regEx && validationRule.regEx.length > 0) {\r\n const regex = new RegExp(validationRule.regEx);\r\n return regex.test(get(address, propertyName) || '');\r\n }\r\n return true;\r\n };\r\n\r\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\r\n return (this.countryRegionsInfo || []).find(countryRegion => {\r\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\r\n });\r\n }\r\n\r\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\r\n const addressDisplayItem: IAddressItem[] = [];\r\n\r\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\r\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\r\n if (nameDisplayItem) {\r\n addressDisplayItem.push(nameDisplayItem);\r\n }\r\n // VSI - HouseNumber Field\r\n const houseNumberDisplayItem = this._extendAddressDisplayFormat(AddressItemType.HouseNumber, false);\r\n if (houseNumberDisplayItem) {\r\n addressDisplayItem.push(houseNumberDisplayItem);\r\n }\r\n console.log('address format lines', countryRegionInfo.AddressFormatLines);\r\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\r\n if (formatLine.AddressComponentNameValue) {\r\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\r\n if (addressItem) {\r\n addressItem.isNewLine = formatLine.NewLine || false;\r\n addressDisplayItem.push(addressItem);\r\n }\r\n }\r\n });\r\n\r\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\r\n if (phoneDisplayItem) {\r\n addressDisplayItem.push(phoneDisplayItem);\r\n }\r\n }\r\n console.log('array', addressDisplayItem);\r\n return addressDisplayItem;\r\n }\r\n\r\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\r\n const addressItem = this.addressMetaData.getItemFormat(type);\r\n if (addressItem) {\r\n addressItem.isNewLine = isNewLine;\r\n }\r\n return addressItem;\r\n }\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport checkoutStateDataAction from './checkout-state-data-action';\n\nexport * from './checkout-state';\nexport * from './checkout-state-data-action';\nexport * from './module-state-manager';\nexport * from './checkout-utilities.data';\n\nexport { checkoutStateDataAction };\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 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 onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AddressBillingCheckbox: React.FC = ({ isChecked, value, ariaLabel, text, onChange }) => {\r\n const additionalAttributes = {\r\n checked: isChecked,\r\n 'aria-checked': isChecked\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\n// eslint-disable-next-line no-redeclare\r\nconst IAddressBillingHeading: React.FC = ({ text }) => (\r\n

{text}

\r\n);\r\n\r\nexport default IAddressBillingHeading;\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 { Address, CountryRegionInfo, GiftCard, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { AddressCommon } from '../mands-c-checkout-shipping-address/common/address-common';\r\nimport { AddressFormat } from '../mands-c-checkout-shipping-address/common/address-format';\r\nimport { AddressItemType } from '../mands-c-checkout-shipping-address/common/address-format.data';\r\nimport { AddressMetaData } from '../mands-c-checkout-shipping-address/common/address-meta-data';\r\nimport {\r\n AddressOperation,\r\n AddressType,\r\n IAddressResource,\r\n IAddressResponse\r\n} from '../mands-c-checkout-shipping-address/common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\r\nimport AddressBillingCheckoxComponent from '../mands-c-checkout-shipping-address/common/components/address-billing-checkbox';\r\nimport AddressBillingHeadingComponent from '../mands-c-checkout-shipping-address/common/components/address-billing-heading';\r\nimport { AddressShow, IAddressShowProps } from '../mands-c-checkout-shipping-address/common/components/address-show';\r\nimport { IMandsCheckoutBillingAddressData } from './mands-checkout-billing-address.data';\r\nimport { IMandsCheckoutBillingAddressProps } from './mands-checkout-billing-address.props.autogenerated';\r\n\r\nexport interface IProps extends IMandsCheckoutBillingAddressProps, 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 @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(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 });\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 viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\r\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\r\n },\r\n CheckoutBillingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-billing-address', config.className)\r\n },\r\n heading: ,\r\n // 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 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(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n onSave: this._onSubmitAddress,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || '')\r\n });\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 (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n this.stateProvinceInfo = result;\r\n });\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 if (this.isCartContainsItemsForShipping) {\r\n this.isBillingAddressSameAsShipping = true;\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n } else {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n 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\r\n return ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(\r\n cartLine => cartLine.DeliveryMode !== pickupDeliveryModeCode\r\n );\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((count: number, giftCard: GiftCard) => {\r\n return count + (giftCard.Balance || 0);\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 if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\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 };\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 }\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 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 const newBillingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\r\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.props.data.checkout.result.updateBillingAddress({ newBillingAddress });\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, {\r\n ['ThreeLetterISORegionName']: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../../common/components/address-list';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { IAccountManagementAddressViewProps } from './account-management-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address List Component.\n * @param param0 - Root param.\n * @param param0.List - Address list.\n * @param param0.isShowList - Boolean.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressListItem[].\n * @returns - AddressListComponent Node.\n */\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n \n {isShowError && (\n \n {title}\n {message}\n \n )}\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n \n );\n })}\n \n );\n};\n\n/**\n * Address Lists Component.\n * @param param0 - Root param.\n * @param param0.ListAddress - List address.\n * @param param0.heading - List heading.\n * @param param0.isShowEmptyListMessage - Boolean.\n * @param param0.emptyListMessage - Empty list message.\n * @param param0.addButton - Add button.\n * @param param0.primaryAddressList - Primary address.\n * @param param0.otherAddressList - Other address.\n * @returns Address Lists Component Node.\n */\nconst AddressLists: React.FC = ({\n ListAddress,\n heading,\n isShowEmptyListMessage,\n emptyListMessage,\n addButton,\n primaryAddressList,\n otherAddressList\n}) => {\n return (\n \n {heading}\n {isShowEmptyListMessage && emptyListMessage}\n {addButton}\n \n \n \n );\n};\n\n/**\n * AddressAddUpdateComponent.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Account Management Address View Component.\n * @param props - Props.\n * @returns - AccountAddressManagement Module.\n */\nconst AccountManagementAddressView: React.FC = props => {\n const {\n AccountAddressManagement,\n infoMessageBar,\n viewState,\n showAddressList,\n showAddOrUpdateAddress,\n screenReaderNotification\n } = props;\n\n return (\n \n {infoMessageBar}\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {screenReaderNotification}\n \n );\n};\n\nexport default AccountManagementAddressView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport enum AddressItemDisplayType {\n Input = 'Input',\n Dropdown = 'Dropdown',\n Checkbox = 'Checkbox'\n}\n\nexport enum AddressValidationRuleType {\n Required = 'Required',\n Format = 'Format'\n}\n\nexport enum AddressItemType {\n Name = 1001,\n Phone = 1002,\n IsPrimary = 1003,\n AddressTypeValue = 1004,\n ZipCode = 1,\n City = 2,\n County = 3,\n State = 4,\n ThreeLetterISORegionName = 5,\n Street = 6,\n DistrictName = 7,\n StreetNumber = 8,\n BuildingCompliment = 9,\n Postbox = 10,\n House_RU = 21,\n Flat_RU = 22,\n CountryOKSMCode_RU = 23\n}\n\nexport interface IAddressItem {\n name: string;\n type: AddressItemType;\n label: string;\n maxLength: number;\n displayType: AddressItemDisplayType;\n validationRules?: IAddressValidationRule[];\n isNewLine: boolean;\n}\n\nexport interface IAddressValidationRule {\n type: AddressValidationRuleType;\n regEx: string;\n message: string;\n}\n\nexport interface IAddressDropdownsData {\n [index: string]: { key?: string | number; value?: string }[];\n}\n","/*---------------------------------------------------------------------------------------------\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 IAdressAlert {\r\n message?: string;\r\n}\r\n\r\nconst AdressAlert: React.FC = ({ message }) => (\r\n \r\n {message && <>{message}}\r\n \r\n);\r\n\r\nexport default AdressAlert;\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 IAdressDropdown {\r\n id: string;\r\n name: string;\r\n className: string;\r\n value: string;\r\n additionalAddributes?: object;\r\n displayData: { key?: string; value?: string }[];\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst getDropdownItem = (key?: string, value?: string, selectedValue?: string): React.ReactNode => {\r\n const isSelected = (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AdressDropdown: React.FC = ({ id, name, className, value, additionalAddributes, displayData, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressDropdown;\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 IAdressLabel {\r\n id: string;\r\n text: string;\r\n}\r\n\r\nconst AdressLabel: React.FC = ({ id, text }) => (\r\n \r\n);\r\n\r\nexport default AdressLabel;\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 classname from 'classnames';\r\nimport { get } from 'mobx';\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 { AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\r\nimport {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressDropdownsData,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from '../address-format.data';\r\nimport AddressAlertComponent from './address-alert';\r\nimport AddressButtonComponent from './address-button';\r\nimport AdressDropdownComponent from './address-dropdown';\r\nimport AddressErrorMessageComponent from './address-error-message';\r\nimport AddressErrorTitleComponent from './address-error-title';\r\nimport AddressInputComponent from './address-input';\r\nimport AddressLabelComponent from './address-label';\r\n\r\nexport interface IAddressAddInputProps {\r\n isUpdating?: boolean;\r\n hasError?: boolean;\r\n hasExternalSubmitGroup?: boolean;\r\n addressType: AddressType;\r\n addressFormat: IAddressItem[];\r\n defaultCountryRegionId: string;\r\n selectedAddress?: Address;\r\n dropdownDisplayData: IAddressDropdownsData;\r\n resources: IAddressResource;\r\n addressActionResponse?: IAddressResponse;\r\n addAddressHeading?: HeadingData;\r\n editAddressHeading?: HeadingData;\r\n validationError?: object;\r\n onInputChange(event: React.ChangeEvent): void;\r\n onDropdownChange(event: React.ChangeEvent): void;\r\n onSave(): void;\r\n onCancel(): void;\r\n}\r\n\r\nexport interface IAddressError {\r\n AddressError: INodeProps;\r\n title: React.ReactNode;\r\n message: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddItem {\r\n key: string;\r\n AddressItem: INodeProps;\r\n label: React.ReactNode;\r\n alert: React.ReactNode;\r\n input: React.ReactNode;\r\n}\r\n\r\nexport interface IAddressAddUpdateProps {\r\n AddressForm: INodeProps;\r\n heading: React.ReactNode;\r\n items: IAddressAddItem[];\r\n hasError: boolean;\r\n error: IAddressError;\r\n isShowSaveButton: boolean;\r\n saveButton: React.ReactNode;\r\n isShowCancelButton: boolean;\r\n cancelButton: React.ReactNode;\r\n}\r\n\r\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\r\n const requriedRule = (validationRules || []).find(validationRule => {\r\n return validationRule.type === AddressValidationRuleType.Required;\r\n });\r\n\r\n return requriedRule ? { 'aria-required': true } : {};\r\n};\r\n\r\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\r\n const {\r\n addressFormat,\r\n addressType,\r\n dropdownDisplayData,\r\n defaultCountryRegionId,\r\n validationError = {},\r\n onInputChange,\r\n onDropdownChange\r\n } = props;\r\n\r\n // @ts-ignore\r\n return addressFormat.map(addressFormatItem => {\r\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\r\n const errorMessage = get(validationError, addressFormatItem.name);\r\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\r\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\r\n 'address-form__item-invalid': errorMessage\r\n });\r\n let input;\r\n\r\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\r\n input = (\r\n \r\n );\r\n } else {\r\n const displayData = dropdownDisplayData[addressFormatItem.name];\r\n let selectedValue = selectedAddress[addressFormatItem.name];\r\n\r\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\r\n selectedValue = selectedValue || defaultCountryRegionId;\r\n }\r\n input = (\r\n \r\n );\r\n }\r\n\r\n return {\r\n key: addressFormatItem.name,\r\n AddressItem: { className: className },\r\n label: ,\r\n alert: ,\r\n input: input\r\n };\r\n });\r\n};\r\n\r\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\r\n const {\r\n editAddressHeading,\r\n addAddressHeading,\r\n selectedAddress = {},\r\n resources,\r\n hasError,\r\n onCancel,\r\n onSave,\r\n hasExternalSubmitGroup,\r\n isUpdating,\r\n addressActionResponse\r\n } = props;\r\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\r\n\r\n return {\r\n AddressForm: { className: 'msc-address-form' },\r\n heading: heading && ,\r\n items: getAddessItems(selectedAddress, props),\r\n isShowSaveButton: !hasExternalSubmitGroup,\r\n saveButton: (\r\n \r\n ),\r\n isShowCancelButton: !hasExternalSubmitGroup,\r\n cancelButton: (\r\n \r\n ),\r\n hasError: hasError || false,\r\n error: {\r\n AddressError: { className: 'msc-address-form__error' },\r\n title: addressActionResponse && addressActionResponse.errorTitle && (\r\n \r\n ),\r\n message: addressActionResponse && addressActionResponse.errorMessage && (\r\n \r\n )\r\n }\r\n };\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

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

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

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","import { Address } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport enum AddressItemDisplayType {\r\n Input = 'Input',\r\n Dropdown = 'Dropdown'\r\n}\r\n\r\nexport interface IAddressFormatData {\r\n address: Address;\r\n}\r\n\r\nexport enum AddressValidationRuleType {\r\n Required = 'Required',\r\n Format = 'Format'\r\n}\r\n\r\nexport enum AddressItemType {\r\n Name = 1001,\r\n Phone = 1002,\r\n // VSI - Customizatio HouseNumber\r\n HouseNumber = 1005,\r\n // END\r\n ZipCode = 1,\r\n City = 2,\r\n County = 3,\r\n State = 4,\r\n ThreeLetterISORegionName = 5,\r\n Street = 6,\r\n District = 7,\r\n StreetNumber = 8,\r\n BuildingCompliment = 9,\r\n Postbox = 10,\r\n House_RU = 21,\r\n Flat_RU = 22,\r\n CountryOKSMCode_RU = 23,\r\n AddressTypeValue = 1004\r\n}\r\n\r\nexport interface IAddressItem {\r\n name: string;\r\n type: AddressItemType;\r\n label: string;\r\n maxLength: number;\r\n displayType: AddressItemDisplayType;\r\n validationRules?: IAddressValidationRule[];\r\n isNewLine: boolean;\r\n}\r\n\r\nexport interface IAddressValidationRule {\r\n type: AddressValidationRuleType;\r\n regEx: string;\r\n message: string;\r\n}\r\n\r\nexport interface IAddressDropdownsData {\r\n [index: string]: { key?: string; value?: string }[];\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressAlert {\n message?: string;\n}\n\n/**\n * Address alert.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressAlertFunctionComponent: React.FC = (props: IAdressAlert) => {\n const message = props.message;\n return (\n \n {message && <>{message}}\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n const quantity = 1;\n return (\n

\n
\n
{title}
\n
{itemTitle}
\n
\n
\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
\n )\n : isShowQty && (\n
\n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
\n );\n })}\n \n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\n this.state = { shippingGroups: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\n title: headingImages,\n resources: this.props.resources\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n } catch (error) {\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._setShippingAddress(this.addressListSelectedAddress);\n this._updateModuleState();\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n /**\n * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IBusinessAccountAddressViewProps } from './business-account-address';\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {hasError && alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Business Account Address View Component.\n * @param props - Props.\n * @returns - BusinessAccountAddress Module.\n */\nconst BusinessAccountAddressView: React.FC = props => {\n const { BusinessAccountAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n \n \n );\n};\n\nexport default BusinessAccountAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressDropdown {\n id: string;\n name: string;\n className: string;\n value: string | number;\n additionalAddributes?: object;\n displayData: { key?: string | number; value?: string }[];\n onChange(event: React.ChangeEvent): void;\n}\n\nconst getDropdownItem = (key?: string | number, value?: string, selectedValue?: string | number): React.ReactNode => {\n let isSelected: boolean;\n if (typeof key === 'number') {\n isSelected = key === selectedValue;\n } else {\n isSelected = typeof selectedValue === 'string' && (key || '').toLowerCase() === (selectedValue || '').toLowerCase();\n }\n\n return (\n \n );\n};\n\n/**\n * Address dropdown.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDropdownFunctionComponent: React.FC = (props: IAdressDropdown) => {\n const { id: itemId, name, className, value, additionalAddributes, displayData, onChange } = props;\n\n return (\n \n {displayData && displayData.map(item => getDropdownItem(item.key, item.value, value))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\n","/*---------------------------------------------------------------------------------------------\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 IAdressInput {\r\n id?: string;\r\n name?: string;\r\n className: string;\r\n type: string;\r\n value: string;\r\n maxLength?: number;\r\n additionalAddributes?: object;\r\n onChange(event: React.ChangeEvent): void;\r\n}\r\n\r\nconst AdressInput: React.FC = ({ id, name, className, type, value, maxLength, additionalAddributes, onChange }) => (\r\n \r\n);\r\n\r\nexport default AdressInput;\r\n","import {\r\n AddressItemDisplayType,\r\n AddressItemType,\r\n AddressValidationRuleType,\r\n IAddressItem,\r\n IAddressValidationRule\r\n} from './address-format.data';\r\nimport { IAddressResource } from './address-module.data';\r\n\r\n/**\r\n * Address meta data\r\n */\r\nexport class AddressMetaData {\r\n private metaData: IAddressItem[] = [];\r\n private resources: IAddressResource;\r\n private requiredFieldRegEx: string = '\\\\S';\r\n\r\n private zipCodeRegEx: string = '^[a-zA-Z0-9 ]{0,10}$';\r\n private cityNameRegEx: string = '^[A-Za-z ]{0,20}$';\r\n private nameRegEx: string = '^.{0,49}$';\r\n private phoneRegEx: string = '^.{0,20}$';\r\n\r\n private validationErrorMessage = 'Please enter a valid';\r\n private resourcesPrefix: string = 'address';\r\n private maxLengthErrorMessage = `You have reached your maximum limit of characters allowed`;\r\n private maxLength: number = 100;\r\n private requiredFields: AddressItemType[];\r\n\r\n constructor(resources: IAddressResource) {\r\n this.resources = resources || {};\r\n // VSI - Shahzaib Required House Number\r\n this.requiredFields = [\r\n AddressItemType.AddressTypeValue,\r\n AddressItemType.Name,\r\n AddressItemType.ZipCode,\r\n AddressItemType.City,\r\n AddressItemType.State,\r\n AddressItemType.ThreeLetterISORegionName,\r\n AddressItemType.Street,\r\n AddressItemType.HouseNumber\r\n ];\r\n // END\r\n this._init();\r\n }\r\n\r\n public getItemFormat(id: number): IAddressItem | undefined {\r\n return this.metaData.find(item => {\r\n return item.type === id;\r\n });\r\n }\r\n private _init(): void {\r\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\r\n // VSI- Shahzaib :- House Number\r\n this._addItem(AddressItemType.HouseNumber, AddressItemDisplayType.Input);\r\n // END\r\n this._addItem(AddressItemType.Street, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.City, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.ZipCode, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.County, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.State, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.ThreeLetterISORegionName, AddressItemDisplayType.Dropdown);\r\n this._addItem(AddressItemType.District, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.StreetNumber, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.BuildingCompliment, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Postbox, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.House_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.Flat_RU, AddressItemDisplayType.Input);\r\n this._addItem(AddressItemType.CountryOKSMCode_RU, AddressItemDisplayType.Input);\r\n }\r\n\r\n private _addItem(type: AddressItemType, displayType: AddressItemDisplayType): void {\r\n const nameKey = AddressItemType[type].replace('_', '');\r\n const item: IAddressItem = {\r\n type,\r\n displayType,\r\n name: AddressItemType[type],\r\n label: this.resources[`${this.resourcesPrefix}${nameKey}Label`],\r\n maxLength: this.maxLength,\r\n validationRules: this._validationRules(type, nameKey),\r\n isNewLine: true\r\n };\r\n\r\n this.metaData.push(item);\r\n }\r\n\r\n private _validationRules(type: AddressItemType, name: string): IAddressValidationRule[] {\r\n const validationRules: IAddressValidationRule[] = [];\r\n\r\n for (const ruleType of Object.keys(AddressValidationRuleType)) {\r\n const key = `${this.resourcesPrefix}${name}${ruleType}`;\r\n const message = this.resources[`${key}ErrorMessage`];\r\n switch (ruleType) {\r\n case AddressValidationRuleType.Required: {\r\n if (this.requiredFields.find((itemType: AddressItemType) => itemType === type)) {\r\n validationRules.push(this._validationRule(ruleType, this.requiredFieldRegEx, message));\r\n }\r\n break;\r\n }\r\n\r\n case AddressValidationRuleType.Format: {\r\n if (type === AddressItemType.ZipCode) {\r\n validationRules.push(this._validationRule(ruleType, this.zipCodeRegEx, `${this.validationErrorMessage} postcode`));\r\n } else if (type === AddressItemType.City) {\r\n validationRules.push(\r\n this._validationRule(ruleType, this.cityNameRegEx, `${this.validationErrorMessage} city name`)\r\n );\r\n } else if (type === AddressItemType.Name) {\r\n validationRules.push(this._validationRule(ruleType, this.nameRegEx, this.maxLengthErrorMessage));\r\n } else if (type === AddressItemType.Phone) {\r\n validationRules.push(this._validationRule(ruleType, this.phoneRegEx, this.maxLengthErrorMessage));\r\n }\r\n break;\r\n }\r\n default:\r\n }\r\n }\r\n return validationRules;\r\n }\r\n\r\n private _validationRule(type: AddressValidationRuleType, regEx: string, message: string): IAddressValidationRule {\r\n return {\r\n type,\r\n regEx,\r\n message\r\n };\r\n }\r\n}\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked\n };\n\n return (\n \n );\n};\nexport default AddressBillingCheckbox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAddressBillingHeading {\n text: string;\n}\n\nexport const AddressBillingHeading: React.FC = ({ text }) => (\n

{text}

\n);\n\nexport default IAddressBillingHeading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n}\n\nexport default CheckoutBillingAddress;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","import { addAddress, AddressManagementInput, updateAddress, updatePrimaryAddress } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\r\nimport { IAddressResource, IAddressResponse } from './address-module.data';\r\n\r\n/**\r\n *\r\n * Address common\r\n */\r\nexport class AddressCommon {\r\n private context: ICoreContext;\r\n private customerAccountNumber?: string;\r\n private resources: IAddressResource;\r\n private telemetry: ITelemetry;\r\n\r\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry, customerAccountNumber?: string) {\r\n this.context = context;\r\n this.customerAccountNumber = customerAccountNumber;\r\n this.resources = resources;\r\n this.telemetry = telemetry;\r\n }\r\n\r\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\r\n const marketISOCode = market || 'US';\r\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\r\n };\r\n\r\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\r\n return {\r\n errorTitle: resources.addressErrorMessageTitle,\r\n errorMessage: resources.addressGenericErrorMessage\r\n };\r\n };\r\n\r\n public isAuthenticatedFlow = (): boolean => {\r\n return !!this.customerAccountNumber;\r\n };\r\n\r\n public getStateProvinces = async (countryRegionId: string): Promise => {\r\n let response: StateProvinceInfo[] = [];\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\r\n response = await getStateProvinceAction(input, this.context.actionContext);\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n }\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n\r\n public addCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(addAddress, address);\r\n };\r\n\r\n public updateCustomerAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updateAddress, address);\r\n };\r\n\r\n public updateCustomerPrimaryAddress = (address: Address): Promise => {\r\n return this.submitCustomerAddress(updatePrimaryAddress, address);\r\n };\r\n\r\n private submitCustomerAddress = (addressAction: IObservableAction, address: Address): Promise => {\r\n const input = new AddressManagementInput(address, this.customerAccountNumber || '');\r\n return this.execAddressAction(addressAction, input, address);\r\n };\r\n\r\n private execAddressAction = async (\r\n addressAction: IObservableAction,\r\n input: IActionInput | IActionInput[],\r\n address: Address\r\n ): Promise => {\r\n let response: IAddressResponse = {};\r\n if (this.context && this.context.actionContext) {\r\n try {\r\n const addresses = await addressAction(input, this.context.actionContext);\r\n if (addresses.length > 0) {\r\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\r\n }\r\n response.customerAddresses = addresses;\r\n } catch (error) {\r\n if (this.telemetry) {\r\n this.telemetry.error(`Error encountered ${error}`);\r\n }\r\n response = this.parseRetailException(this.resources);\r\n }\r\n }\r\n return Promise.resolve(response);\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * 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 '../mands-c-checkout-shipping-address/common/components/address-add';\r\nimport { IAddressList, IAddressListItem, IAddressListProps } from '../mands-c-checkout-shipping-address/common/components/address-list';\r\nimport { IAddressShowItem, IAddressShowProps } from '../mands-c-checkout-shipping-address/common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from './mands-account-management-address';\r\n\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items &&\r\n items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n
\r\n {items &&\r\n 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 \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {editButton}\r\n {isShowPrimaryButton && primaryButton}\r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst AddressLists: React.FC = ({\r\n ListAddress,\r\n heading,\r\n isShowEmptyListMessage,\r\n emptyListMessage,\r\n addButton,\r\n primaryAddressList,\r\n otherAddressList\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {isShowEmptyListMessage && emptyListMessage}\r\n {addButton}\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\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 return (\r\n \r\n {heading}\r\n {items &&\r\n items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, infoMessageBar } = props;\r\n\r\n return (\r\n \r\n {infoMessageBar}\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\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 IAddressButton {\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n onClick(event: React.MouseEvent): void;\r\n}\r\n\r\nconst AddressButton: React.FC = ({ className, text, ariaLabel, disabled, onClick }) => (\r\n \r\n);\r\n\r\nexport default AddressButton;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressListError {\n Error: INodeProps;\n isShowError: boolean;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressListItem {\n Item: INodeProps;\n key: number;\n error: IAddressListError;\n showItems: IAddressShowProps;\n isShowPrimaryButton: boolean;\n primaryButton: React.ReactNode;\n editButton: React.ReactNode;\n removeButton: React.ReactNode;\n}\n\nexport interface IAddressList {\n List: INodeProps;\n isShowList: boolean;\n heading: React.ReactNode;\n items: IAddressListItem[];\n}\n\nexport interface IAddressListProps {\n ListAddress: INodeProps;\n heading: React.ReactNode;\n isShowEmptyListMessage: boolean;\n emptyListMessage: React.ReactNode;\n addButton: React.ReactNode;\n primaryAddressList: IAddressList;\n otherAddressList: IAddressList;\n}\n\nexport interface IAddressListInputProps {\n isUpdating?: boolean;\n selectedAddress?: Address;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n heading?: HeadingData;\n primaryAddressSectionHeading?: HeadingData;\n otherAddressSectionHeading?: HeadingData;\n addressActionResponse?: IAddressResponse;\n resources: IAddressResource;\n contextRequest: Msdyn365.IRequestContext;\n telemetryContent?: ITelemetryContent;\n handleLineItemHeadingChange?(event: Msdyn365.ContentEditableEvent): void;\n onAddAddress(): void;\n onEditAddress(address?: Address): void;\n onRemoveAddress(address?: Address): void;\n onUpdatePrimaryAddress(address: Address): void;\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\n isAsyncCustomer?: boolean;\n isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\n isEditAsyncCustomerFeatureEnabled?: boolean;\n}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (\n className: string,\n addresses: Address[],\n showPrimaryButton: boolean,\n props: IAddressListInputProps,\n heading?: HeadingData\n): IAddressList => {\n const {\n resources,\n isUpdating,\n addressActionResponse,\n selectedAddress,\n addressFormat,\n onEditAddress,\n onRemoveAddress,\n onUpdatePrimaryAddress,\n addressPurposes,\n telemetryContent\n } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\n isShowList: addresses.length > 0,\n heading: heading && ,\n items: addresses.map(\n (address: Address): IAddressListItem => {\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\n\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\n const isInvalidAsyncState: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n Item: { className: `${className}-list` },\n key: address.RecordId || 0,\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n }),\n error: {\n Error: { className: `${className}-error` },\n isShowError: !!isShowError,\n title: ,\n message: \n },\n isShowPrimaryButton: showPrimaryButton,\n\n primaryButton: (\n {\n onUpdatePrimaryAddress(address);\n }\n }}\n />\n ),\n editButton: (\n {\n onEditAddress(address);\n },\n role: 'link'\n }}\n />\n ),\n removeButton: (\n {\n onRemoveAddress(address);\n },\n role: 'link'\n }}\n />\n )\n };\n }\n )\n };\n};\n\nconst getPrimaryAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, primaryAddressSectionHeading } = props;\n const primaryAddresses = addresses.filter((address: Address) => address.IsPrimary);\n return getAddressList('msc-address-list__primary', primaryAddresses, false, props, primaryAddressSectionHeading);\n};\n\nconst getOtherAddressList = (props: IAddressListInputProps): IAddressList => {\n const { addresses, otherAddressSectionHeading } = props;\n const otherAddresses = addresses.filter((address: Address) => !address.IsPrimary);\n return getAddressList('msc-address-list__primary', otherAddresses, true, props, otherAddressSectionHeading);\n};\n\nexport const AddressList = (props: IAddressListInputProps): IAddressListProps => {\n const { addresses, heading, resources, onAddAddress, telemetryContent, handleLineItemHeadingChange } = props;\n const headingComponent = heading?.text && (\n {\n // Required\n },\n requestContext: props.contextRequest\n }}\n />\n );\n\n // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\n const disableAddButton: boolean =\n props.isEditAsyncCustomerFeatureEnabled || false\n ? false\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (props.isAsyncCustomer || false) &&\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

{resources.addressEmptyListAddressMessage}

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*---------------------------------------------------------------------------------------------\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 * 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 isAsyncCustomerAddressCreationFeatureEnabled?: boolean;\r\n isAsyncCustomer?: boolean;\r\n canRenderAsyncCustomerDataAsUnmodifiable?: boolean;\r\n isEditAsyncCustomerFeatureEnabled?: boolean;\r\n}\r\n\r\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\r\n return ariaLabel.replace('{addressName}', addressName || '');\r\n};\r\n\r\nconst getAddressList = (\r\n className: string,\r\n addresses: Address[],\r\n showPrimaryButton: boolean,\r\n props: IAddressListInputProps,\r\n heading?: HeadingData\r\n): IAddressList => {\r\n const { 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(\r\n (address: Address): IAddressListItem => {\r\n const isSelectedAddress = selectedAddress && selectedAddress.RecordId === address.RecordId;\r\n const isShowError = isSelectedAddress && errorTitle && errorMessage;\r\n // Disable 'primary', 'edit', and 'remove' buttons if the customer IS EITHER async OR async address creation feature is enabled and edit async customer feature is disabled.\r\n // Conversely, these buttons can only be enabled when the customer is NOT async AND the address creation feature is disabled.\r\n const isInvalidAsyncState: boolean =\r\n props.isEditAsyncCustomerFeatureEnabled || false\r\n ? false\r\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (props.isAsyncCustomer || false || props.isAsyncCustomerAddressCreationFeatureEnabled || false);\r\n\r\n return {\r\n Item: { className: `${className}-list` },\r\n key: address.RecordId || 0,\r\n showItems: AddressShow({\r\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\r\n address: address\r\n }),\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 {\r\n onUpdatePrimaryAddress(address);\r\n }\r\n }}\r\n />\r\n ),\r\n editButton: (\r\n {\r\n onEditAddress(address);\r\n }\r\n }}\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 // IF the 'Edit async customer' feature is enabled. we won't be disabling the button in this scenario.\r\n // ELSE disable the 'Add' button only when the customer is async AND the 'Async Address Creation' feature is disabled.\r\n const disableAddButton: boolean =\r\n props.isEditAsyncCustomerFeatureEnabled || false\r\n ? false\r\n : (props.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n (props.isAsyncCustomer || false) &&\r\n !(props.isAsyncCustomerAddressCreationFeatureEnabled || false);\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 * 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 { Address, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { AddressCommon } from '../mands-c-checkout-shipping-address/common/address-common';\r\nimport { AddressFormat } from '../mands-c-checkout-shipping-address/common/address-format';\r\nimport { AddressItemType } from '../mands-c-checkout-shipping-address/common/address-format.data';\r\nimport { AddressMetaData } from '../mands-c-checkout-shipping-address/common/address-meta-data';\r\nimport {\r\n AddressOperation,\r\n AddressType,\r\n IAddressResource,\r\n IAddressResponse\r\n} from '../mands-c-checkout-shipping-address/common/address-module.data';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../mands-c-checkout-shipping-address/common/components/address-add';\r\nimport { AddressList, IAddressListProps } from '../mands-c-checkout-shipping-address/common/components/address-list';\r\nimport { IMandsAccountManagementAddressData } from './mands-account-management-address.data';\r\nimport { IMandsAccountManagementAddressProps } from './mands-account-management-address.props.autogenerated';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n// import { AutoSuggest } from '../mands-c-checkout-billing-address/common/address-autosuggest';\r\n\r\nexport interface IAccountManagementAddressViewState {\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\nexport interface IAccountManagementAddressViewProps\r\n extends React.Component> {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: IAccountManagementAddressViewState;\r\n AccountAddressManagement: IModuleProps;\r\n isUpdating: boolean;\r\n showAddressList: IAddressListProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n infoMessageBar?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Address component\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountManagementAddress extends React.Component> {\r\n @observable private currentOperation: AddressOperation;\r\n @observable private selectedAddress?: Address;\r\n @observable private countryRegionId: string = 'GBR';\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n @observable private customerAddresses: Address[];\r\n @observable private addUpdateAddress: Address & { HouseNumber?: string };\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 private readonly asyncCustAddressCreationFeatureName: string = 'Dynamics.AX.Application.RetailAsyncAddressCreationFeature';\r\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\r\n private asyncCustomerAddressCreationFeatureIsEnabled?: boolean = false;\r\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\r\n // private autoSuggest?: AutoSuggest;\r\n constructor(props: IMandsAccountManagementAddressProps) {\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(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, resources, data } = this.props;\r\n const customerInformation = data.customerInformation.result;\r\n // Set the feature state value for 'Async Customer Address Creation'.\r\n this.asyncCustomerAddressCreationFeatureIsEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.asyncCustAddressCreationFeatureName)?.IsEnabled || false;\r\n this.isEditAsyncCustomerFeatureEnabled =\r\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\r\n const viewProps = {\r\n ...this.props,\r\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\r\n !this.isEditAsyncCustomerFeatureEnabled &&\r\n (customerInformation?.IsAsyncCustomer || false) && (\r\n \r\n ),\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 /**\r\n * On Suggestion Selected Function.\r\n * @param result - Microsoft.Maps.ISuggestionResult.\r\n */\r\n // @action\r\n // private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n // this._clearAddressFields();\r\n // const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n // set(this.addUpdateAddress, { Street: '' });\r\n // set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n // set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n // set(this.addUpdateAddress, { City: address.City });\r\n // set(this.addUpdateAddress, { State: address.State });\r\n // set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n // set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n // // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n // setTimeout(() => {\r\n // set(this.addUpdateAddress, { Street: address.Street });\r\n // }, 0);\r\n // };\r\n /**\r\n * Clear Address Fields.\r\n */\r\n // @action\r\n // private readonly _clearAddressFields = (): void => {\r\n // const addressFormatItem = this.addressFormat.getAddressFormat(\r\n // this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n // );\r\n // addressFormatItem.forEach(format => {\r\n // if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n // this.addressFormat[format.name] = '';\r\n // }\r\n // });\r\n // this._clearValidation();\r\n // };\r\n /**\r\n * Clear Validation Function.\r\n */\r\n // @action\r\n // private readonly _clearValidation = (): void => {\r\n // this.validationError = {};\r\n // };\r\n\r\n private _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n onSave: this._onAddressAddUpdateSubmit,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n private _renderListAddress = (): IAddressListProps => {\r\n const { config } = this.props;\r\n\r\n return AddressList({\r\n isUpdating: this.isUpdating,\r\n selectedAddress: this.selectedAddress,\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n 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 isAsyncCustomerAddressCreationFeatureEnabled: this.asyncCustomerAddressCreationFeatureIsEnabled || false,\r\n isAsyncCustomer: this.props.data.customerInformation.result?.IsAsyncCustomer || false,\r\n canRenderAsyncCustomerDataAsUnmodifiable: this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false,\r\n isEditAsyncCustomerFeatureEnabled: this.isEditAsyncCustomerFeatureEnabled\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 // TODO: Need to add code for when user try to add / update address HouseNumber customization.\r\n this.addUpdateAddress.Street = `${this.addUpdateAddress.HouseNumber} | ${this.addUpdateAddress.Street}`;\r\n delete this.addUpdateAddress.HouseNumber;\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n private _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n set(this.addUpdateAddress, { ['ThreeLetterISORegionName']: countryRegionId });\r\n };\r\n\r\n private _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n // tslint:disable-next-line:no-floating-promises\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request && request.channel && request.channel.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n private _updateCurrentOperation = (operation: AddressOperation) => {\r\n this.currentOperation = operation;\r\n };\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 // TODO: Need to do customization for update address when user clicks on edit button.\r\n if (this.addUpdateAddress.Street?.split('|') && this.addUpdateAddress.Street?.split('|').length > 1) {\r\n set(this.addUpdateAddress, { ['HouseNumber']: this.addUpdateAddress.Street?.split('|')[0]?.trim() });\r\n this.addUpdateAddress.Street = this.addUpdateAddress.Street?.split('|')[1]?.trim();\r\n }\r\n // END\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport { AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule } from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private readonly countryRegionsInfo?: CountryRegionInfo[];\n\n private readonly addressPurposes?: AddressPurpose[];\n\n private readonly addressMetaData: AddressMetaData;\n\n constructor(countryRegionsInfo: CountryRegionInfo[], addressMetaData: AddressMetaData, addressPurposes: AddressPurpose[]) {\n this.countryRegionsInfo = countryRegionsInfo;\n this.addressMetaData = addressMetaData;\n this.addressPurposes = addressPurposes;\n }\n\n public getAddressFormat(countryRegionId: string): IAddressItem[] {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n if (countryRegionInfo) {\n return this._getAddressDisplayFormat(countryRegionInfo);\n }\n return [];\n }\n\n public getCountryFormat(): { key?: string; value?: string }[] {\n return (this.countryRegionsInfo || []).map(countryRegion => {\n return {\n key: countryRegion.CountryRegionId,\n value: countryRegion.ShortName\n };\n });\n }\n\n public getStateFormat(stateProvinceInfo?: StateProvinceInfo[]): { key?: string; value?: string }[] {\n return (stateProvinceInfo || []).map(state => {\n return {\n key: state.StateId,\n value: state.StateName\n };\n });\n }\n\n public getAddressTypeFormat(): { key?: number; value?: string }[] {\n return (this.addressPurposes || []).map(addressPurpose => {\n return {\n key: addressPurpose.AddressType,\n value: addressPurpose.Description\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (\n stateDefaultSelectionText: string,\n stateProvinceInfo?: StateProvinceInfo[]\n ): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (\n address: Address,\n validationError: Address,\n countryRegionId: string,\n propertyName?: string\n ): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat(address.ThreeLetterISORegionName || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of addressFormatItem.validationRules || []) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\n private readonly _validateRegEx = (address: Address, propertyName: string, validationRule: IAddressValidationRule): boolean => {\n if (validationRule.regEx && validationRule.regEx.length > 0) {\n const regex = new RegExp(validationRule.regEx);\n return regex.test((get(address, propertyName) as string) || '');\n }\n return true;\n };\n\n private _getCountryRegionInfo(countryRegionId: string): CountryRegionInfo | undefined {\n return (this.countryRegionsInfo || []).find(countryRegion => {\n return (countryRegion.CountryRegionId || '').toLowerCase() === countryRegionId.toLowerCase();\n });\n }\n\n private _getAddressDisplayFormat(countryRegionInfo: CountryRegionInfo): IAddressItem[] {\n const addressDisplayItem: IAddressItem[] = [];\n\n if (countryRegionInfo && countryRegionInfo.AddressFormatLines) {\n const AddressTypeItem = this._extendAddressDisplayFormat(AddressItemType.AddressTypeValue, true);\n if (AddressTypeItem) {\n addressDisplayItem.push(AddressTypeItem);\n }\n\n const nameDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Name, true);\n if (nameDisplayItem) {\n addressDisplayItem.push(nameDisplayItem);\n }\n\n countryRegionInfo.AddressFormatLines.forEach(formatLine => {\n if (formatLine.AddressComponentNameValue) {\n const addressItem = this.addressMetaData.getItemFormat(formatLine.AddressComponentNameValue);\n if (addressItem) {\n addressItem.isNewLine = formatLine.NewLine || false;\n addressDisplayItem.push(addressItem);\n }\n }\n });\n\n const phoneDisplayItem = this._extendAddressDisplayFormat(AddressItemType.Phone, false);\n if (phoneDisplayItem) {\n addressDisplayItem.push(phoneDisplayItem);\n }\n\n const isPrimaryDisplayItem = this._extendAddressDisplayFormat(AddressItemType.IsPrimary, false);\n if (isPrimaryDisplayItem) {\n addressDisplayItem.push(isPrimaryDisplayItem);\n }\n }\n\n return addressDisplayItem;\n }\n\n private _extendAddressDisplayFormat(type: AddressItemType, isNewLine: boolean): IAddressItem | undefined {\n const addressItem = this.addressMetaData.getItemFormat(type);\n if (addressItem) {\n addressItem.isNewLine = isNewLine;\n }\n return addressItem;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address,\n AddressPurpose,\n CountryRegionInfo,\n StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress,\n AddressManagementInput,\n ArrayExtensions,\n updateAddress,\n updatePrimaryAddress\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { getAddressPurposesAction, GetAddressPurposesInput } from '../actions/get-address-purposes';\nimport { getStateProvinceAction, GetStateProvincesInput } from '../actions/get-state-provinces';\nimport { IAddressResource, IAddressResponse } from './address-module.data';\n\n/**\n *\n * Address common.\n */\nexport class AddressCommon {\n private readonly context: ICoreContext;\n\n private readonly resources: IAddressResource;\n\n private readonly telemetry: ITelemetry;\n\n constructor(context: ICoreContext, resources: IAddressResource, telemetry: ITelemetry) {\n this.context = context;\n this.resources = resources;\n this.telemetry = telemetry;\n }\n\n public getDefaultCountryRegionId = (countryRegionId: string, countryRegions: CountryRegionInfo[], market?: string): string => {\n const marketISOCode = market || 'US';\n const currentCountryRegion = countryRegions.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n return (currentCountryRegion && currentCountryRegion.CountryRegionId) || countryRegionId;\n };\n\n public parseRetailException = (resources: IAddressResource): IAddressResponse => {\n return {\n errorTitle: resources.addressErrorMessageTitle,\n errorMessage: resources.addressGenericErrorMessage\n };\n };\n\n public isAuthenticatedFlow = (): boolean => {\n return this.context.request.user.isAuthenticated;\n };\n\n public getStateProvinces = async (countryRegionId: string): Promise => {\n let response: StateProvinceInfo[] = [];\n if (this.context && this.context.actionContext) {\n try {\n const input = new GetStateProvincesInput(countryRegionId, this.context.request.apiSettings);\n response = await getStateProvinceAction(input, this.context.actionContext);\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get state provinces');\n }\n }\n }\n return Promise.resolve(response);\n };\n\n // For any address, check for common requried field else treat it as invalid\\empty address.\n public isEmpty = (address: Address): boolean => {\n if (address && address.ThreeLetterISORegionName && (address.State || address.City)) {\n return false;\n }\n\n return true;\n };\n\n public addCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(addAddress, address);\n };\n\n public updateCustomerAddress = async (address: Address): Promise => {\n await this.updateLogisticsLocationRoleRecordId(address);\n return this.submitCustomerAddress(updateAddress, address);\n };\n\n public updateCustomerPrimaryAddress = async (address: Address): Promise => {\n return this.submitCustomerAddress(updatePrimaryAddress, address);\n };\n\n private readonly submitCustomerAddress = async (\n addressAction: IObservableAction,\n address: Address\n ): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (\n addressAction: IObservableAction,\n input: IActionInput | IActionInput[],\n address: Address\n ): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\n * Function to get the address purposes and update the LogisticsLocationRoleRecordId to update the address type.\n * @param address - Address object.\n * @returns Returns void.\n */\n private readonly updateLogisticsLocationRoleRecordId = async (address: Address): Promise => {\n let addressPurposes: AddressPurpose[] = [];\n try {\n const input: GetAddressPurposesInput = new GetAddressPurposesInput(this.context.request.apiSettings);\n addressPurposes = await getAddressPurposesAction(input, this.context.actionContext);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- Supparsing the any type for error.\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to get address purposes');\n }\n if (ArrayExtensions.hasElements(addressPurposes)) {\n const addressPurpose: AddressPurpose | undefined = addressPurposes.find(\n purpose => purpose.AddressType === address.AddressTypeValue\n );\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport withModuleState from './with-module-state';\n\nexport * from './module-state';\nexport * from './module-state.data';\n\nexport { withModuleState };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressCheckbox {\n id?: string;\n name?: string;\n className: string;\n type: string;\n isChecked: boolean;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address checkbox.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressCheckboxFunctionComponent: React.FC = (props: IAdressCheckbox) => {\n const {\n id: itemId,\n name,\n className,\n type,\n isChecked,\n additionalAddributes,\n telemetryContent,\n autoFocus: shouldBeAutoFocused,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressCheckboxFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Heading as HeadingData } from '@msdyn365-commerce-modules/data-types';\nimport { Heading, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { get } from 'mobx';\nimport * as React from 'react';\n\nimport {\n AddressItemDisplayType,\n AddressItemType,\n AddressValidationRuleType,\n IAddressDropdownsData,\n IAddressItem,\n IAddressValidationRule\n} from '../address-format.data';\nimport { AddressType, IAddressResource, IAddressResponse } from '../address-module.data';\nimport AddressAlertComponent from './address-alert';\nimport AddressButtonComponent from './address-button';\nimport AdressCheckboxComponent from './address-checkbox';\nimport AdressDropdownComponent from './address-dropdown';\nimport AddressErrorMessageComponent from './address-error-message';\nimport AddressErrorTitleComponent from './address-error-title';\nimport AddressInputComponent from './address-input';\nimport AddressLabelComponent from './address-label';\n\nexport interface IAddressAddInputProps {\n isUpdating?: boolean;\n hasError?: boolean;\n hasExternalSubmitGroup?: boolean;\n addressType: AddressType;\n addressFormat: IAddressItem[];\n defaultCountryRegionId: string;\n defaultAddressType: number;\n selectedAddress?: Address;\n dropdownDisplayData: IAddressDropdownsData;\n resources: IAddressResource;\n addressActionResponse?: IAddressResponse;\n addAddressHeading?: HeadingData;\n editAddressHeading?: HeadingData;\n validationError?: object;\n telemetryContent?: ITelemetryContent;\n shouldAutoFocus?: boolean;\n onInputChange(event: React.ChangeEvent): void;\n onDropdownChange(event: React.ChangeEvent): void;\n onSave?(): void;\n onCancel?(): void;\n}\n\nexport interface IAddressError {\n AddressError: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAddressAddItem {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAddressAddUpdateProps {\n AddressForm: INodeProps;\n heading: React.ReactNode;\n items: IAddressAddItem[];\n hasError: boolean;\n error: IAddressError;\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getRequriedAttribute = (validationRules?: IAddressValidationRule[]): object => {\n const requriedRule = (validationRules || []).find(validationRule => {\n return validationRule.type === AddressValidationRuleType.Required;\n });\n\n return requriedRule ? { 'aria-required': true } : {};\n};\n\nconst getAddessItems = (selectedAddress: Address, props: IAddressAddInputProps): IAddressAddItem[] => {\n const {\n addressFormat,\n addressType,\n dropdownDisplayData,\n defaultCountryRegionId,\n defaultAddressType,\n validationError = {},\n onInputChange,\n onDropdownChange,\n shouldAutoFocus\n } = props;\n\n return addressFormat.map((addressFormatItem, index) => {\n const elementId = `${addressType.toLowerCase()}_address${addressFormatItem.name.toLowerCase()}`;\n const errorMessage = get(validationError, addressFormatItem.name);\n const className = classname('msc-address-form__item', `msc-address-form__item-${addressFormatItem.name.toLowerCase()}`, {\n 'msc-address-form__item-newline': addressFormatItem.isNewLine,\n 'address-form__item-invalid': errorMessage\n });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const {\n editAddressHeading,\n addAddressHeading,\n selectedAddress = {},\n resources,\n hasError,\n onCancel,\n onSave,\n hasExternalSubmitGroup,\n isUpdating,\n addressActionResponse,\n telemetryContent\n } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && (\n \n ),\n message: addressActionResponse && addressActionResponse.errorMessage && (\n \n )\n }\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAdressErrorMessage {\n message: string;\n}\n\n/**\n * Address error message.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressErrorMessageFunctionComponent: React.FC = (props: IAdressErrorMessage) => {\n const { message } = props;\n\n return

{message}

;\n};\n\nexport default AddressErrorMessageFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\n
\n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\n","/*---------------------------------------------------------------------------------------------\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 IAdressErrorMessage {\r\n message: string;\r\n}\r\n\r\nconst AdressErrorMessage: React.FC = ({ message }) =>

{message}

;\r\n\r\nexport default AdressErrorMessage;\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 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 = ({ isNewLine, isShowLabel, labelText, name, value }) => {\r\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\r\n const isEmpty = !(value && value.length > 0);\r\n const mainClass = isShowLabel\r\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\r\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\r\n return (\r\n \r\n {isShowLabel && (\r\n <>\r\n {labelText}\r\n \r\n \r\n )}\r\n {value}\r\n \r\n );\r\n};\r\n\r\nexport default 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 })\r\n };\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAdressInput {\n id?: string;\n name?: string;\n className: string;\n type: string;\n value: string;\n maxLength?: number;\n autoFocus?: boolean;\n additionalAddributes?: object;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Address input.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressInputFunctionComponent: React.FC = (props: IAdressInput) => {\n const {\n id: itemId,\n name,\n className,\n type,\n value,\n maxLength,\n additionalAddributes,\n autoFocus: shouldUseAutoFocus,\n telemetryContent,\n onChange\n } = props;\n\n const payLoad = getPayloadObject('click', telemetryContent!, name!);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default AddressInputFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classname from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddressDetailItem {\n isNewLine: boolean;\n isShowLabel: boolean;\n labelText: string;\n name: string;\n value: string;\n}\n\n/**\n * Address details item.\n * @param props - Configuration of the functional component.\n * @returns React functional component.\n */\nexport const AddressDetailItemFunctionComponent: React.FC = (props: IAddressDetailItem) => {\n const { isNewLine, isShowLabel, labelText, name, value } = props;\n\n const className = `msc-address-detail__item msc-address-detail__item-${name.toLowerCase()}`;\n const isEmpty = !(value && value.length > 0);\n const mainClass = isShowLabel\n ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}`\n : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {isShowLabel && (\n <>\n {labelText}\n \n \n )}\n {value}\n \n );\n};\n\nexport default AddressDetailItemFunctionComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address } from '@msdyn365-commerce/retail-proxy';\nimport { Heading } from '@msdyn365-commerce-modules/data-types';\n\nexport enum AddressOperation {\n Add = 'Add',\n Show = 'Show',\n Update = 'Update',\n List = 'List'\n}\n\nexport enum AddressType {\n Shipping = 'Shipping',\n Billing = 'Billing',\n Invoice = 'Invoice',\n Company = 'Company'\n}\n\nexport interface IDropdownDisplayData {\n [index: string]: { key?: string; value?: string }[];\n}\n\nexport interface IAddressResponse {\n errorTitle?: string;\n errorMessage?: string;\n customerAddresses?: Address[];\n address?: Address;\n}\n\nexport interface IAddressConfig {\n heading?: Heading;\n primaryAddressSectionHeading?: Heading;\n otherAddressSectionHeading?: Heading;\n addAddressHeading?: Heading;\n editAddressHeading?: Heading;\n}\n\nexport interface IAddressResource {\n addressChangeCheckboxAriaLabel: string;\n addressAddButtonText: string;\n addressAddButtonAriaLabel: string;\n addressPrimaryButtonText: string;\n addressPrimaryButtonAriaLabel: string;\n addressEditButtonText: string;\n addressEditButtonAriaLabel: string;\n addressRemoveButtonText: string;\n addressRemoveButtonAriaLabel: string;\n addressSaveButtonText: string;\n addressSaveButtonAriaLabel: string;\n addressCancelButtonText: string;\n addressCancelButtonAriaLabel: string;\n addressStateDefaultSelectionText: string;\n addressNameLabel: string;\n addressNameLabelOptional?: string;\n addressNameRequiredErrorMessage: string;\n addressPhoneLabel: string;\n addressPhoneLabelOptional?: string;\n addressPhoneRequiredErrorMessage: string;\n addressZipCodeLabel: string;\n addressZipCodeLabelOptional?: string;\n addressZipCodeRequiredErrorMessage: string;\n addressCityLabel: string;\n addressCityLabelOptional?: string;\n addressCityRequiredErrorMessage: string;\n addressCountyLabel: string;\n addressCountyLabelOptional?: string;\n addressCountyRequiredErrorMessage: string;\n addressStateLabel: string;\n addressStateLabelOptional?: string;\n addressStateRequiredErrorMessage: string;\n addressThreeLetterISORegionNameLabel: string;\n addressThreeLetterISORegionNameLabelOptional?: string;\n addressThreeLetterISORegionNameRequiredErrorMessage: string;\n addressStreetRequiredErrorMessage: string;\n addressDistrictLabel: string;\n addressDistrictLabelOptional?: string;\n addressDistrictNameLabel: string;\n addressDistrictNameLabelOptional?: string;\n addressDistrictRequiredErrorMessage: string;\n addressStreetNumberLabel: string;\n addressStreetNumberLabelOptional?: string;\n addressStreetNumberRequiredErrorMessage: string;\n addressBuildingComplimentLabel: string;\n addressBuildingComplimentLabelOptional?: string;\n addressBuildingComplimentRequiredErrorMessage: string;\n addressPostboxLabel: string;\n addressPostboxLabelOptional?: string;\n addressPostboxRequiredErrorMessage: string;\n addressHouseRULabel: string;\n addressHouseRULabelOptional?: string;\n addressHouseRURequiredErrorMessage: string;\n addressFlatRULabel: string;\n addressFlatRULabelOptional?: string;\n addressFlatRURequiredErrorMessage: string;\n addressCountryOKSMCodeRULabel: string;\n addressCountryOKSMCodeRURequiredErrorMessage: string;\n addressErrorMessageTitle: string;\n addressGenericErrorMessage: string;\n addressEmptyListAddressMessage: string;\n removeAddressNotification?: string;\n}\n"],"sourceRoot":""}