{"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/b2b-account-management-address/b2b-account-management-address.tsx?f1bb","webpack:///./src/themes/gardner-theme/views/invoices-list.view.tsx?057a","webpack:///src/modules/tab-item/tab-item.view.tsx?76f0","webpack:///src/common/address-autosuggest.ts?520f","webpack:///src/common/components/address-button.tsx?e3b2","webpack:///src/modules/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?4f55","webpack:///src/modules/b2b-requests-tile/b2b-requests-tile.tsx?ce42","webpack:///./src/modules/b2b-checkout-billing-address/b2b-checkout-billing-address.view.tsx?4313","webpack:///src/modules/footer-category/footer-category.tsx?b7b8","webpack:///src/modules/adventureworks/views/components/carticon.component.tsx?3d75","webpack:///src/modules/adventureworks/views/components/promocode.component.tsx?6e07","webpack:///src/modules/business-account-address/index.ts?0f93","webpack:///src/common/components/address-error-title.tsx?a723","webpack:///src/modules/business-account-address/business-account-address.tsx?d57d","webpack:///src/common/components/address-label.tsx?9ddc","webpack:///src/common/components/address-show.tsx?376c","webpack:///src/modules/subscribe/subscribe.view.tsx?c40a","webpack:///src/common/address-meta-data.ts?d29d","webpack:///../../src/index.ts?0e3e","webpack:///src/modules/fabrikam/views/search-result-container.view.tsx?f8ea","webpack:///src/modules/account-management-address/account-management-address.view.tsx?739e","webpack:///src/common/address-format.data.ts?da4c","webpack:///src/modules/tab/tab.tsx?d713","webpack:///src/modules/checkout-billing-address/index.ts?56c1","webpack:///./src/modules/eve-checkout-shipping-address/eve-checkout-shipping-address.view.tsx?2b0c","webpack:///../../../src/module-state-manager/with-module-state.tsx?61ca","webpack:///src/common/components/address-billing-checkbox.tsx?1b2a","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/modules/checkout-shipping-address/index.ts?8a8c","webpack:///../../src/checkout-state.ts?acd8","webpack:///src/modules/footer-category/footer-category.view.tsx?26a5","webpack:///src/modules/business-account-address/business-account-address.view.tsx?dcd1","webpack:///./src/themes/gardner-theme-b2c/views/invoices-list.view.tsx?c86d","webpack:///src/common/components/address-dropdown.tsx?3e73","webpack:///src/modules/subscribe/subscribe.tsx?0278","webpack:///src/modules/tab-item/tab-item.tsx?d2c1","webpack:///src/modules/fabrikam/views/header.view.tsx?1cde","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/b2b-checkout-billing-address/b2b-checkout-billing-address.tsx?6a6b","webpack:///src/modules/tab/tab.view.tsx?701e","webpack:///src/common/components/address-list.tsx?8cb2","webpack:///src/common/address-format.ts?400b","webpack:///src/common/address-common.ts?0583","webpack:///src/modules/tile-list-item/tile-list-item.view.tsx?0144","webpack:///src/modules/account-loyalty/account-loyalty.tsx?82db","webpack:///src/modules/b2b-requests-tile/b2b-requests-tile.view.tsx?949e","webpack:///src/modules/account-management-address/index.ts?5d50","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/index.ts?c6ae","webpack:///./src/modules/eve-checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?d761","webpack:///./src/modules/eve-checkout-shipping-address/eve-checkout-shipping-address.tsx?887e","webpack:///src/common/components/address-error-message.tsx?c7bd","webpack:///./src/modules/b2b-account-management-address/b2b-account-management-address.view.tsx?6b81","webpack:///src/modules/tile-list-item/components/links.tsx?e54f","webpack:///src/modules/tile-list-item/tile-list-item.tsx?99bb","webpack:///src/modules/account-loyalty/components/account-loyalty-small-components.tsx?9694","webpack:///src/modules/account-loyalty/account-loyalty.view.tsx?06f4","webpack:///./src/themes/gardner-theme/views/checkout-section-container.view.tsx?30c1","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","asyncCustomerAddressCreationFeatureIsEnabled","_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","_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","showAddress","showAddressSelect","cartLineImages","Module","isShowAddress","getInput","index","onAddressOptionChange","ichecked","RecordId","additionalAttributes","length","addressChangeCheckboxAriaLabel","AddressInputComponent","toString","onChange","additionalAddributes","getAddressSelectItems","hasExternalSubmitGroup","AddressButtonComponent","addressAddButtonText","ariaLabel","addressAddButtonAriaLabel","onClick","addressSaveButtonText","addressSaveButtonAriaLabel","addressCancelButtonText","addressCancelButtonAriaLabel","filter","InvoiceListView","header","content","invoiceRequestModal","pagination","MsDyn365","isBrowser","linksElements","document","querySelectorAll","console","log","l","setAttribute","_renderTabItemContent","TabItemView","tabItemType","tabSlots","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","TabItemType","TabContent","tabItemContent","TabHeader","countryCode","defaultLanguageId","inputId","containerId","selectedSuggestionCallback","autoSuggestManager","Microsoft","Maps","loadModule","callback","_document$querySelect","AutosuggestManager","attachAutosuggest","querySelector","_document$querySelect2","errorCallback","debug","credentials","bingMapsApiKey","setOptions","_this$autoSuggestMana","_this$autoSuggestMana2","detachAutosuggest","dispose","lang","AddressButtonFunctionComponent","disabled","isDisabled","role","payLoad","getPayloadObject","attributes","getTelemetryAttributes","B2bRequestsTileLinks","links","onTextChange","ArrayExtensions","hasElements","editableLinks","_mapEditableLinks","editProps","linkdata","link","contentAction","etext","linkText","linkUrl","destinationUrl","openInNewTab","additionalProperties","B2bRequestsTile","handleHeadingChange","handleLinkTextChange","linkIndex","_data$customerInforma","IsB2b","viewProps","b2bRequestsTile","onEdit","CheckoutBillingAddressView","CheckoutBillingAddress","isError","FooterCategory","slots","viewprops","categories","FooterList","FooterListItem","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","totalItemsInCart","qtyLabel","style","visibility","CartIconComponent","msdyn365Commerce","createComponentOverride","component","PromoCode","_onInputChangeHandler","setState","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","catch","failedToAddPromoCodeErrorText","_onSubmitHandler","preventDefault","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","onSubmit","placeholder","Button","_removePromotion","_event$currentTarget$","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","TelemetryConstant","ApplyPromoCode","promoCodeHeadingText","AddressErrorTitleFunctionComponent","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","AddressLabelFunctionComponent","id","itemId","htmlFor","addressTypeValue","AddressDetailItemComponent","isNewLine","isShowLabel","Phone","labelText","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","subscribe","subscribeContainer","subscribeForm","emailInput","submitButton","submitButtonLabelText","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","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainerView","_props$context$action","SearchResultContainer","products","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","errorMessage","FeatureSearchContainer","similarLookProduct","query","recommendation","isShowList","Item","isShowPrimaryButton","primaryButton","editButton","removeButton","Error","isShowError","AddressLists","ListAddress","isShowEmptyListMessage","emptyListMessage","primaryAddressList","otherAddressList","_ref4","AccountManagementAddressView","Tab","tabIndexQuery","_refHandler","activeLink","_onClick","e","activeTabState","activeContentIndex","tabId","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","window","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","activeTab","queryTabIndex","indexOf","arr","split","Number","parseInt","_getTabHeader","bind","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","componentDidUpdate","dataActionTabId","focus","selected","contentID","getContentID","tabIndex","onKeyDown","ref","isSelected","itemIndex","paramName","paramValue","url","URL","location","href","requestUrl","params","URLSearchParams","search","decodeURIComponent","withModuleState","WrappedComponent","_super","ModuleState","_this","call","initializeState","_b","typeName","states","getModuleStates","updateModuleStates","__assign","_a","hasInitialized","isCancellable","isSubmitContainer","childIds","getModuleStateManager","moduleState","get","validate","isReady","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","setHasError","onReady","onUpdating","onPending","onSkip","onDisable","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","init","moduleStates","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","enableControl","__extends","prototype","AddressBillingCheckbox","isChecked","AddressAlertFunctionComponent","CheckoutPickupCartLines","moduleClassName","cartLines","itemTitle","isMobileCheck","variant","VariantType","Browser","gridSettings","xs","w","sm","md","lg","xl","isMobileView","cartLine","isShowQty","quantity","lineId","Image","imageProps","productQuantityInfo","altText","defaultImageSettings","viewports","q","h","lazyload","quality","_data$featureState$re2","addressListSelectedAddress","multiplePickupStoreSwitchName","retailMultiplePickUpOptionEnabled","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","_this$props$data$chec","_getProductsByCartLines","checkout","checkoutCart","ChannelId","line","product","x","ProductId","shippingGroups","formatAddress","_data$featureState$re","_this$props$data$chec2","_this$props$data$chec3","CartLines","_isDelivery","_isNotPickupMode","DeliveryMode","FulfillmentStoreId","deliveryMode","_this$props$context$r","_featureState$result","pickupDeliveryModeCode","PickupDeliveryModeCode","channelDeliveryOptionConfig","_channelDeliveryOptio","pickupDeliveryMode","PickupDeliveryModeCodes","pickupMode","channelId","productInputs","ProductInput","apiSettings","getSimpleProducts","onSaveHandler","onCancelHandler","onCancelButtonHandler","_renderSelectAddress","onAddAddressHandler","_onAddressOptionChange","_onSelectAddress","addressRecordId","_isNewAddress","_updateModuleState","newAddress","twoLetterIsoRegionName","_getDefaultAddress","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","tokenizedPaymentCard","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","Address2","Zip","expressAddress","countryRegion","country","_country$ISOCode","ISOCode","toLowerCase","CountryRegionId","_initModuleState","_canShip","checkoutState","defaultAddress","ShippingAddress","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","isEmpty","Show","_setShippingAddress","updateHasShippingAddress","newHasShippingAddress","shippingAddress","_checkout$result$chec","_checkout$result$chec2","emailDeliveryModeCode","EmailDeliveryModeCode","hasInvoiceLine","_channelDeliveryOptio2","newShippingAddress","updateShippingAddress","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","_this$props$data$chec4","_this$props$data$chec5","_address","_featureState$result2","headingImages","itemsText","singleItemText","imageSettings","cartlines","_line$cartLine$LineId","_line$product","_line$product$Primary","_line$product2","_line$product3","_line$cartLine$Quanti","LineId","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","loadFailureBehavior","Quantity","itemText","lineImageProps","isRetailMultiplePickUpOptionEnabled","_renderShowAddress","showAddressSelectHandler","showAddOrUpdateAddressHandler","_this$props$data$chec6","computed","CheckoutState","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateBillingAddress","newBillingAddress","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","giftCard","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","FooterCategoryView","createElement","BusinessAccountAddressView","AddressDropdownFunctionComponent","displayData","getDropdownItem","selectedValue","Subscribe","handleTextChange","handleParagraphChange","paragraph","_emailAddressInputRef","_heading$tag","subscribeParagraph","subscribeHeading","handleText","subscribeFormAriaLabel","autoComplete","subscribeFormEmailAriaLabel","subscribeEmailPlaceholderText","subscribeFormSubmitAriaLabel","subscribeButtonLabel","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","activeContentIDResult","shown","tabItemTitle","renderCustomerName","accountInformation","customer","FirstName","_renderReactFragment","slot","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","isOpen","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","AddressBillingHeading","_this$addUpdateAddres","Billing","_onSubmitAddress","isBillingAddressRequried","billingAddress","isBillingAddressSameAsShippingAddress","isBillingAddressSameAsShipping","isCartContainsItemsForShipping","_onBillingAddressSameAsShippingChange","_setBillingAddress","removeBillingAddress","isShowSameAsShippingCheckbox","addressBillingAddressHeading","sameAsShippingCheckbox","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","_this$selectedAddress","_request$channel2","_request$channel3","loyaltyAmount","giftCardExtends","reduce","count","Balance","_checkoutState$custom","customerAccountAmount","checkoutResult","paymentTenderType","isPaidByOtherPaymentSource","paymenTenderType","TotalAmount","getGiftCardTotalAmount","getLoyaltyAmount","getCustomerAccountAmount","_this$props$data$chec7","shouldPaidByCard","isPaymentVerificationRedirection","isCheckoutCallFailed","ModuleStatesCacheKey","getCacheKey","getCacheObjectType","dataCacheType","ctx","cacheKey","noBillingErrorMessage","setError","renderErrorMessage","addressTypeId","addressCount","multipleBillingErrorMessage","tabView","getButtonAriaLabel","addressName","getAddressList","showPrimaryButton","errorTitle","Heading","isSelectedAddress","isInvalidAsyncState","AddressErrorTitleComponent","AddressErrorMessageComponent","addressPrimaryButtonText","addressPrimaryButtonAriaLabel","addressEditButtonText","addressEditButtonAriaLabel","addressRemoveButtonText","addressRemoveButtonAriaLabel","getPrimaryAddressList","primaryAddresses","getOtherAddressList","otherAddresses","_heading$headingTag","addressEmptyListAddressMessage","countryRegionsInfo","addressMetaData","stateDefaultSelectionText","defaultStateText","dropdownData","getCountryFormat","getStateFormat","unshift","getAddressTypeFormat","_getCountryRegionInfo","propertyName","validationtor","isValid","_inputValidation","postalCode","selectedState","StateName","adminDistrict","addressLine","locality","district","formattedAddress","_validateRegEx","test","countryRegionInfo","_getAddressDisplayFormat","ShortName","addressPurpose","addressDisplayItem","AddressFormatLines","AddressTypeItem","_extendAddressDisplayFormat","nameDisplayItem","formatLine","AddressComponentNameValue","addressItem","NewLine","phoneDisplayItem","isPrimaryDisplayItem","marketISOCode","currentCountryRegion","parseRetailException","addressErrorMessageTitle","addressGenericErrorMessage","user","isAuthenticated","GetStateProvincesInput","getStateProvinceAction","updateLogisticsLocationRoleRecordId","submitCustomerAddress","addAddress","updateAddress","updatePrimaryAddress","addressAction","AddressManagementInput","execAddressAction","GetAddressPurposesInput","getAddressPurposesAction","purpose","LogisticsLocationRoleRecordId","TileListItemViewComponent","tileListItem","backgroundImage","thumbnailImage","tileListContainer","tileListImageContainer","tileListThumbnailImageContainer","tileListHeadingContainer","renderTileListItemContent","AccountLoyalty","decimalPrecision","_populateModalData","focusRef","loyaltyCard","currentLoyaltyPoints","expiring","CardNumber","RewardPointId","isModalOpen","currentModalData","isModalExpiring","modalID","currentFocus","getLoyaltyRewardPointsExpiringSoonAsync","callerContext","queryResultSettings","points","pointsActivity","exception","getLoyaltyRewardPointActivityTimelineAsync","_closeModal","_onOpenModal","_this$state$currentFo","current","_buttonAvailableRef","_buttonExpireRef","BackToShopping","_Msdyn365$getUrlSync","loyaltyCardLabel","totalAvailablePointsLabel","backToShoppingText","backToShopAttributes","loyaltyCardData","rewardPoints","RewardPoints","homeLink","modalTransition","onEntered","node","isAppearing","childNode","firstChild","totalPoints","_getTotalPoints","_renderRewardPoints","pointsModal","_renderModal","returnFocusRef","onOpened","Info","Points","Breakdown","PointsBreakdown","infoLabel","AccountLoyaltyLabel","cardNumber","joinDate","_formatJoinDate","_parseDate","LoyaltyEnrollmentDateLocal","pointsLabel","toFixed","homeButton","date","joinDateFormatted","Intl","DateTimeFormat","locale","month","day","year","Date","loyaltyPoints","availableId","expiringId","availablePointsLabel","availablePointsAriaLabel","expiringPointsFormatLabel","expiringPointsFormatAriaLabel","AvailablePoints","availablePointsAttributes","ExpiringPoints","expiringPointsAttributes","AccountLoyaltyModalLabel","Description","availableModalLabel","ActivePoints","labelFor","availableModalTrigger","color","innerRef","expiringModalLabel","PointsExpiringSoon","expiringModalTrigger","_currentModalData$Des","loyaltyActivityDateLabel","loyaltyActivityBalanceLabel","horizontalPosition","verticalPosition","modalClassName","modalHeaderClassName","modalBodyClassName","ModalBodyTop","ModalBodyHeaders","rewardPointsActivity","_renderPointsActivity","pointsDescription","_getPoints","balanceLabel","onClose","total","_loyaltyPoints$Active","activity","_toFixed","Activity","activityType","_getTimelineType","activityDate","cultureFormatter","formatDate","ActivityDate","activityPoints","LoyaltyPoints","dateString","substring","getUTCFullYear","getUTCMonth","getUTCDate","pointActivity","LoyaltyRewardPointTimelineEntryType","earnedPointsLabel","redeemedPointsLabel","adjustedPointsLabel","refundedPointsLabel","ExtensibleLoyaltyRewardPointActivityEntryTypeValue","B2bRequestsTileView","AddressCheckboxFunctionComponent","autoFocus","shouldBeAutoFocused","getRequriedAttribute","getAddessItems","elementId","classname","AdressCheckboxComponent","AdressDropdownComponent","AddressLabelComponent","AddressAlertComponent","editAddressHeading","addAddressHeading","add","AddressErrorMessageFunctionComponent","_props$customerAddres","addressId","slice","invoiceAddress","TileListLinks","editableLink","onTelemetryClick","TileListItem","_telemetryContent","_this$props$config$li","redirectionUrl","tileListLinks","tileListLinkContainer","_createHeading","_createParagraph","_renderBackgroundImage","_renderThumbnailImage","StringExtensions","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$ba","verifiedImageSettings","moduleType","imagePropertyName","itemImageSettings","_this$props$config$th","layout","msdyn365__moduleLayout","AccountLoyaltyView","Modal","fade","zIndex","onClosed","toggle","ModalHeader","ModalBody","ItemComponent","loading","itemProps","CheckoutSectionContainerView","checkoutPlainContainerProps","AddressInputFunctionComponent","shouldUseAutoFocus","CheckoutStateInput","buildCacheKey","createObservableDataAction","inputData","AddressDetailItemFunctionComponent","mainClass"],"mappings":"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","file":"static/js/8.86a06945bfe96b19f73e.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 asyncCustomerAddressCreationFeatureIsEnabled?: 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, this.props.telemetry\n );\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 /**\n * Clear Address Fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId);\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear Validation Function.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public async componentDidMount(): Promise {\n\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled,\n autoSuggestOptions\n }\n } = this.props;\n\n // 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\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(telemetry, options, channel?.BingMapsApiKey, channel?.ChannelCountryRegionISOCode, channel?.DefaultLanguageId);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined && (\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n ),\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(nextProps: IAccountManagementAddressProps,\n nextState: IAccountManagementAddressViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n\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 const viewProps = {\n ...this.props,\n infoMessageBar: (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\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 * 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 {\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 /**\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 });\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\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 = this.currentOperation === AddressOperation.Update ? this.addressCommon.updateCustomerAddress(\n this.addUpdateAddress\n ) : this.addressCommon.addCustomerAddress(\n this.addUpdateAddress\n );\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 (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\n (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. All rights reserved.\n * See License.txt 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 = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\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\n return (\n \n {addButton}\n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n {item.input}\n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\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\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\n\n return (\n \n {cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { 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 } = props;\n\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': resources.addressChangeCheckboxAriaLabel\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({ addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''), address, addressPurposes })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const { resources, onCancel, onSave, onAddAddress, hasExternalSubmitGroup } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\n };\n};\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { format as formatNotification, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressList, IAddressListProps } from '@msdyn365-commerce-modules/address';\r\nimport { IB2bAccountManagementAddressData } from './b2b-account-management-address.data';\r\nimport { IB2bAccountManagementAddressProps } from './b2b-account-management-address.props.autogenerated';\r\n\r\n/**\r\n * Account management address view state interface.\r\n */\r\nexport interface IAccountManagementAddressViewState {\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * Account management address view state interface.\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 screenReaderNotification: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass AccountManagementAddress extends React.Component> {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[];\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private removeAddressData?: Address;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n public constructor(props: IB2bAccountManagementAddressProps) {\r\n super(props);\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.addUpdateAddress = {};\r\n this.validationError = {};\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n // Filter out the Invoice address for the add/update form\r\n this.addressPurposes.filter((address: AddressPurpose) => address.AddressType !== 1)\r\n );\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\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\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, 0);\r\n };\r\n\r\n /**\r\n * Clear Address Fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n addressFormatItem.forEach(format => {\r\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\r\n this.addressFormat[format.name] = '';\r\n }\r\n });\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Clear Validation Function.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions }\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n void this.props.data.countryRegions.then(() => {\r\n this._setDefaultCountryRegionId();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi !== undefined &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n },\r\n async () => {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Component did mount function.\r\n */\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n /**\r\n * Should component update function.\r\n * @param nextProps - Account management address props.\r\n * @param nextState - Next state.\r\n * @returns - True if component should update, false otherwise.\r\n */\r\n public shouldComponentUpdate(\r\n nextProps: IB2bAccountManagementAddressProps,\r\n nextState: IAccountManagementAddressViewState\r\n ): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { renderView, config } = this.props;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddresList: this.currentOperation === AddressOperation.List,\r\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.List\r\n },\r\n AccountAddressManagement: {\r\n moduleProps: this.props,\r\n className: classnames('ms-account-management-address', config.className)\r\n },\r\n showAddressList: this._renderListAddress(),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n screenReaderNotification: this.removeAddressData ? this._renderScreenReaderRemoveText(this.removeAddressData) : null\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The account management props.\r\n */\r\n private readonly _dataInitialize = (props: IB2bAccountManagementAddressProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Render Add Or Update Address Function.\r\n * @returns - AddressAddUpdate.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n telemetryContent: this.telemetryContent,\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n onSave: this._onAddressAddUpdateSubmit,\r\n onCancel: this._resetView\r\n });\r\n };\r\n\r\n /**\r\n * Render List Address Function.\r\n * @returns - AddressList.\r\n */\r\n private readonly _renderListAddress = (): IAddressListProps => {\r\n const { config } = this.props;\r\n\r\n /**\r\n * Render Address ttitle.\r\n * @param event - Msdyn365.ContentEditableEvent.\r\n */\r\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\r\n config.heading!.text = event.target.value;\r\n };\r\n const heading = config.heading && {\r\n text: config.heading.text,\r\n headingTag: config.heading.tag\r\n };\r\n\r\n return AddressList({\r\n isUpdating: this.isUpdating,\r\n selectedAddress: this.selectedAddress,\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n addressPurposes: this.addressPurposes,\r\n resources: this.resources,\r\n heading,\r\n primaryAddressSectionHeading: config.primaryAddressSectionHeading,\r\n otherAddressSectionHeading: config.otherAddressSectionHeading,\r\n contextRequest: this.props.context.request,\r\n telemetryContent: this.telemetryContent,\r\n handleLineItemHeadingChange,\r\n onEditAddress: this._goToEditAddress,\r\n onRemoveAddress: this._onRemoveAddress,\r\n onAddAddress: this._goToAddAddress,\r\n onUpdatePrimaryAddress: this._onSubmitUpdatePrimaryAddress\r\n });\r\n };\r\n\r\n /**\r\n * Attach Map Auto Suggest Function.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Add Update Function.\r\n * @param name - String.\r\n * @param value - String | Boolean | Number.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean | number) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * On Address Add Update Input Change.\r\n * @param event - Input Change Event.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Add Update Dropdown Change.\r\n * @param event - Dropdown Change Event.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n if (event.target.name === AddressItemType[AddressItemType.AddressTypeValue]) {\r\n this.onAddressAddUpdate(event.target.name, +event.target.value);\r\n } else {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n }\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * On Address Update Function.\r\n * @param response - Promise.\r\n * @param onSuccess - IAddressResponse.\r\n */\r\n private readonly _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 /**\r\n * On Address Add Update Submit Function.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow()) {\r\n response =\r\n this.currentOperation === AddressOperation.Update\r\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\r\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\r\n } else {\r\n response = Promise.resolve({ address: this.addUpdateAddress });\r\n }\r\n\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * On Country Change Function.\r\n * @param countryRegionId - String.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterISORegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterISORegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Get Address Format Exclude List Function.\r\n * @returns - Address Format Exclude List.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Get State Provinces Function.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n void this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n 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 /**\r\n * Update CurrentOperation Function.\r\n * @param operation - AddressOperation.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation) => {\r\n this.currentOperation = operation;\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * On Submit Update Primary Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _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 /**\r\n * Go To Edit Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _goToEditAddress = (address: Address): void => {\r\n this.addUpdateAddress = { ...address };\r\n this.countryRegionId = this.addUpdateAddress.ThreeLetterISORegionName || 'USA';\r\n this._updateCurrentOperation(AddressOperation.Update);\r\n };\r\n\r\n /**\r\n * On Remove Address Function.\r\n * @param address - Address.\r\n */\r\n private readonly _onRemoveAddress = (address: Address): void => {\r\n address.Deactivate = true;\r\n this.removeAddressData = address;\r\n const response = this.addressCommon.updateCustomerAddress(address);\r\n this._onAddressUpdate(response, this._onAddOrUpdateSuccess);\r\n };\r\n\r\n /**\r\n * Renders Notification screen reader text for removed address.\r\n * @param address - Address input.\r\n * @returns Notification for removed address.\r\n */\r\n private readonly _renderScreenReaderRemoveText = (address: Address): React.ReactNode => {\r\n const notification = formatNotification(this.resources.removeAddressNotification!, `${address.Name!}`);\r\n return (\r\n
\r\n {notification}\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Go To Add Address Function.\r\n */\r\n private readonly _goToAddAddress = (): void => {\r\n this.addUpdateAddress = {};\r\n this._setDefaultCountryRegionId();\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: this.countryRegionId });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * On Add Or Update Success Function.\r\n * @param response - IAddressResponse.\r\n */\r\n private readonly _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 /**\r\n * On Update Primary Address Success Function.\r\n * @param response - IAddressResponse.\r\n */\r\n private readonly _onUpdatePrimaryAddressSuccess = (response: IAddressResponse): void => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n };\r\n\r\n /**\r\n * Reset view function.\r\n */\r\n private readonly _resetView = (): void => {\r\n this.selectedAddress = undefined;\r\n this._updateCurrentOperation(AddressOperation.List);\r\n };\r\n}\r\n\r\nexport default AccountManagementAddress;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n if (MsDyn365.isBrowser) {\r\n const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n console.log(linksElements);\r\n linksElements.forEach(l => l.setAttribute('href', '#'));\r\n }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots && tabSlots.tabItemContent && tabSlots.tabItemContent.length && (_renderTabItemContent(tabSlots.tabItemContent))}\n \n \n );\n case TabItemType.TabHeader:\n return (\n \n {tabHeader}\n \n );\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0 ? (\n items.map((item: React.ReactNode, index: number) => {\n return (\n \n {item}\n \n );\n })\n ) : null}\n \n );\n};\nexport default TabItemView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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(telemetry: ITelemetry, autoSuggestOptions: IAutoSuggestOptions, BingMapsApiKey?: string, countryCode?: string, defaultLanguageId?: string) {\n this.telemetry = telemetry;\n this.autoSuggestOptions = autoSuggestOptions;\n this.bingMapsApiKey = BingMapsApiKey;\n this.countryCode = countryCode;\n this.defaultLanguageId = defaultLanguageId;\n }\n\n public attachAutoSuggest = (inputId: string, containerId: string, selectedSuggestionCallback: (result: Microsoft.Maps.ISuggestionResult) => void): void => {\n if (!this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n callback: () => {\n const options = { ...this.autoSuggestOptions, countryCode: this.countryCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(inputId, containerId, selectedSuggestionCallback);\n document.querySelector(inputId)?.setAttribute('role', 'combobox');\n setTimeout(() => {\n document.querySelector(inputId)?.setAttribute('type', 'text');\n }, 0);\n },\n errorCallback: () => {\n if (this.telemetry) {\n this.telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: this.bingMapsApiKey\n });\n }\n };\n\n public changeAutoSuggestionCountryCode = (countryCode?: string): void => {\n if (this.autoSuggestManager) {\n this.autoSuggestOptions.countryCode = countryCode;\n this.autoSuggestManager.setOptions(this.autoSuggestOptions);\n }\n };\n\n public disposeAutoSuggest = (): void => {\n this.autoSuggestManager?.detachAutosuggest();\n this.autoSuggestManager?.dispose();\n this.autoSuggestManager = undefined;\n };\n\n public _loadMapAPI = async (storeSelectorStateManager: IStoreSelectorStateManager): Promise => {\n await storeSelectorStateManager.loadMapApi({\n key: this.bingMapsApiKey,\n lang: this.defaultLanguageId,\n market: this.countryCode\n });\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 {text}\n \n );\n};\n\nexport default AddressButtonFunctionComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n { ArrayExtensions.hasElements(editableLinks) ? : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map((link) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\n });\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public render(): JSX.Element | null {\n const { config, data } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!data.customerInformation.result?.IsB2b) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading.text = event.target.value;\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default B2bRequestsTile;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/checkout-billing-address/../../common/components/address-show';\r\nimport { ICheckoutBillingAddressViewProps } from './b2b-checkout-billing-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Billing Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutBillingAddress Module.\r\n */\r\nconst CheckoutBillingAddressView: React.FC = props => {\r\n const { CheckoutBillingAddress, viewState, showAddress, error } = props;\r\n\r\n return (\r\n \r\n {viewState.isShowAddress && }\r\n {viewState.isError && error}\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutBillingAddressView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\n/**\n * ICartIconData: Interface for Cart Icon Data.\n */\nexport interface ICartIconData {\n cart?: ICartState;\n}\n\n/**\n * ICartIconComponentProps: Interface for Cart Icon component props.\n */\nexport interface ICartIconComponentProps extends IComponentProps {\n className?: string;\n cartLabel: string;\n cartQtyLabel: string;\n telemetryContent?: ITelemetryContent;\n}\n\n/**\n * ICartIconComponent: Interface for Cart Icon component.\n */\nexport interface ICartIconComponent extends IComponent {\n}\n\nconst CartIconComponentActions = {};\n\n/**\n *\n * CartIcon component.\n * @extends {React.FC}\n */\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\n const defaultCartItemCount: number = 0;\n\n const cartItem = cart ? cart.totalItemsInCart : defaultCartItemCount;\n let qtyLabel: string = '';\n const cartMaxQuantity: number = 99;\n const maxQuantityLabel: string = '99+';\n if (cartItem > cartMaxQuantity) {\n qtyLabel = maxQuantityLabel;\n } else {\n qtyLabel = format(cartQtyLabel, cartItem);\n }\n const label = format(cartLabel, cartItem);\n\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const style: React.CSSProperties = {\n visibility: cart ? 'visible' : 'hidden'\n };\n return (\n \n
\n {qtyLabel}\n
\n \n );\n});\n\n// @ts-expect-error -- Compatible issue with the component override.\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\n 'CartIcon',\n { component: CartIcon, ...CartIconComponentActions }\n);\n\nexport default CartIconComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent { }\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
\n {this.props.promoCodeHeadingText}\n
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value, error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState.addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState.removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {\n props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code) : '';\n\n return (\n
\n
\n {'Code '}\n \n {coupon.Code}\n \n {'Applied '}\n\n
\n \n
\n );\n })\n }\n \n );\n };\n}\n\nexport default PromoCode;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport BusinessAccountAddress from './business-account-address';\nimport BusinessAccountAddressView from './business-account-address.view';\n\nexport * from './business-account-address';\nexport * from './business-account-address.data';\nexport { IBusinessAccountAddressConfig, IBusinessAccountAddressProps, IBusinessAccountAddressResources } from './business-account-address.props.autogenerated';\nexport * from './business-account-address.view';\n\nexport {\n BusinessAccountAddress,\n BusinessAccountAddressView\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 (\n

\n {title}\n

\n );\n};\n\nexport default AddressErrorTitleFunctionComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = 8; // Default to 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 },\n this.excludedList, props.isRequired ? undefined : []),\n this.addressPurposes\n );\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.validationError = {};\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public componentDidMount(): void {\n // 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 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(this.countryRegions, new AddressMetaData({ ...resources }, this.excludedList, []), this.addressPurposes);\n updateForm(false, this.addUpdateAddress);\n }\n } else {\n // Get new addressFormat as if address was a required field\n this.addressFormat = new AddressFormat(this.countryRegions,\n new AddressMetaData({ ...resources },\n this.excludedList, undefined\n ),\n this.addressPurposes);\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 (ObjectExtensions.isNullOrUndefined(addressFormatItem) || !addressFormatItem.validationRules || addressFormatItem.validationRules.length === 0) {\n return false;\n }\n\n for (const validationRule of addressFormatItem.validationRules) {\n if (validationRule.type === AddressValidationRuleType.Required) {\n return false;\n }\n }\n\n return true;\n };\n\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this._updateCountryRegionId(this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market));\n\n // Set default AddressType\n set(this.addUpdateAddress, { AddressTypeValue: this.defaultAddressType });\n }\n\n /**\n * Update Country Region Id Function.\n * @param value - String.\n */\n private readonly _updateCountryRegionId = async (value: string) => {\n this.countryRegionId = value;\n\n await this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n this._updateAddress('State', '');\n }\n\n this.stateProvinceInfo = result;\n });\n\n this._updateAddress('ThreeLetterISORegionName', this.countryRegionId);\n };\n}\n\nexport default BusinessAccountAddress;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 {\n id: itemId,\n text\n } = props;\n\n return (\n \n );\n};\n\nexport default AddressLabelFunctionComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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((addressTypeValue) => addressTypeValue.AddressType.toString() === (address[item.name] || '').toString());\n if (addressType) {\n const value = addressType.Name || '';\n return {\n key: item.name,\n description: \n };\n }\n }\n return {\n key: item.name,\n description: \n };\n })\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { PhoneRegex } from '@msdyn365-commerce-modules/retail-actions';\n\nimport {\n AddressItemDisplayType, AddressItemType, AddressValidationRuleType, IAddressItem,\n IAddressValidationRule\n} from './address-format.data';\nimport { IAddressResource } from './address-module.data';\n\n/**\n * Address meta data.\n */\nexport class AddressMetaData {\n\n private 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 = required !== undefined ? required : [AddressItemType.Name, AddressItemType.ZipCode, AddressItemType.City, AddressItemType.State, AddressItemType.ThreeLetterISORegionName, AddressItemType.Street];\n this._init();\n }\n\n public getItemFormat(id: number): IAddressItem | undefined {\n return this.metaData.find((item) => {\n return item.type === id;\n });\n }\n\n private _init(): void {\n this._addItem(AddressItemType.Name, AddressItemDisplayType.Input);\n this._addItem(AddressItemType.Phone, AddressItemDisplayType.Input, 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 = 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}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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';\n\nexport { checkoutStateDataAction };\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ICategoryHierarchyViewProps, IRefineMenuViewProps, ISearchResultContainerViewProps, ISearchResultModalViewProps, ISortByViewProps, ITitleViewProps } from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const { SearchResultContainer, products, pagination, ProductsContainer, ProductSectionContainer, choiceSummary, isMobile, modalToggle, searchResultModal, TitleViewProps,\n refineMenu, categoryHierarchy, sortByOptions, CategoryNavContainer, RefineAndProductSectionContainer, errorMessage, FeatureSearchContainer, similarLookProduct } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n \n {similarLookProduct}\n \n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy &&\n \n {renderCategoryHierarchy(categoryHierarchy)}\n }\n \n {refineMenu && renderRefiner(refineMenu)}\n \n \n {similarLookProduct}\n \n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n\n};\n\nconst createSearchResultModal = (modalProps: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string): JSX.Element => {\n return React.cloneElement(modalProps.modal, {}, modalProps.modalHeader, createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter);\n};\n\nconst createModalBody = (props: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n \n {submenu}\n \n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return (\n \n {sortByDropDown}\n \n );\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

\n {title.titlePrefix}\n {title.titleText}\n (\n {title.titleCount}\n )\n

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\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 = ({\n List,\n isShowList,\n heading,\n items\n}) => {\n\n if (!isShowList) {\n return null;\n }\n\n return (\n \n {heading}\n {items.map((item: IAddressListItem) => {\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\n const { Error, isShowError, title, message } = error;\n return (\n \n {isShowError && \n {title}\n {message}\n }\n {isShowPrimaryButton && primaryButton}\n {editButton}\n {removeButton}\n );\n })}\n \n );\n};\n\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\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\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\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","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.activeTab || '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps,\n nextState: ITabViewStates): 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 { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string = this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.activeTab || '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected = activeContentIndex !== undefined && dataActionTabId === this.props.id ? activeContentIndex === index : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, { tabItemType: TabItemType.TabHeader, isSelected: index === this.state.currentTabIndex, itemIndex: index, tabId: this.props.id })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = slots && slots.tabItems && slots.tabItems.length || 0;\n\n if (e.keyCode === 39) {\n\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { tabItemType: TabItemType.TabContent, isSelected: index === this.state.currentTabIndex, itemIndex: index, tabId: this.props.id })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport CheckoutBillingAddress from './checkout-billing-address';\nimport CheckoutBillingAddressView from './checkout-billing-address.view';\n\nexport * from './checkout-billing-address';\nexport * from './checkout-billing-address.data';\nexport { ICheckoutBillingAddressConfig, ICheckoutBillingAddressProps, ICheckoutBillingAddressResources } from './checkout-billing-address.props.autogenerated';\nexport * from './checkout-billing-address.view';\n\nexport {\n CheckoutBillingAddress,\n CheckoutBillingAddressView\n};\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAddressAddItem, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressSelectItem, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { IAddressShowItem, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { ICheckoutShippingAddressViewProps } from './eve-checkout-shipping-address';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Select Component.\r\n * @param param0 - Root param.\r\n * @param param0.SelectAddress - Select address.\r\n * @param param0.addButton - Add button.\r\n * @param param0.items - IAddressSelectItem[].\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns - SelectAddress Node.\r\n */\r\nconst AddressSelect: React.FC = ({\r\n SelectAddress,\r\n addButton,\r\n items,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {addButton}\r\n {items.map((item: IAddressSelectItem) => {\r\n const SelectItem = item.SelectItem;\r\n return (\r\n \r\n {item.input}\r\n \r\n \r\n );\r\n })}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Add Update Component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Checkout Shipping Address View Component.\r\n * @param props - Props.\r\n * @returns - CheckoutShippingAddress Module.\r\n */\r\nconst CheckoutShippingAddressView: React.FC = props => {\r\n const { CheckoutShippingAddress, viewState, showAddress, showAddressSelect, showAddOrUpdateAddress, cartLineImages } = props;\r\n\r\n return (\r\n \r\n {cartLineImages}\r\n {viewState.isShowAddress && }\r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutShippingAddressView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = (id: string, source: Partial, allMatched?: boolean, skipSkippableItem?: boolean): 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","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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\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. All rights reserved.\n * See License.txt 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 {\n message &&\n <>\n {message}\n \n }\n \n );\n};\n\nexport default AddressAlertFunctionComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = ({ moduleClassName, cartLines, title, itemTitle, resources }) => {\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
\n {title}\n
\n
\n {itemTitle}\n
\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 ? isShowQty && \n {cartLine.quantity}\n
: isShowQty &&
}\n {!isMobileView && isShowQty && \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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Address, AddressPurpose, CartLine, CountryRegionInfo, SimpleProduct, StateProvinceInfo, TenderLine, TokenizedPaymentCard }\n from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getFallbackImageUrl, getSimpleProducts, ObjectExtensions, ProductInput } 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 { CheckoutPickupCartLines, defaultImageSettings, ICartLineWithProduct, ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps } from './components/checkout-shipping-cartlines-images';\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}\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 showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void): 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 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 this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result\n ?.find(feature => feature.Name === this.multiplePickupStoreSwitchName)?.IsEnabled;\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n /**\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(this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines);\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\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 /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId);\n for (const formatAddress of addressFormatItem) {\n if (this.addUpdateAddress[formatAddress.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)) {\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\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties = this.props.data.cart?.result?.cart?.ExtensionProperties?.find(\n property => property.Key === 'expressPaymentDetails')?.Value?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) as IExpressPaymentDetails : null;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled,\n autoSuggestOptions\n },\n 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 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\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(telemetry, options, channel?.BingMapsApiKey, channel?.ChannelCountryRegionISOCode, channel?.DefaultLanguageId);\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (this.props.data.storeSelectorStateManager.result && (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi && (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n 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\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const { config, context, renderView, resources } = this.props;\n const { headingImages, itemsText, singleItemText } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups.filter(x => !ObjectExtensions.isNullOrUndefined(x.product)).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(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n })\n );\n\n const quantity = 1;\n const itemText = cartlines.length > quantity ? itemsText : singleItemText;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: `(${format(itemText, cartlines.length)})`,\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)?.IsEnabled;\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\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: (\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n 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: (\n onSaveHandler?: () => void,\n 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 * 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 =\n data.featureState.result?.find(feature => feature.Name === this.multiplePickupStoreSwitchName)?.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)?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(pickupMode => pickupMode !== deliveryMode);\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.filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(line => new ProductInput(line.ProductId || 0, actionContext.requestContext.apiSettings, channelId, undefined,\n actionContext.requestContext));\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 = (\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressAddUpdateProps => {\n const addressFormat = this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow() ? this.addressFormat : 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 /**\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 ? this.addressCommon.updateCustomerAddress(\n this.addUpdateAddress\n ) : this.addressCommon.addCustomerAddress(\n this.addUpdateAddress\n );\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 let newAddress = result.address;\n newAddress = { ...newAddress, ...this.addUpdateAddress };\n\n if (result.address) {\n this.hasError = false;\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: newAddress });\n } else {\n this._onAddOrUpdateSuccess({ address: newAddress });\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\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\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.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._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this._onSelectAddress();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\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._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\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 ? checkout.result.checkoutCart.cart.CartLines?.some(\n cartLine => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (cartLine.DeliveryMode !== channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode) &&\n cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\n ) : checkout.result.checkoutCart.cart.CartLines?.some(\n cartLine => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (cartLine.DeliveryMode !== pickupDeliveryModeCode &&\n cartLine.DeliveryMode !== emailDeliveryModeCode) : 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 })\n .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 ((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 return false;\n }\n }\n\n return true;\n }\n}\n\nexport default CheckoutShippingAddress;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport CheckoutShippingAddress from './checkout-shipping-address';\nimport CheckoutShippingAddressView from './checkout-shipping-address.view';\n\nexport * from './checkout-shipping-address';\nexport * from './checkout-shipping-address.data';\nexport { ICheckoutShippingAddressConfig, ICheckoutShippingAddressProps, ICheckoutShippingAddressResources } from './checkout-shipping-address.props.autogenerated';\nexport * from './checkout-shipping-address.view';\n\nexport {\n CheckoutShippingAddress,\n CheckoutShippingAddressView\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n { categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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\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 {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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n if (MsDyn365.isBrowser) {\r\n const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n console.log(linksElements);\r\n linksElements.forEach(l => l.setAttribute('href', '#'));\r\n }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 {\n id: itemId,\n name,\n className,\n value,\n additionalAddributes,\n displayData,\n onChange\n } = props;\n\n return (\n \n {displayData && displayData.map(item => (\n getDropdownItem(item.key, item.value, value)\n ))}\n \n );\n};\n\nexport default AddressDropdownFunctionComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const {\n heading,\n paragraph\n } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown = activeContentIDResult && activeContentIDResult.tabId === this.props.tabId && activeContentIDResult.activeContentIndex !== undefined ? activeContentIDResult.activeContentIndex === index : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n\n }\n\n private _renderTabHeader(): React.ReactNode {\n return (\n <>\n {this.props.config.tabItemTitle}\n \n );\n }\n\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n \n {_renderReactFragment(props.menuBar)}\n \n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n { props.wishListIconMobile }\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return (\n <>\n {customer ? customer.FirstName || customer.Name : ''}\n \n );\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n signOutLink,\n signInLink,\n data,\n accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames('ms-header__drawer', AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\n\n if (accountLinks) {\n return (\n \n
\n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0 ? items.map((slot: React.ReactNode, index: number) => {\n return (\n {slot}\n );\n }) : null}\n \n );\n}\n\nexport default headerView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = ({\n text\n}) => (\n

\n {text}\n

\n);\n\nexport default IAddressBillingHeading;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState } 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';\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}\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}\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\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 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 },\n this._getAddressFormatExcludeList()\n ),\n this.addressPurposes);\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n\n // This.addRenderRef = React.createRef();\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 /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId);\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public async componentDidMount(): Promise {\n\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: {\n channel\n }\n }\n },\n config: {\n autoSuggestionEnabled,\n autoSuggestOptions\n }\n } = this.props;\n\n // 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\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(telemetry, options, channel?.BingMapsApiKey, channel?.ChannelCountryRegionISOCode, channel?.DefaultLanguageId);\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (this.props.data.storeSelectorStateManager.result && (\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 () => this.props.data.storeSelectorStateManager.result?.loadMapApi && (\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\n ),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutBillingAddressProps, nextState: ICheckoutBillingAddressViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n\n }\n\n public render(): JSX.Element | null {\n if (!(this.isBillingAddressRequried)) {\n return null;\n }\n\n const { resources } = this.props;\n\n const { renderView, config } = this.props;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n\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 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 {\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\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow(\n { address: this.selectedAddress, addressFormat: this.addressFormat.getAddressFormat(\n this.selectedAddress.ThreeLetterISORegionName ?? ''\n ),\n addressPurposes: this.addressPurposes\n }\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 (!this.countryRegionId || !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then(\n (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\n ?.find(feature => feature.Name === multiplePickupStoreSwitchName)?.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 ? false : (retailMultiplePickUpOptionEnabled ? (\n (this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(\n cartLine => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (cartLine.DeliveryMode !== channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode) && cartLine.DeliveryMode !== emailDeliveryModeCode) : cartLine)\n ) : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(\n cartLine => ((cartLine.DeliveryMode && cartLine.DeliveryMode !== '') ? (cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode) : 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(\n (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n },\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: {\n checkout\n },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 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 this.shouldPaidByCard && (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed);\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 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._onSubmitAddress();\n break;\n case AddressOperation.Show:\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n 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 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 {\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\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, { ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId });\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\nexport default CheckoutBillingAddress;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\r\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\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 {\r\n AddressBillingHeading,\r\n AddressCommon,\r\n AddressFormat,\r\n AddressItemType,\r\n AddressMetaData,\r\n AddressOperation,\r\n AddressShow,\r\n IAddressAddUpdateProps,\r\n IAddressResponse,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address';\r\nimport { IB2bCheckoutBillingAddressData } from './b2b-checkout-billing-address.data';\r\nimport { IB2bCheckoutBillingAddressProps } from './b2b-checkout-billing-address.props.autogenerated';\r\n\r\n/**\r\n * Props interface.\r\n */\r\nexport interface IProps extends IB2bCheckoutBillingAddressProps, IModuleStateProps {}\r\n\r\nexport interface ICheckoutState {\r\n errorMessage: string | undefined;\r\n}\r\n\r\n/**\r\n * Checkout billing address view state interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewState {\r\n isShowAddress: boolean;\r\n isError: boolean;\r\n}\r\n\r\n/**\r\n * Checkout billing address view props interface.\r\n */\r\nexport interface ICheckoutBillingAddressViewProps extends IProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutBillingAddressViewState;\r\n CheckoutBillingAddress: IModuleProps;\r\n sameAsShippingCheckbox: React.ReactNode;\r\n heading: React.ReactNode;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n error: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * CheckoutBillingAddress component.\r\n * @extends {React.PureComponent>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutBillingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private isBillingAddressSameAsShipping: boolean;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private readonly addressActionResponse?: IAddressResponse;\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private addresses: Address[];\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n public constructor(props: IProps) {\r\n super(props);\r\n this.state = { errorMessage: undefined };\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.currentOperation = AddressOperation.List;\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.addresses = data.address.result || [];\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n // Initializing data props\r\n\r\n this._dataInitialize(this.props);\r\n\r\n void this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\r\n shippingAddress => {\r\n if (this.props.moduleState.isUpdating) {\r\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\r\n this._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) {\r\n this.props.data.checkout.result?.removeBillingAddress({});\r\n this.props.moduleState.onDisable();\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProps, nextState: ICheckoutState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this.isBillingAddressRequried) {\r\n return null;\r\n }\r\n\r\n const { resources } = this.props;\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.props.moduleState.hasError ? undefined : this.selectedAddress,\r\n addUpdateAddress: this.props.moduleState.hasError ? undefined : 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 && !this.props.moduleState.hasError,\r\n isError: this.props.moduleState.hasError\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 showAddress: this._renderShowAddress(),\r\n error: this.renderErrorMessage()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: IProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.addresses = data.address.result ?? [];\r\n }\r\n );\r\n\r\n this._setBillingAddress();\r\n };\r\n\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets address format for exclude list.\r\n * @returns - Address item type.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Gets state provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n void this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Initialize module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this.isBillingAddressRequried ? 'updating' : 'disabled'\r\n });\r\n\r\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\r\n\r\n if (this.isBillingAddressRequried) {\r\n if (billingAddress) {\r\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\r\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\r\n this._updateModuleState();\r\n } else if (this.isCartContainsItemsForShipping) {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Show, undefined);\r\n\r\n const {\r\n resources: { noBillingErrorMessage }\r\n } = this.props;\r\n\r\n this.setError(noBillingErrorMessage, true);\r\n } else {\r\n this.isBillingAddressSameAsShipping = false;\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Sets default country region Id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n @computed private get isCartContainsItemsForShipping(): boolean {\r\n const { request } = this.props.context;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\r\n\r\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\r\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\r\n ? false\r\n : retailMultiplePickUpOptionEnabled\r\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n }\r\n\r\n @computed private get getLoyaltyAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\r\n }\r\n\r\n @computed private get getGiftCardTotalAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n if (!checkoutState || !checkoutState.giftCardExtends) {\r\n return 0;\r\n }\r\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\r\n return count + (giftCard.Balance || 0);\r\n }, 0);\r\n }\r\n\r\n @computed private get getCustomerAccountAmount(): number {\r\n const checkoutState = this.props.data.checkout.result;\r\n const defaultAmount = 0;\r\n\r\n return checkoutState?.customerAccountAmount ?? defaultAmount;\r\n }\r\n\r\n @computed private get shouldPaidByCard(): boolean {\r\n const {\r\n data: { checkout },\r\n config\r\n } = this.props;\r\n if (!checkout.result) {\r\n return false;\r\n }\r\n\r\n const checkoutResult = checkout.result;\r\n const cart = checkoutResult.checkoutCart.cart;\r\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\r\n return false;\r\n }\r\n\r\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\r\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\r\n\r\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\r\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\r\n\r\n return amountDue > 0 && !isPaidByOtherPaymentSource;\r\n }\r\n\r\n @computed private get isBillingAddressRequried(): boolean {\r\n return this.shouldPaidByCard;\r\n }\r\n\r\n private readonly setError = (errorMessage: string | undefined, hasError: boolean): void => {\r\n this.props.moduleState.setHasError(hasError);\r\n this.setState({ errorMessage });\r\n };\r\n\r\n private renderErrorMessage = (): React.ReactNode => (\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n );\r\n\r\n /**\r\n * Sets billing address.\r\n * @param address - The address.\r\n */\r\n private readonly _setBillingAddress = (): void => {\r\n if (this.props.data.checkout.result) {\r\n const addressTypeId = 1;\r\n const addressCount = this.addresses.filter((address: Address) => address.AddressTypeValue === addressTypeId).length;\r\n\r\n // Only set billing address if there is one Invoice address\r\n if (addressCount === 1) {\r\n const address = this.addresses.find(address => address.AddressTypeValue === addressTypeId);\r\n this.selectedAddress = address ? address : this.selectedAddress;\r\n\r\n const newBillingAddress: Address = { ...address };\r\n\r\n if (address?.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\r\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(\r\n address?.ThreeLetterISORegionName\r\n );\r\n }\r\n\r\n void this.props.data.checkout.result.updateBillingAddress({\r\n newBillingAddress,\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\r\n }\r\n });\r\n\r\n this.setError(undefined, false);\r\n } else {\r\n // Remove the billing address and set appropriate error message\r\n this.selectedAddress = undefined;\r\n void this.props.data.checkout.result.removeBillingAddress({\r\n additionalProperties: {\r\n isBillingAddressSameAsShippingAddress: false\r\n }\r\n });\r\n\r\n const {\r\n resources: { noBillingErrorMessage, multipleBillingErrorMessage }\r\n } = this.props;\r\n\r\n this.setError(addressCount === 0 ? noBillingErrorMessage : multipleBillingErrorMessage, true);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - Address operation\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\r\n }\r\n };\r\n\r\n /**\r\n * Updates the module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n}\r\n\r\nexport default CheckoutBillingAddress;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n \n \n {tabHeaders}\n \n \n {tabContents}\n \n \n );\n};\n\nexport default tabView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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}\n\nconst getButtonAriaLabel = (ariaLabel: string, addressName?: string): string => {\n return ariaLabel.replace('{addressName}', addressName || '');\n};\n\nconst getAddressList = (className: string, addresses: Address[], showPrimaryButton: boolean, props: IAddressListInputProps, heading?: HeadingData): IAddressList => {\n const { resources, isUpdating, addressActionResponse, selectedAddress, addressFormat, onEditAddress, onRemoveAddress, onUpdatePrimaryAddress, addressPurposes, telemetryContent } = props;\n const { errorTitle = null, errorMessage = null } = addressActionResponse || {};\n\n return {\n List: { className },\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.\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.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 }, requestContext: props.contextRequest }}\n />\n );\n\n return {\n ListAddress: { className: 'ms-address-list' },\n heading: headingComponent,\n isShowEmptyListMessage: addresses.length === 0,\n emptyListMessage:

\n {resources.addressEmptyListAddressMessage}\n

,\n addButton: (\n \n ),\n primaryAddressList: getPrimaryAddressList(props),\n otherAddressList: getOtherAddressList(props)\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { get, set } from 'mobx';\n\nimport {\n AddressItemType, IAddressDropdownsData, IAddressItem, IAddressValidationRule\n} from './address-format.data';\nimport { AddressMetaData } from './address-meta-data';\n\n/**\n *\n * Retail Service Address format parser.\n */\nexport class AddressFormat {\n private 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.Name\n };\n });\n }\n\n public getPrefilledAddressDropdownData = (stateDefaultSelectionText: string, stateProvinceInfo?: StateProvinceInfo[]): IAddressDropdownsData => {\n const defaultStateText = {\n key: '',\n value: stateDefaultSelectionText\n };\n const dropdownData: IAddressDropdownsData = {};\n\n dropdownData[AddressItemType[AddressItemType.ThreeLetterISORegionName]] = this.getCountryFormat();\n dropdownData[AddressItemType[AddressItemType.State]] = this.getStateFormat(stateProvinceInfo);\n dropdownData[AddressItemType[AddressItemType.State]].unshift(defaultStateText);\n dropdownData[AddressItemType[AddressItemType.AddressTypeValue]] = this.getAddressTypeFormat();\n\n return dropdownData;\n };\n\n public getTwoLetterISORegionName = (countryRegionId: string): string | undefined => {\n const countryRegionInfo = this._getCountryRegionInfo(countryRegionId);\n\n return countryRegionInfo!.ISOCode;\n };\n\n public validateAddressFormat = (address: Address, validationError: Address, countryRegionId: string, propertyName?: string): boolean => {\n let isValid: boolean = true;\n let validationtor;\n const addressFormat = this.getAddressFormat((address.ThreeLetterISORegionName) || countryRegionId);\n\n addressFormat.forEach(addressFormatItem => {\n if (!propertyName || (propertyName && addressFormatItem.name === propertyName)) {\n validationtor = this._inputValidation(addressFormatItem, validationError, address);\n if (validationtor !== undefined) {\n isValid = validationtor;\n }\n }\n });\n\n return isValid;\n };\n\n public getTranformedAddress = (result: Microsoft.Maps.ISuggestionResult, stateProvinceInfo?: StateProvinceInfo[]): Address => {\n const address: Address = {};\n\n // Zip Code\n if (result.address.postalCode !== undefined) {\n address.ZipCode = result.address.postalCode;\n } else {\n address.ZipCode = '';\n }\n\n // State\n if (stateProvinceInfo) {\n const selectedState = stateProvinceInfo.find(state => state.StateName === result.address.adminDistrict);\n if (!selectedState) {\n address.State = '';\n address.StateName = result.address.adminDistrict;\n } else {\n address.State = selectedState.StateId;\n address.StateName = selectedState.StateName;\n }\n }\n\n // Street\n if (result.address.addressLine !== undefined) {\n address.Street = result.address.addressLine;\n } else {\n address.Street = ' ';\n }\n\n // City\n if (result.address.locality !== undefined) {\n address.City = result.address.locality;\n } else {\n address.City = '';\n }\n\n // District\n if (result.address.district !== undefined) {\n address.DistrictName = result.address.district;\n address.CountyName = result.address.district;\n } else {\n address.DistrictName = '';\n }\n\n // Formatted Address\n address.FullAddress = result.address.formattedAddress;\n\n return address;\n };\n\n private _inputValidation(addressFormatItem: IAddressItem, validationError: Address, address: Address): boolean | undefined {\n set(validationError, { [addressFormatItem.name]: null });\n for (const validationRule of (addressFormatItem.validationRules || [])) {\n if (!this._validateRegEx(address, addressFormatItem.name, validationRule)) {\n set(validationError, { [addressFormatItem.name]: validationRule.message });\n return false;\n }\n }\n return undefined;\n }\n\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IActionInput, ICoreContext, IObservableAction, ITelemetry } from '@msdyn365-commerce/core';\nimport {\n Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addAddress, AddressManagementInput, ArrayExtensions,\n updateAddress, updatePrimaryAddress } 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\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 (addressAction: IObservableAction, address: Address): Promise => {\n address.AddressTypeValue = address.AddressTypeValue || 7; // 7 sets it to HOME by default\n\n const input = new AddressManagementInput(address);\n return this.execAddressAction(addressAction, input, address);\n };\n\n private readonly execAddressAction = async (addressAction: IObservableAction, input: IActionInput | IActionInput[], address: Address): Promise => {\n let response: IAddressResponse = {};\n\n if (this.context && this.context.actionContext) {\n try {\n const addresses = await addressAction(input, this.context.actionContext);\n if (addresses.length > 0) {\n response.address = address.RecordId ? address : addresses[addresses.length - 1];\n } else {\n response.address = address;\n }\n response.customerAddresses = addresses;\n } catch (error) {\n if (this.telemetry) {\n this.telemetry.error(`Error encountered ${error}`);\n this.telemetry.debug('Unable to exec address action');\n }\n response = this.parseRetailException(this.resources);\n }\n }\n return Promise.resolve(response);\n };\n\n /**\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(purpose => purpose.AddressType === address.AddressTypeValue);\n if (addressPurpose) {\n address.LogisticsLocationRoleRecordId = addressPurpose.RecordId;\n }\n }\n };\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITileListItemViewProps } from './tile-list-item';\n\n/**\n *\n * ITileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\n const { heading, paragraph, backgroundImage, links, thumbnailImage,\n tileListContainer, tileListImageContainer, tileListThumbnailImageContainer, tileListHeadingContainer } = props;\n\n return (\n \n \n {backgroundImage}\n \n \n {heading}\n {paragraph}\n {links}\n \n \n {thumbnailImage}\n \n \n );\n};\n\n/**\n *\n * TileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nexport const TileListItemViewComponent: React.FC = props => {\n const { tileListItem } = props;\n return (\n \n {renderTileListItemContent(props)}\n \n );\n};\n\nexport default TileListItemViewComponent;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { LoyaltyCard, LoyaltyRewardPoint, LoyaltyRewardPointActivity } from '@msdyn365-commerce/retail-proxy';\nimport { getLoyaltyRewardPointActivityTimelineAsync, getLoyaltyRewardPointsExpiringSoonAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { Button, format, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyData } from './account-loyalty.data';\nimport { IAccountLoyaltyProps } from './account-loyalty.props.autogenerated';\nimport { AccountLoyaltyLabel, AccountLoyaltyModalLabel } from './components';\n\nexport interface IAccountLoyaltyViewProps extends IAccountLoyaltyProps<{}> {\n AccountLoyalty: IModuleProps;\n className: string;\n totalPoints: number;\n heading?: React.ReactNode;\n Info: INodeProps;\n infoLabel: React.ReactNode;\n cardNumber: React.ReactNode;\n joinDate: React.ReactNode;\n Points: INodeProps;\n pointsLabel: React.ReactNode;\n points: React.ReactNode;\n Breakdown: INodeProps;\n RewardPoints: INodeProps;\n PointsBreakdown: INodeProps;\n rewardPoints?: IAccountLoyaltyRewardPointProps[];\n Button: INodeProps;\n homeButton: React.ReactNode;\n pointsModal: IAccountLoyaltyModalProps;\n}\n\nexport interface IAccountLoyaltyState {\n isModalOpen: boolean;\n currentModalData?: LoyaltyRewardPoint;\n isModalExpiring: boolean;\n modalID: string;\n currentFocus?: React.RefObject;\n pointsActivity: LoyaltyRewardPointActivity[] | undefined;\n}\n\nexport interface IAccountLoyaltyRewardPointProps {\n label: React.ReactNode;\n availableModalLabel: React.ReactNode;\n availableModalTrigger: React.ReactNode;\n expiringModalLabel: React.ReactNode;\n expiringModalTrigger: React.ReactNode;\n}\n\nexport type horizontalModalPosition = 'left' | 'center' | 'right';\nexport type verticalModalPosition = 'top' | 'center' | 'bottom';\n\nexport interface IAccountLoyaltyModalProps {\n isOpen: boolean;\n horizontalPosition?: horizontalModalPosition;\n verticalPosition?: verticalModalPosition;\n modalClassName?: string;\n modalHeaderClassName?: string;\n modalHeader?: string;\n modalBodyClassName?: string;\n ModalBodyTop: INodeProps;\n pointsDescription?: React.ReactNode;\n totalPoints?: React.ReactNode;\n ModalBodyHeaders: INodeProps;\n date?: React.ReactNode;\n balanceLabel?: React.ReactNode;\n rewardPointsActivity?: IAccountLoyaltyActivityProps[];\n returnFocusRef?: React.RefObject;\n onClose(): void;\n onOpened?(): void;\n}\n\nexport interface IAccountLoyaltyActivityProps {\n Activity: INodeProps;\n activityType: React.ReactNode;\n activityDate: React.ReactNode;\n activityPoints: React.ReactNode;\n}\n\nexport interface IProps extends IAccountLoyaltyProps { }\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountLoyalty extends React.PureComponent {\n private readonly _buttonAvailableRef: React.RefObject;\n\n private readonly _buttonExpireRef: React.RefObject;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly decimalPrecision = 2;\n\n constructor(props: IAccountLoyaltyProps) {\n super(props);\n this._buttonAvailableRef = React.createRef();\n this._buttonExpireRef = React.createRef();\n this.state = {\n isModalOpen: false,\n currentModalData: undefined,\n isModalExpiring: false,\n modalID: '',\n pointsActivity: undefined\n };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n const { loyaltyCard } = this.props.data;\n const { loyaltyCardLabel, totalAvailablePointsLabel, backToShoppingText } = this.props.resources;\n const { actionContext } = this.props.context;\n const { isModalOpen } = this.state;\n const backToShopAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n if (!loyaltyCard || !loyaltyCard.result || !loyaltyCard.result.CardNumber) {\n this.props.context.telemetry.error('Loyalty card content is empty, module wont render');\n return null;\n }\n\n const loyaltyCardData = loyaltyCard.result;\n const rewardPoints = loyaltyCard && loyaltyCardData.RewardPoints;\n const homeLink = Msdyn365.getUrlSync('home', actionContext) ?? '';\n\n const viewProps = {\n ...this.props,\n AccountLoyalty: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty', className),\n modalTransition: {\n /**\n * On Entered in Modal function.\n * @param node - The current node element.\n * @param isAppearing - The Boolean value.\n */\n onEntered: (node: HTMLElement, isAppearing: boolean) => {\n const childNode = node.firstChild as HTMLElement;\n if (isAppearing) {\n childNode.focus();\n }\n }\n }\n },\n totalPoints: rewardPoints && this._getTotalPoints(),\n className: classnames('msc-account-loyalty', className),\n rewardPoints: loyaltyCardData.RewardPoints && loyaltyCardData.RewardPoints.length > 0 && this._renderRewardPoints(loyaltyCardData),\n pointsModal: isModalOpen && this._renderModal() || { isOpen: false, returnFocusRef: this.state.currentFocus, onOpened: this._onOpenModal },\n Info: { className: 'ms-account-loyalty__info' },\n Points: { className: 'ms-account-loyalty__points' },\n Breakdown: { className: 'ms-account-loyalty__breakdown' },\n RewardPoints: { className: 'ms-account-loyalty__reward-points' },\n PointsBreakdown: { className: 'ms-account-loyalty__point-breakdown' },\n Button: { className: 'ms-account-loyalty__link' },\n heading: heading &&\n (\n \n ),\n\n // Account info\n infoLabel:\n (\n \n ),\n cardNumber:\n (\n \n ),\n joinDate:\n (\n \n ),\n\n // Points\n pointsLabel:\n (\n \n ),\n points: rewardPoints &&\n (\n \n ),\n\n homeButton: rewardPoints &&\n (\n \n { backToShoppingText }\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\n\n private _formatJoinDate(date: Date): string {\n return format(this.props.resources.joinDateFormatted,\n new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, { month: 'long', day: 'numeric', year: 'numeric' }).format(new Date(date)));\n }\n\n private _renderRewardPoints(loyaltyCard: LoyaltyCard): IAccountLoyaltyRewardPointProps[] {\n return loyaltyCard.RewardPoints!.map((loyaltyPoints, index) => {\n const availableId = loyaltyPoints.RewardPointId && `${loyaltyPoints.RewardPointId}-available-${index}` || 'available-points';\n const expiringId = loyaltyPoints.RewardPointId && `${loyaltyPoints.RewardPointId}-expiring-${index}` || 'expiring-points';\n const { availablePointsLabel, availablePointsAriaLabel, expiringPointsFormatLabel, expiringPointsFormatAriaLabel } = this.props.resources;\n this.payLoad.contentAction.etext = TelemetryConstant.AvailablePoints;\n const availablePointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.ExpiringPoints;\n const expiringPointsAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const expireDaysDefaultValue = 30;\n\n return ({\n label:\n (\n \n ),\n availableModalLabel: loyaltyPoints.ActivePoints !== undefined &&\n (\n \n ),\n availableModalTrigger: loyaltyPoints.ActivePoints !== undefined &&\n (\n \n {loyaltyPoints.ActivePoints.toFixed(this.decimalPrecision)}\n \n ),\n expiringModalLabel: loyaltyPoints.PointsExpiringSoon !== undefined &&\n (\n \n ),\n expiringModalTrigger: loyaltyPoints.PointsExpiringSoon !== undefined &&\n (\n \n {loyaltyPoints.PointsExpiringSoon.toFixed(this.decimalPrecision)}\n \n )\n });\n });\n }\n\n private _renderModal(): IAccountLoyaltyModalProps | null {\n const { totalAvailablePointsLabel, loyaltyActivityDateLabel, loyaltyActivityBalanceLabel } = this.props.resources;\n const { isModalOpen, currentModalData } = this.state;\n\n if (!isModalOpen || !currentModalData) {\n // Return empty modal\n this.props.context.telemetry.error('Account loyalty modal content is empty, module wont render');\n return null;\n }\n\n return {\n isOpen: isModalOpen,\n returnFocusRef: this.state.currentFocus,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n modalClassName: 'ms-account-loyalty__points-modal',\n modalHeaderClassName: 'ms-account-loyalty__points-modal-header',\n modalHeader: currentModalData.Description ?? '',\n modalBodyClassName: 'ms-account-loyalty__points-modal-body',\n ModalBodyTop: { className: 'ms-account-loyalty__points-modal-body-top' },\n ModalBodyHeaders: { className: 'ms-account-loyalty__points-modal-body-header' },\n rewardPointsActivity: this._renderPointsActivity(),\n pointsDescription:\n (\n \n ),\n totalPoints:\n (\n \n ),\n date:\n (\n \n ),\n balanceLabel:\n (\n \n ),\n onClose: this._closeModal,\n onOpened: this._onOpenModal\n };\n }\n\n private _getTotalPoints(): number {\n const rewardPoints = this.props.data.loyaltyCard.result && this.props.data.loyaltyCard.result.RewardPoints;\n\n let total = 0;\n rewardPoints!.forEach(loyaltyPoints => {\n total += loyaltyPoints.ActivePoints ?? 0;\n });\n\n return total;\n }\n\n private _getPoints(): string {\n const { currentModalData, isModalExpiring } = this.state;\n const rewardPoints: number = (isModalExpiring ? currentModalData!.PointsExpiringSoon : currentModalData!.ActivePoints) ?? 0;\n\n return `${rewardPoints.toFixed(this.decimalPrecision)}`;\n }\n\n private _renderPointsActivity(): IAccountLoyaltyActivityProps[] | undefined {\n const { pointsActivity } = this.state;\n\n if (!pointsActivity) {\n this.props.context.telemetry.error('Points activity content is empty, module wont render');\n return undefined;\n }\n\n return pointsActivity.map((activity) => {\n return ({\n Activity: { className: 'ms-account-loyalty__points-modal-activity' },\n activityType:\n (\n \n ),\n activityDate:\n (\n \n ),\n activityPoints:\n (\n \n )\n });\n });\n }\n\n private _parseDate(date: Date | string): Date {\n /* Dates for loyalty are coming as formatted strings yyyy-mm-ddT:00:00.000z\n Javascript was interpreting this as an iso format, thus causing the wrong date to be rendered */\n if (typeof date === 'string') {\n let dateString = date.toString();\n dateString = dateString.replace(/-/g, '/');\n dateString = dateString.substring(0, 10);\n return new Date(dateString);\n }\n return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n\n }\n\n private _getTimelineType(pointActivity: LoyaltyRewardPointActivity): string {\n if (pointActivity.LoyaltyRewardPointTimelineEntryType) {\n return pointActivity.LoyaltyRewardPointTimelineEntryType;\n }\n\n const { earnedPointsLabel, redeemedPointsLabel, adjustedPointsLabel, refundedPointsLabel } = this.props.resources;\n switch (pointActivity.ExtensibleLoyaltyRewardPointActivityEntryTypeValue) {\n case 1:\n return earnedPointsLabel;\n case 2:\n return refundedPointsLabel;\n case 3:\n return redeemedPointsLabel;\n case 5:\n return adjustedPointsLabel;\n default:\n return '';\n }\n }\n\n private readonly _populateModalData = (focusRef: React.RefObject, loyaltyCard: LoyaltyCard, currentLoyaltyPoints: LoyaltyRewardPoint, expiring: boolean) => () => {\n if (!loyaltyCard || !loyaltyCard.CardNumber || !currentLoyaltyPoints.RewardPointId) {\n this.props.context.telemetry.error('Modal data is empty, module wont render');\n return null;\n }\n\n const { actionContext } = this.props.context;\n\n // Open modal\n this.setState({\n isModalOpen: true,\n currentModalData: currentLoyaltyPoints,\n isModalExpiring: expiring,\n modalID: '',\n currentFocus: focusRef\n });\n\n if (expiring) {\n getLoyaltyRewardPointsExpiringSoonAsync({ callerContext: actionContext, queryResultSettings: {} }, loyaltyCard.CardNumber, currentLoyaltyPoints.RewardPointId, 30)\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({ pointsActivity: points });\n })\n .catch((error: Error) => {\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n } else {\n getLoyaltyRewardPointActivityTimelineAsync({ callerContext: actionContext, queryResultSettings: {} }, loyaltyCard.CardNumber, currentLoyaltyPoints.RewardPointId)\n .then((points: LoyaltyRewardPointActivity[]) => {\n this.setState({ pointsActivity: points });\n })\n .catch((error: Error) => {\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Failed to get reward point activity');\n });\n }\n // eslint-disable-next-line no-useless-return, consistent-return -- Auto-suppressed.\n return;\n };\n\n private readonly _closeModal = () => {\n this.setState({\n isModalOpen: false,\n currentModalData: undefined,\n pointsActivity: undefined\n });\n };\n\n /**\n * On open modal function.\n */\n private readonly _onOpenModal = () => {\n if (this.state.currentFocus?.current) {\n this.state.currentFocus.current.focus();\n }\n };\n}\n\nexport default AccountLoyalty;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport AccountManagementAddress from './account-management-address';\nimport AccountManagementAddressView from './account-management-address.view';\n\nexport * from './account-management-address';\nexport * from './account-management-address.data';\nexport * from './account-management-address.props.autogenerated';\nexport * from './account-management-address.view';\n\nexport {\n AccountManagementAddress,\n AccountManagementAddressView\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 = ({\n AddressDetail,\n items\n}) => {\n\n return (\n \n {items.map((item: IAddressShowItem) => {\n return (\n <>\n {item.description}\n \n );\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\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n {label}\n {alert}\n {input}\n );\n })}\n {hasError && \n {error.title}\n {error.message}\n }\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const { CheckoutBillingAddress, viewState, heading, sameAsShippingCheckbox, showAddress, showAddOrUpdateAddress } = props;\n\n return (\n \n {heading}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt 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, AddressItemType, AddressValidationRuleType, IAddressDropdownsData,\n IAddressItem, 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 { addressFormat, addressType, dropdownDisplayData, defaultCountryRegionId, defaultAddressType, validationError = {}, onInputChange, onDropdownChange, shouldAutoFocus } = 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()}`, { 'msc-address-form__item-newline': addressFormatItem.isNewLine, 'address-form__item-invalid': errorMessage });\n let input;\n\n if (addressFormatItem.displayType === AddressItemDisplayType.Input) {\n input = (\n \n );\n } else if (addressFormatItem.displayType === AddressItemDisplayType.Checkbox) {\n input = (\n \n );\n } else {\n const displayData = dropdownDisplayData[addressFormatItem.name];\n let selectedValue = selectedAddress[addressFormatItem.name];\n\n if (addressFormatItem.type === AddressItemType.ThreeLetterISORegionName) {\n selectedValue = selectedValue || defaultCountryRegionId;\n }\n\n if (addressFormatItem.type === AddressItemType.AddressTypeValue) {\n selectedValue = selectedValue || defaultAddressType;\n }\n\n input = (\n \n );\n }\n\n return {\n key: addressFormatItem.name,\n AddressItem: { className, id: `${elementId}_container` },\n label: ,\n alert: ,\n input\n };\n });\n};\n\nexport const AddressAddUpdate = (props: IAddressAddInputProps): IAddressAddUpdateProps => {\n const { editAddressHeading, addAddressHeading, selectedAddress = {}, resources, hasError, onCancel, onSave, hasExternalSubmitGroup, isUpdating, addressActionResponse, telemetryContent } = props;\n const heading = selectedAddress.RecordId ? editAddressHeading : addAddressHeading;\n\n return {\n AddressForm: { className: 'msc-address-form' },\n heading: heading && ,\n items: getAddessItems(selectedAddress, props),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: onSave && (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: onCancel && (\n \n ),\n hasError: hasError || false,\n error: {\n AddressError: { className: 'msc-address-form__error' },\n title: addressActionResponse && addressActionResponse.errorTitle && ,\n message: addressActionResponse && addressActionResponse.errorMessage && \n }\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { AutoSuggest } from './common/address-autosuggest';\nimport { IAutoSuggestOptions } from './common/address-autosuggest.data';\n\nexport * from './actions/get-country-regions';\nexport * from './actions/get-country-state';\nexport * from './actions/get-state-provinces';\nexport * from './common';\nexport * from './modules/account-management-address';\nexport * from './modules/business-account-address';\nexport * from './modules/checkout-billing-address';\nexport * from './modules/checkout-shipping-address';\n\n/**\n * Exporting.\n */\nexport {\n AutoSuggest,\n IAutoSuggestOptions\n};\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IEveCheckoutShippingAddressResources } from '../eve-checkout-shipping-address.props.autogenerated';\r\n\r\n/**\r\n * The cartline product interface.\r\n */\r\nexport interface ICartLineWithProduct {\r\n cartLine: CartLine;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline interface.\r\n */\r\nexport interface ICheckoutShippingCartLineInfo {\r\n lineId: string;\r\n imageProps: IImageProps;\r\n quantity: number;\r\n}\r\n\r\n/**\r\n * The checkout shipping cartline props.\r\n */\r\nexport interface ICheckoutShippingCartLinesProps {\r\n moduleClassName: string;\r\n cartLines: ICheckoutShippingCartLineInfo[];\r\n title: string;\r\n itemTitle: string;\r\n resources: IEveCheckoutShippingAddressResources;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\r\nexport const CheckoutPickupCartLines: React.FC = ({\r\n moduleClassName,\r\n cartLines,\r\n title,\r\n itemTitle,\r\n resources\r\n}) => {\r\n const context = ({\r\n gridSettings: {\r\n xs: { w: 767 },\r\n sm: { w: 991 },\r\n md: { w: 1199 },\r\n lg: { w: 1599 },\r\n xl: { w: 1600 }\r\n }\r\n } as unknown) as IRequestContext;\r\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\r\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\r\n\r\n if (!ArrayExtensions.hasElements(cartLines)) {\r\n return null;\r\n }\r\n const quantity = 1;\r\n return (\r\n
\r\n
\r\n
{title}
\r\n
{itemTitle}
\r\n
\r\n
\r\n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\r\n const isShowQty = cartLine.quantity > quantity;\r\n let className = `${moduleClassName}__group-images-lines-product`;\r\n const role = 'text';\r\n if (isShowQty) {\r\n className = classnames(className, ' product-image-wide');\r\n }\r\n return (\r\n
\r\n \r\n {isMobileView\r\n ? isShowQty && (\r\n \r\n {cartLine.quantity}\r\n
\r\n )\r\n : isShowQty && (\r\n
\r\n )}\r\n {!isMobileView && isShowQty && (\r\n \r\n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\r\n \r\n )}\r\n
\r\n );\r\n })}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * The checkout shipping cartline image settings.\r\n */\r\nexport const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\r\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\r\n },\r\n lazyload: true,\r\n quality: 80\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n Address,\r\n AddressPurpose,\r\n CartLine,\r\n CountryRegionInfo,\r\n SimpleProduct,\r\n StateProvinceInfo,\r\n TenderLine,\r\n TokenizedPaymentCard\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\r\nimport { getFallbackImageUrl, getSimpleProducts, ObjectExtensions, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { action, computed, observable, reaction, set } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AutoSuggest } from '@msdyn365-commerce-modules/address';\r\nimport { IAutoSuggestOptions } from '@msdyn365-commerce-modules/address';\r\nimport { AddressCommon } from '@msdyn365-commerce-modules/address';\r\nimport { AddressFormat } from '@msdyn365-commerce-modules/address';\r\nimport { AddressItemType } from '@msdyn365-commerce-modules/address';\r\nimport { AddressMetaData } from '@msdyn365-commerce-modules/address';\r\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '@msdyn365-commerce-modules/address';\r\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressSelect, IAddressSelectProps } from '@msdyn365-commerce-modules/address';\r\nimport { AddressShow, IAddressShowProps } from '@msdyn365-commerce-modules/address';\r\nimport { IEveCheckoutShippingAddressData } from './eve-checkout-shipping-address.data';\r\nimport { IEveCheckoutShippingAddressProps } from './eve-checkout-shipping-address.props.autogenerated';\r\nimport {\r\n CheckoutPickupCartLines,\r\n defaultImageSettings,\r\n ICartLineWithProduct,\r\n ICheckoutShippingCartLineInfo,\r\n ICheckoutShippingCartLinesProps\r\n} from './components/checkout-shipping-cartlines-images';\r\n\r\n/**\r\n * The checkout address props interface.\r\n */\r\nexport interface ICheckoutAddressProps extends IEveCheckoutShippingAddressProps, IModuleStateProps {}\r\n\r\n/**\r\n * The checkout shipping address view state.\r\n */\r\nexport interface ICheckoutShippingAddressViewState {\r\n isShowAddress: boolean;\r\n isShowAddresList: boolean;\r\n isShowAddOrUpdateAddress: boolean;\r\n}\r\n\r\n/**\r\n * The checkout shipping address state.\r\n */\r\nexport interface ICheckoutAddresState {\r\n shippingGroups: ICartLineWithProduct[];\r\n}\r\n\r\n/**\r\n * The checkout shipping address view props.\r\n */\r\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\r\n className: string;\r\n currentOperation: AddressOperation;\r\n selectedAddress?: Address;\r\n addUpdateAddress: Address;\r\n addressListSelectedAddress: Address;\r\n countryRegionId: string;\r\n stateProvinceInfo?: StateProvinceInfo[];\r\n customerAddresses: Address[];\r\n validationError: object;\r\n addressActionResponse?: IAddressResponse;\r\n viewState: ICheckoutShippingAddressViewState;\r\n CheckoutShippingAddress: IModuleProps;\r\n isUpdating: boolean;\r\n hasError: boolean;\r\n showAddress: IAddressShowProps;\r\n showAddOrUpdateAddress: IAddressAddUpdateProps;\r\n cartLineImages?: React.ReactNode;\r\n showAddressSelect: IAddressSelectProps;\r\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\r\n showAddressSelectHandler?(\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps;\r\n}\r\n\r\n/**\r\n * IExpressPaymentDetail interface.\r\n */\r\ninterface IExpressPaymentDetails {\r\n email?: string;\r\n tenderLine?: TenderLine;\r\n tokenizedPaymentCard?: TokenizedPaymentCard;\r\n paymentTenderType?: string;\r\n address?: Address;\r\n isExpressCheckoutAppliedInCartPage: boolean;\r\n isExpressAddressAppliedInCartPage?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Address component.\r\n * @extends {React.Component>}\r\n */\r\n// @ts-expect-error\r\n@withModuleState\r\n@observer\r\nclass CheckoutShippingAddress extends React.Component {\r\n @observable private currentOperation: AddressOperation;\r\n\r\n @observable private selectedAddress?: Address;\r\n\r\n @observable private addUpdateAddress: Address;\r\n\r\n @observable private countryRegionId: string = 'USA';\r\n\r\n @observable private stateProvinceInfo?: StateProvinceInfo[];\r\n\r\n @observable private customerAddresses: Address[] = [];\r\n\r\n @observable private validationError: object;\r\n\r\n @observable private addressActionResponse?: IAddressResponse;\r\n\r\n @observable private isUpdating?: boolean;\r\n\r\n @observable private hasError?: boolean;\r\n\r\n @observable private addressListSelectedAddress: Address = {};\r\n\r\n private readonly addressCommon: AddressCommon;\r\n\r\n private addressFormat!: AddressFormat;\r\n\r\n private countryRegions: CountryRegionInfo[] = [];\r\n\r\n private addressPurposes: AddressPurpose[] = [];\r\n\r\n private readonly resources: IAddressResource;\r\n\r\n private readonly defaultAddressType: number = 6; // Default to Home\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n private autoSuggest?: AutoSuggest;\r\n\r\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n\r\n private retailMultiplePickUpOptionEnabled?: boolean = false;\r\n\r\n public constructor(props: ICheckoutAddressProps) {\r\n super(props);\r\n this.state = { shippingGroups: [] };\r\n const { context, data, resources, telemetry } = this.props;\r\n\r\n this.addUpdateAddress = {};\r\n this.resources = resources;\r\n this.currentOperation = AddressOperation.List;\r\n this.countryRegions = data.countryRegions.result || [];\r\n this.addressPurposes = data.addressPurposes.result || [];\r\n this.customerAddresses = data.address.result || [];\r\n this.stateProvinceInfo = data.countryStates.result || [];\r\n this.addressCommon = new AddressCommon(context, resources, telemetry);\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n this.validationError = {};\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n }\r\n\r\n /**\r\n * Initialize pickup group.\r\n */\r\n @action\r\n private readonly _initPickupGroup = async (): Promise => {\r\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\r\n const cartLines: ICartLineWithProduct[] = [];\r\n\r\n try {\r\n const products = await this._getProductsByCartLines(\r\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\r\n pickupCartLines\r\n );\r\n for (const line of pickupCartLines) {\r\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\r\n cartLines.push({ cartLine: line, product });\r\n }\r\n this.setState({ shippingGroups: cartLines });\r\n } catch (error) {\r\n this.props.telemetry.error(error as string);\r\n this.setState({ shippingGroups: [] });\r\n }\r\n };\r\n\r\n /**\r\n * On suggestion selected.\r\n * @param result - Suggestion result interface.\r\n */\r\n @action\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n this._clearAddressFields();\r\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\r\n const timeout = 0;\r\n set(this.addUpdateAddress, { Street: '' });\r\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\r\n set(this.addUpdateAddress, { CountyName: address.CountyName });\r\n set(this.addUpdateAddress, { City: address.City });\r\n set(this.addUpdateAddress, { State: address.State });\r\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\r\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\r\n\r\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\r\n setTimeout(() => {\r\n set(this.addUpdateAddress, { Street: address.Street });\r\n }, timeout);\r\n };\r\n\r\n /**\r\n * Method to clear address fields.\r\n */\r\n @action\r\n private readonly _clearAddressFields = (): void => {\r\n const addressFormatItem = this.addressFormat.getAddressFormat(\r\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n );\r\n for (const formatAddress of addressFormatItem) {\r\n if (\r\n this.addUpdateAddress[formatAddress.name] !== undefined &&\r\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\r\n ) {\r\n this.addressFormat[formatAddress.name] = '';\r\n }\r\n }\r\n this._clearValidation();\r\n };\r\n\r\n /**\r\n * Method to clear validation.\r\n */\r\n @action\r\n private readonly _clearValidation = (): void => {\r\n this.validationError = {};\r\n };\r\n\r\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const properties =\r\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\r\n ?.StringValue ?? '';\r\n\r\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled, autoSuggestOptions },\r\n resources\r\n } = this.props;\r\n\r\n // Initializing data props\r\n this._dataInitialize(this.props);\r\n\r\n this.addressFormat = new AddressFormat(\r\n this.countryRegions,\r\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\r\n this.addressPurposes\r\n );\r\n\r\n this.props.data.checkout.then(() => {\r\n this._setDefaultCountryRegionId();\r\n this._initModuleState();\r\n });\r\n\r\n reaction(\r\n () => this.countryRegionId,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.currentOperation,\r\n () => {\r\n this._getStateProvinces();\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\r\n () => {\r\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\r\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\r\n\r\n if (address?.TwoLetterISORegionName) {\r\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\r\n\r\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n }\r\n\r\n this._updateCurrentOperation(AddressOperation.Add, address);\r\n this._onAddressAddUpdateSubmit();\r\n }\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\r\n this.autoSuggest = new AutoSuggest(\r\n telemetry,\r\n options,\r\n channel?.BingMapsApiKey,\r\n channel?.ChannelCountryRegionISOCode,\r\n channel?.DefaultLanguageId\r\n );\r\n\r\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\r\n if (\r\n this.props.data.storeSelectorStateManager.result &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\r\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\r\n async () => {\r\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\r\n }\r\n );\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\r\n async () => {\r\n await this._attachMapAutoSuggest();\r\n }\r\n );\r\n }\r\n await this._initPickupGroup();\r\n }\r\n\r\n public async componentDidUpdate(): Promise {\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\r\n await this._attachMapAutoSuggest();\r\n }\r\n } else {\r\n this.autoSuggest?.disposeAutoSuggest();\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._canShip()) {\r\n return null;\r\n }\r\n\r\n const { config, context, renderView, resources } = this.props;\r\n const { headingImages, itemsText, singleItemText } = resources;\r\n const { imageSettings } = config;\r\n\r\n // Line images\r\n const cartlines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\r\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\r\n .map(line => ({\r\n lineId: line.cartLine.LineId ?? '',\r\n imageProps: {\r\n requestContext: context.actionContext.requestContext,\r\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\r\n altText: line.product?.Name,\r\n src: line.product?.PrimaryImageUrl ?? '',\r\n fallBackSrc: getFallbackImageUrl(line.product?.ItemId, context.actionContext.requestContext.apiSettings),\r\n gridSettings: context.request.gridSettings!,\r\n imageSettings: imageSettings ?? defaultImageSettings,\r\n loadFailureBehavior: 'empty'\r\n },\r\n quantity: line.cartLine.Quantity ?? 0\r\n }));\r\n\r\n const quantity = 1;\r\n const itemText = cartlines.length > quantity ? itemsText : singleItemText;\r\n\r\n const lineImageProps: ICheckoutShippingCartLinesProps = {\r\n moduleClassName: 'ms-checkout-shipping-address',\r\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\r\n itemTitle: `(${format(itemText, cartlines.length)})`,\r\n title: headingImages,\r\n resources: this.props.resources\r\n };\r\n\r\n const cartLineImages: React.ReactNode = ;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { featureState } = this.props.data;\r\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n\r\n const viewProps = {\r\n ...this.props,\r\n currentOperation: this.currentOperation,\r\n selectedAddress: this.selectedAddress,\r\n addUpdateAddress: this.addUpdateAddress,\r\n addressListSelectedAddress: this.addressListSelectedAddress,\r\n countryRegionId: this.countryRegionId,\r\n stateProvinceInfo: this.stateProvinceInfo,\r\n customerAddresses: this.customerAddresses,\r\n validationError: this.validationError,\r\n addressActionResponse: this.addressActionResponse,\r\n isUpdating: this.isUpdating,\r\n hasError: this.hasError,\r\n className: config.className,\r\n viewState: {\r\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\r\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\r\n isShowAddOrUpdateAddress:\r\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update\r\n },\r\n CheckoutShippingAddress: {\r\n moduleProps: this.props,\r\n className: classnames('ms-checkout-shipping-address', config.className)\r\n },\r\n showAddress: this._renderShowAddress(),\r\n\r\n /**\r\n * Show address select.\r\n * @param onAddAddressHandler - On add address click function.\r\n * @param onSaveHandler - On save click function.\r\n * @param onCancelHandler - On cancel click function.\r\n * @returns - Renders select address.\r\n */\r\n showAddressSelectHandler: (onAddAddressHandler?: () => void, onSaveHandler?: () => void, onCancelHandler?: () => void) =>\r\n this._renderSelectAddress(onAddAddressHandler, onSaveHandler, onCancelHandler),\r\n\r\n /**\r\n * Show add/update address.\r\n * @param onSaveHandler - On save click function.\r\n * @param onCancelHandler - On cancel click function.\r\n * @returns - Renders select address.\r\n */\r\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\r\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\r\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\r\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\r\n showAddressSelect: this._renderSelectAddress()\r\n };\r\n\r\n return renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method data initialization.\r\n * @param props -The checkout address properties.\r\n */\r\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\r\n const { data } = props;\r\n\r\n reaction(\r\n () => data.countryRegions.result,\r\n () => {\r\n this.countryRegions = data.countryRegions.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.addressPurposes.result,\r\n () => {\r\n this.addressPurposes = data.addressPurposes.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.address.result,\r\n () => {\r\n this.customerAddresses = data.address.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.countryStates.result,\r\n () => {\r\n this.stateProvinceInfo = data.countryStates.result ?? [];\r\n }\r\n );\r\n\r\n reaction(\r\n () => data.featureState.result,\r\n () => {\r\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\r\n feature => feature.Name === this.multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get cart lines for delivery.\r\n * @returns The cart line collection.\r\n */\r\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\r\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param line -The cart line.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isDelivery = (line: CartLine): boolean => {\r\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param deliveryMode -The delivery mode.\r\n * @returns True/false as per cart line delivery mode.\r\n */\r\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\r\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\r\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\r\n ?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\r\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\r\n pickupMode => pickupMode !== deliveryMode\r\n );\r\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\r\n }\r\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\r\n };\r\n\r\n /**\r\n * Method to check cart line for delivery.\r\n * @param channelId - The channelId.\r\n * @param cartLines - Cart line collections.\r\n * @returns Collection of SimpleProduct.\r\n */\r\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\r\n const actionContext = this.props.context.actionContext;\r\n const productInputs = cartLines\r\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\r\n .map(\r\n line =>\r\n new ProductInput(\r\n line.ProductId || 0,\r\n actionContext.requestContext.apiSettings,\r\n channelId,\r\n undefined,\r\n actionContext.requestContext\r\n )\r\n );\r\n return getSimpleProducts(productInputs, actionContext);\r\n };\r\n\r\n /**\r\n * Method to render add/update address.\r\n * @param onSaveHandler -- Handles onsave functionality.\r\n * @param onCancelHandler -- Handles oncancel functionality.\r\n * @returns Address app/update props.\r\n */\r\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\r\n const addressFormat =\r\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\r\n ? this.addressFormat\r\n : this.addressFormat;\r\n\r\n /**\r\n * On Cancel Button Function.\r\n */\r\n const onCancelButtonHandler = () => {\r\n this._resetView();\r\n onCancelHandler?.();\r\n };\r\n return AddressAddUpdate({\r\n isUpdating: this.isUpdating,\r\n resources: this.resources,\r\n addressType: AddressType.Shipping,\r\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\r\n defaultCountryRegionId: this.countryRegionId,\r\n defaultAddressType: this.defaultAddressType,\r\n selectedAddress: this.addUpdateAddress,\r\n validationError: this.validationError,\r\n hasError: this.hasError,\r\n addressActionResponse: this.addressActionResponse,\r\n telemetryContent: this.telemetryContent,\r\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\r\n this.resources.addressStateDefaultSelectionText,\r\n this.stateProvinceInfo\r\n ),\r\n onInputChange: this._onAddressAddUpdateInputChange,\r\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n\r\n /**\r\n * On Save Function.\r\n */\r\n onSave: () => {\r\n this.onSubmit();\r\n onSaveHandler?.();\r\n },\r\n\r\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\r\n });\r\n };\r\n\r\n /**\r\n * Method to render select address.\r\n * @param onAddAddressHandler - To handle add address button click.\r\n * @param onSaveHandler - To handle save button click.\r\n * @param onCancelHandler - To handle cancel button click.\r\n * @returns Select address props.\r\n */\r\n private readonly _renderSelectAddress = (\r\n onAddAddressHandler?: () => void,\r\n onSaveHandler?: () => void,\r\n onCancelHandler?: () => void\r\n ): IAddressSelectProps => {\r\n /**\r\n * On Cancel Button Function.\r\n */\r\n const onCancelButtonHandler = () => {\r\n this._resetView();\r\n onCancelHandler?.();\r\n };\r\n return AddressSelect({\r\n addressFormat: this.addressFormat,\r\n addresses: this.customerAddresses,\r\n resources: this.resources,\r\n addressPurposes: this.addressPurposes,\r\n selectedAddress: this.addressListSelectedAddress,\r\n onAddressOptionChange: this._onAddressOptionChange,\r\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\r\n telemetryContent: this.telemetryContent,\r\n\r\n /**\r\n * On Add Address Function.\r\n */\r\n onAddAddress: () => {\r\n this._goToAddAddress();\r\n onAddAddressHandler?.();\r\n },\r\n\r\n /**\r\n * On Save Function.\r\n */\r\n onSave: () => {\r\n this._onSelectAddress();\r\n onSaveHandler?.();\r\n },\r\n\r\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler\r\n });\r\n };\r\n\r\n /**\r\n * Method to render show address.\r\n * @returns Show address props.\r\n */\r\n private _renderShowAddress(): IAddressShowProps | null {\r\n if (this.selectedAddress) {\r\n return AddressShow({\r\n address: this.selectedAddress,\r\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\r\n addressPurposes: this.addressPurposes\r\n });\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded) {\r\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\r\n }\r\n };\r\n\r\n /**\r\n * Method gets called on address option change.\r\n * @param event - To get current option.\r\n */\r\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\r\n const addressRecordId = event.currentTarget.value;\r\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\r\n if (selectedAddress) {\r\n this.addressListSelectedAddress = selectedAddress;\r\n }\r\n };\r\n\r\n /**\r\n * Method to render map auto suggest.\r\n * @param name - Address name field.\r\n * @param value - Address name value field.\r\n */\r\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\r\n set(this.addUpdateAddress, { [name]: value });\r\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\r\n };\r\n\r\n /**\r\n * Method to get called on address update change.\r\n * @param event - Input element.\r\n */\r\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\r\n if (event.target.type === 'checkbox') {\r\n this.onAddressAddUpdate(event.target.name, event.target.checked);\r\n } else {\r\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\r\n this.onAddressAddUpdate(event.target.name, value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update dropdown change.\r\n * @param event - Select element.\r\n */\r\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\r\n this.onAddressAddUpdate(event.target.name, event.target.value);\r\n\r\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\r\n this._onCountryChange(event.target.value);\r\n }\r\n };\r\n\r\n /**\r\n * Method to get called on address update submit.\r\n */\r\n private readonly _onAddressAddUpdateSubmit = (): void => {\r\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\r\n return;\r\n }\r\n\r\n let response: Promise;\r\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\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 let newAddress = (result.customerAddresses || []).find(\r\n add =>\r\n this.addUpdateAddress.Name === add.Name &&\r\n this.addUpdateAddress.Street === add.Street &&\r\n this.addUpdateAddress.State === add.State &&\r\n this.addUpdateAddress.City === add.City &&\r\n this.addUpdateAddress.ZipCode === add.ZipCode\r\n );\r\n if (!newAddress) {\r\n newAddress = result.address;\r\n newAddress = { ...newAddress, ...this.addUpdateAddress };\r\n }\r\n\r\n if (result.address) {\r\n this.hasError = false;\r\n if (result.customerAddresses) {\r\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: newAddress });\r\n } else {\r\n this._onAddOrUpdateSuccess({ address: newAddress });\r\n }\r\n } else {\r\n this.hasError = true;\r\n this.addressActionResponse = result;\r\n this._updateModuleState();\r\n }\r\n },\r\n () => {\r\n this.hasError = true;\r\n this.isUpdating = false;\r\n this._updateModuleState();\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * Method to get called on country change.\r\n * @param countryRegionId - Country region id.\r\n */\r\n private readonly _onCountryChange = (countryRegionId: string) => {\r\n this.countryRegionId = countryRegionId;\r\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\r\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\r\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\r\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\r\n this._clearAddressFields();\r\n };\r\n\r\n /**\r\n * Method to get all address format exclude list.\r\n * @returns Collection of address items.\r\n */\r\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\r\n const { config } = this.props;\r\n const addressFormatExcludeList: AddressItemType[] = [];\r\n\r\n if (!config.showAddressType) {\r\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\r\n }\r\n\r\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\r\n\r\n return addressFormatExcludeList;\r\n };\r\n\r\n /**\r\n * Method to get all state/provinces.\r\n */\r\n private readonly _getStateProvinces = (): void => {\r\n if (\r\n !this.countryRegionId ||\r\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\r\n ) {\r\n return;\r\n }\r\n\r\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\r\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\r\n\r\n // Reset state if selected state not found in the list.\r\n if (!stateInfo) {\r\n set(this.addUpdateAddress, { State: '' });\r\n }\r\n\r\n this.stateProvinceInfo = result;\r\n });\r\n };\r\n\r\n /**\r\n * Method to set default country region id.\r\n */\r\n private _setDefaultCountryRegionId(): void {\r\n const { request } = this.props.context;\r\n const market = request.channel?.ChannelCountryRegionISOCode;\r\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\r\n }\r\n\r\n /**\r\n * Method to get default address region id.\r\n * @returns - Address object from existing addresses.\r\n */\r\n private readonly _getDefaultAddress = (): Address | undefined => {\r\n if (this.customerAddresses) {\r\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\r\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Method to get address from express payment details from cart page.\r\n * @returns - Address.\r\n */\r\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\r\n if (this.expressPaymentDetailsFromCartPage) {\r\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\r\n\r\n let addressFromCartExpress: Address | undefined;\r\n\r\n if (isExpressAddressAppliedInCartPage) {\r\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\r\n } else {\r\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\r\n }\r\n\r\n return addressFromCartExpress;\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Get address from tokenizedPaymentCard.\r\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\r\n * @returns The address.\r\n */\r\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\r\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\r\n\r\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n\r\n const address: Address = {\r\n TwoLetterISORegionName: twoLetterIsoRegionName,\r\n Name: tokenizedPaymentCard.NameOnCard,\r\n Street: tokenizedPaymentCard.Address1,\r\n StreetNumber: tokenizedPaymentCard.Address2,\r\n City: tokenizedPaymentCard.City,\r\n State: tokenizedPaymentCard.State,\r\n ZipCode: tokenizedPaymentCard.Zip,\r\n Phone: tokenizedPaymentCard.Phone,\r\n ThreeLetterISORegionName: threeLetterIsoRegionName,\r\n AddressTypeValue: this.defaultAddressType\r\n };\r\n\r\n return address;\r\n };\r\n\r\n /**\r\n * Get address from expressAddress.\r\n * @param expressAddress -- The expressAddress.\r\n * @returns The address.\r\n */\r\n private readonly getExpressAddress = (expressAddress: Address): Address => {\r\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\r\n\r\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\r\n\r\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\r\n this._onCountryChange(threeLetterIsoRegionName);\r\n }\r\n\r\n const address: Address = {\r\n ...expressAddress,\r\n ThreeLetterISORegionName: threeLetterIsoRegionName,\r\n AddressTypeValue: this.defaultAddressType\r\n };\r\n\r\n return address;\r\n };\r\n\r\n /**\r\n * Get three letter ISO region name from two letter ISO region name.\r\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\r\n * @returns The three letter ISO region name.\r\n */\r\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\r\n const countryRegion = this.countryRegions.find(country => {\r\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\r\n });\r\n\r\n return countryRegion?.CountryRegionId;\r\n };\r\n\r\n /**\r\n * Method to initialize all module state.\r\n */\r\n private readonly _initModuleState = (): void => {\r\n this.props.moduleState.init({\r\n status: this._canShip() ? 'updating' : 'disabled',\r\n onEdit: this.onEdit,\r\n onCancel: this.onCancel,\r\n onSubmit: this.onSubmit\r\n });\r\n\r\n const checkoutState = this.props.data.checkout.result;\r\n\r\n if (this._canShip()) {\r\n let defaultAddress;\r\n\r\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\r\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\r\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\r\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\r\n } else if (this._getDefaultAddress()) {\r\n defaultAddress = this._getDefaultAddress();\r\n } else {\r\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\r\n }\r\n\r\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\r\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\r\n this._setShippingAddress(defaultAddress);\r\n this._updateModuleState();\r\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\r\n } else {\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on submit address.\r\n */\r\n private readonly onSubmit = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._onAddressAddUpdateSubmit();\r\n break;\r\n case AddressOperation.List:\r\n this._onSelectAddress();\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on cancel.\r\n */\r\n private readonly onCancel = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._clearAddressFields();\r\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\r\n this._resetView();\r\n }\r\n\r\n break;\r\n case AddressOperation.List:\r\n if (this.selectedAddress) {\r\n this._resetView();\r\n }\r\n break;\r\n default:\r\n this.props.telemetry.error('Invalid operation');\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on edit address.\r\n */\r\n private readonly onEdit = (): void => {\r\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\r\n } else if (this.shippingAddress) {\r\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\r\n }\r\n\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method to check if checkout cartlines are available fro shipping.\r\n * @returns - True/false as per the delivery mode.\r\n */\r\n private readonly _canShip = (): boolean => {\r\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\r\n const { request } = this.props.context;\r\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\r\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\r\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\r\n return false;\r\n }\r\n\r\n // @ts-expect-error: Type-checker not realizing above request.channel check\r\n return this.retailMultiplePickUpOptionEnabled\r\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !==\r\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\r\n deliveryMode => deliveryMode === cartLine.DeliveryMode\r\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n )\r\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\r\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\r\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\r\n : cartLine\r\n );\r\n };\r\n\r\n /**\r\n * Method get called on select address.\r\n */\r\n private readonly _onSelectAddress = () => {\r\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\r\n this._setShippingAddress(this.addressListSelectedAddress);\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Method get called on goto add address.\r\n */\r\n private readonly _goToAddAddress = () => {\r\n this._setDefaultCountryRegionId();\r\n this._updateCurrentOperation(AddressOperation.Add);\r\n };\r\n\r\n /**\r\n * Method get called on add/update success.\r\n * @param response - Retail api response.\r\n */\r\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\r\n if (response.customerAddresses) {\r\n this.customerAddresses = response.customerAddresses;\r\n }\r\n\r\n if (response.address) {\r\n this._updateCurrentOperation(AddressOperation.Show, response.address);\r\n this._setShippingAddress(response.address);\r\n this._updateModuleState();\r\n }\r\n };\r\n\r\n /**\r\n * Method get called on set Shipping Address.\r\n * @param address - Retail Api address result.\r\n */\r\n private readonly _setShippingAddress = (address: Address): void => {\r\n if (this.props.data.checkout.result) {\r\n const newShippingAddress = { ...address };\r\n\r\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\r\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\r\n }\r\n\r\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\r\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\r\n this.props.telemetry.error(error);\r\n });\r\n }\r\n };\r\n\r\n @computed private get shippingAddress(): Address | undefined {\r\n return this.props.data.checkout.result?.shippingAddress;\r\n }\r\n\r\n /**\r\n * Method get called on reset view.\r\n */\r\n private readonly _resetView = (): void => {\r\n switch (this.currentOperation) {\r\n case AddressOperation.Add:\r\n case AddressOperation.Update:\r\n this._updateCurrentOperation(\r\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\r\n this.shippingAddress\r\n );\r\n break;\r\n default:\r\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\r\n }\r\n this._updateModuleState();\r\n };\r\n\r\n /**\r\n * Update current operation.\r\n * @param operation - The address operation.\r\n * @param selectedAddress - The selected address.\r\n */\r\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\r\n this.currentOperation = operation;\r\n this.selectedAddress = selectedAddress;\r\n\r\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\r\n this.addUpdateAddress = { ...this.selectedAddress } || {};\r\n set(this.addUpdateAddress, {\r\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\r\n });\r\n set(this.addUpdateAddress, {\r\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\r\n });\r\n } else if (this.currentOperation === AddressOperation.List) {\r\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\r\n }\r\n };\r\n\r\n /**\r\n * Update module state.\r\n */\r\n private readonly _updateModuleState = () => {\r\n if (this.currentOperation === AddressOperation.Show) {\r\n this.props.moduleState.onReady();\r\n } else if (this.isUpdating) {\r\n this.props.moduleState.onPending();\r\n } else {\r\n this.props.moduleState.onUpdating();\r\n }\r\n };\r\n\r\n /**\r\n * Method to check if the customer already has the address.\r\n * @param address - The address.\r\n */\r\n private readonly _isNewAddress = (address: Address): boolean => {\r\n for (const existingAddress of this.customerAddresses) {\r\n if (\r\n (address.Name ?? '') === existingAddress.Name &&\r\n (address.Street ?? '') === existingAddress.Street &&\r\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\r\n (address.City ?? '') === existingAddress.City &&\r\n (address.State ?? '') === existingAddress.State &&\r\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\r\n (address.Phone ?? '') === existingAddress.Phone &&\r\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\r\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n}\r\n\r\nexport default CheckoutShippingAddress;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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 (\n

\n {message}\n

\n );\n};\n\nexport default AddressErrorMessageFunctionComponent;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAddressAddItem,\r\n IAddressAddUpdateProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-add';\r\nimport {\r\n IAddressList,\r\n IAddressListItem,\r\n IAddressListProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-list';\r\nimport {\r\n IAddressShowItem,\r\n IAddressShowProps\r\n} from '@msdyn365-commerce-modules/address/src/modules/account-management-address/../../common/components/address-show';\r\nimport { IAccountManagementAddressViewProps } from '@msdyn365-commerce-modules/address/src/modules/account-management-address/./account-management-address';\r\n// import { AddressDetailItemComponent } from '@msdyn365-commerce-modules/address/src/common/components/address-detail-item';\r\n\r\n/**\r\n * Address show component.\r\n * @param param0 - Root param.\r\n * @param param0.AddressDetail - Address detail.\r\n * @param param0.items - IAddressShowItem[].\r\n * @returns - Address Node.\r\n */\r\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\r\n return (\r\n \r\n {items.map((item: IAddressShowItem) => {\r\n return <>{item.description};\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address List Component.\r\n * @param param0 - Root param.\r\n * @param param0.List - Address list.\r\n * @param param0.isShowList - Boolean.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressListItem[].\r\n * @returns - AddressListComponent Node.\r\n */\r\nconst AddressList: React.FC = ({ List, isShowList, heading, items }) => {\r\n if (!isShowList) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressListItem) => {\r\n const { Item, key, error, showItems, isShowPrimaryButton, primaryButton, editButton, removeButton } = item;\r\n const { Error, isShowError, title, message } = error;\r\n\r\n // const component = showItems.items.find(address => address.key === \"AddressTypeValue\")?.description;\r\n\r\n return (\r\n \r\n \r\n {isShowError && (\r\n \r\n {title}\r\n {message}\r\n \r\n )}\r\n {isShowPrimaryButton && primaryButton}\r\n {editButton}\r\n {removeButton}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Address Lists Component.\r\n * @param param0 - Root param.\r\n * @param param0.ListAddress - List address.\r\n * @param param0.heading - List heading.\r\n * @param param0.isShowEmptyListMessage - Boolean.\r\n * @param param0.emptyListMessage - Empty list message.\r\n * @param param0.addButton - Add button.\r\n * @param param0.primaryAddressList - Primary address.\r\n * @param param0.otherAddressList - Other address.\r\n * @returns Address Lists Component Node.\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 * AddressAddUpdateComponent.\r\n * @param param0 - Root param.\r\n * @param param0.AddressForm - Address form.\r\n * @param param0.heading - Address heading.\r\n * @param param0.items - IAddressAddItem[].\r\n * @param param0.hasError - Boolean.\r\n * @param param0.error - Error message.\r\n * @param param0.isShowSaveButton - Boolean.\r\n * @param param0.saveButton - Save button.\r\n * @param param0.isShowCancelButton - Boolean.\r\n * @param param0.cancelButton - Cancel button.\r\n * @returns Address add update component node.\r\n */\r\nconst AddressAddUpdate: React.FC = ({\r\n AddressForm,\r\n heading,\r\n items,\r\n hasError,\r\n error,\r\n isShowSaveButton,\r\n saveButton,\r\n isShowCancelButton,\r\n cancelButton\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {items.map((item: IAddressAddItem) => {\r\n const { AddressItem, key, label, alert, input } = item;\r\n return (\r\n \r\n {label}\r\n {alert}\r\n {input}\r\n \r\n );\r\n })}\r\n {hasError && (\r\n \r\n {error.title}\r\n {error.message}\r\n \r\n )}\r\n {isShowSaveButton && saveButton}\r\n {isShowCancelButton && cancelButton}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Account Management Address View Component.\r\n * @param props - Props.\r\n * @returns - AccountAddressManagement Module.\r\n */\r\nconst AccountManagementAddressView: React.FC = props => {\r\n const { AccountAddressManagement, viewState, showAddressList, showAddOrUpdateAddress, screenReaderNotification } = props;\r\n\r\n // Remove buttons from Invoice address\r\n const invoiceAddressId = 1;\r\n const addressId = props.customerAddresses.slice().find(address => address.AddressTypeValue === invoiceAddressId)?.RecordId;\r\n const invoiceAddress = showAddressList.otherAddressList.items.find(address => address.key === addressId);\r\n if (invoiceAddress) {\r\n invoiceAddress.editButton = undefined;\r\n invoiceAddress.primaryButton = undefined;\r\n invoiceAddress.removeButton = undefined;\r\n }\r\n\r\n return (\r\n \r\n {viewState.isShowAddresList && }\r\n {viewState.isShowAddOrUpdateAddress && }\r\n {screenReaderNotification}\r\n \r\n );\r\n};\r\n\r\nexport default AccountManagementAddressView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../tile-list-item.props.autogenerated';\n\n/**\n * Tile List links.\n */\nexport interface ITileListLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ITileListLinks component.\n * @extends {React.PureComponent}\n */\nexport class TileListLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n { editableLinks && ArrayExtensions.hasElements(editableLinks) ? : null}\n
\n );\n }\n\n /**\n * ITileListLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-tile-list__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default TileListLinks;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { TileListLinks } from './components';\nimport { IHeadingData, ITileListItemProps } from './tile-list-item.props.autogenerated';\n\n/**\n * Tile-list-item view props.\n */\nexport interface ITileListItemViewProps extends ITileListItemProps<{}> {\n heading?: React.ReactNode;\n paragraph?: React.ReactNode;\n links?: React.ReactNode;\n backgroundImage?: React.ReactNode;\n thumbnailImage?: React.ReactNode;\n tileListItem: IModuleProps;\n tileListContainer: INodeProps;\n tileListImageContainer: INodeProps;\n tileListThumbnailImageContainer: INodeProps;\n tileListHeadingContainer: INodeProps;\n}\n\n/**\n *\n * TileListItem component.\n * @extends {React.PureComponent>}\n */\nexport class TileListItem extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry);\n\n public constructor(props: ITileListItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { heading,\n paragraph,\n backgroundImage,\n thumbnailImage,\n redirectionUrl,\n links } = this.props.config;\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const tileListLinkContainer = {\n tag: 'a' as NodeTag,\n className: 'ms-tile-list-container',\n role: 'link',\n href: redirectionUrl?.linkUrl.destinationUrl,\n 'aria-label': redirectionUrl?.ariaLabel\n };\n\n const tileListButtonContainer = {\n tag: 'button' as NodeTag,\n className: 'ms-tile-list-container'\n };\n const viewProps: ITileListItemViewProps = {\n ...this.props,\n heading: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n backgroundImage: this._renderBackgroundImage(backgroundImage),\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\n links: tileListLinks,\n tileListItem: {\n moduleProps: this.props,\n className: ''\n },\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\n tileListImageContainer: {\n className: 'ms-tile-list__image'\n },\n tileListThumbnailImageContainer: {\n className: 'ms-tile-list__thumbnail_image',\n 'aria-hidden': 'true'\n },\n tileListHeadingContainer: {\n className: 'ms-tile-list__heading'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderBackgroundImage(item?: Msdyn365.IImageData,\n isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n sm: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n md: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n lg: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n xl: { q: 'w=315&h=412&m=6', w: 315, h: 412 }\n },\n lazyload: true\n };\n const verifiedImageSettings = (item?.imageSettings?.viewports) ? item.imageSettings : defaultImageSettings;\n\n return (\n \n );\n }\n\n private _renderThumbnailImage(item?: Msdyn365.IImageData,\n itemImageSettings?: Msdyn365.IImageSettings,\n isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n if (!item) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(item.src)) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default TileListItem;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as React from 'react';\n\nexport interface IAccountLoyaltyLabel {\n className?: string;\n text?: string | number;\n}\n\nexport const AccountLoyaltyLabel: React.FC = ({ className, text }) => (\n

\n { text }\n

\n);\n\nexport interface IAccountLoyaltyModalLabel {\n className?: string;\n text?: string | number;\n labelFor?: string;\n}\n\nexport const AccountLoyaltyModalLabel: React.FC = ({ className, text, labelFor }) => (\n \n);\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Modal, ModalBody, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyViewProps } from './account-loyalty';\n\nconst AccountLoyaltyView: React.FC = props => {\n\n const { AccountLoyalty, Info, Points, Breakdown, RewardPoints, PointsBreakdown, Button, heading, infoLabel, cardNumber, joinDate, pointsLabel, points, rewardPoints, homeButton, pointsModal } = props;\n const { ModalBodyTop, ModalBodyHeaders } = pointsModal;\n return (\n \n {heading}\n \n {infoLabel}\n {cardNumber}\n {joinDate}\n \n \n {pointsLabel}\n {points}\n\n \n {rewardPoints && rewardPoints.map((activity, index) => {\n return (\n\n \n {activity.label}\n \n {activity.availableModalLabel}\n {activity.availableModalTrigger}\n \n\n \n {activity.expiringModalLabel}\n {activity.expiringModalTrigger}\n \n \n );\n })}\n \n \n\n \n {homeButton}\n \n\n {!pointsModal.isOpen &&\n ||\n \n\n \n {pointsModal.modalHeader}\n \n \n \n {pointsModal.pointsDescription}\n {pointsModal.totalPoints}\n \n \n {pointsModal.date}\n {pointsModal.balanceLabel}\n \n {pointsModal.rewardPointsActivity && pointsModal.rewardPointsActivity.map((activity, index) => {\n const { Activity, activityType, activityDate, activityPoints } = activity;\n return (\n \n {activityType}\n {activityDate}\n {activityPoints}\n \n );\n })}\n \n }\n \n );\n};\n\nexport default AccountLoyaltyView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-section-container/./checkout-section-container';\r\n\r\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\r\n <>\r\n {loading}\r\n \r\n {item}\r\n \r\n \r\n);\r\n\r\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => {\r\n return(\r\n \r\n {items.map(item => {\r\n // remove the hidden classname that is given in the checkout-section-container\r\n item.itemProps = { ...item.itemProps,\r\n className: 'ms-checkout-section-container__item'\r\n }\r\n return \r\n })}\r\n \r\n )\r\n};\r\n\r\nexport default CheckoutSectionContainerView;\r\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt 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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } 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. All rights reserved.\n * See License.txt 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 {\n isNewLine,\n isShowLabel,\n labelText,\n name,\n value\n } = 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 ? `msc-address-detail__item msc-address-detail__item-address-detail_${labelText}` : classname(className, { 'msc-address-detail__item-empty': isEmpty, 'msc-address-detail__item-newline': isNewLine });\n return (\n \n {\n isShowLabel && <>\n \n {labelText}\n \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":""}