{"version":3,"sources":["webpack:///src/modules/password-reset/password-reset.tsx?2fc7","webpack:///src/modules/password-reset/components/password-reset-error.tsx?5bd3","webpack:///src/modules/sign-up/components/sign-up-success.tsx?be19","webpack:///src/modules/order-lookup/order-lookup.view.tsx?d1dd","webpack:///src/modules/sign-up/components/sign-up-input.tsx?49f8","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?e178","webpack:///src/modules/account-customer-balance-tile/index.ts?038c","webpack:///src/modules/content-block/components/additional-content.tsx?1a32","webpack:///src/modules/content-block/components/links.tsx?5056","webpack:///src/modules/content-block/content-block.tsx?8675","webpack:///src/modules/account-address-tile/components/index.ts?24f7","webpack:///src/modules/social-share/social-share.view.tsx?76da","webpack:///src/modules/password-reset/password-reset.view.tsx?f872","webpack:///src/modules/site-picker/site-picker.view.tsx?dcff","webpack:///src/modules/account-address-tile/account-address-tile.view.tsx?0b73","webpack:///src/modules/account-address-tile/index.ts?effb","webpack:///src/modules/loyalty-terms/components/index.ts?508b","webpack:///src/modules/account-profile/index.ts?8c04","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-description.tsx?0029","webpack:///src/modules/account-invoice-tile/components/account-invoice-tile-links.tsx?d307","webpack:///src/modules/account-invoice-tile/account-invoice-tile.tsx?9a78","webpack:///./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.match.js?044a","webpack:///src/modules/checkout-apple-pay/checkout-apple-pay.tsx?a333","webpack:///src/modules/account-loyalty-tile/components/index.ts?c444","webpack:///src/modules/account-profile-edit/components/account-profile-edit-button.tsx?8f71","webpack:///src/modules/account-profile/components/account-profile-description.tsx?6478","webpack:///src/modules/fabrikam/views/cart.view.tsx?8115","webpack:///src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?d781","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.tsx?f29d","webpack:///src/modules/catalog-picker/catalog-picker.view.tsx?d632","webpack:///src/modules/account-wishlist-tile/components/account-wishlist-tile-description.tsx?c387","webpack:///src/modules/account-wishlist-tile/components/account-wishlist-tile-links.tsx?3c8d","webpack:///src/modules/account-wishlist-tile/account-wishlist-tile.tsx?8a2b","webpack:///./src/themes/farmlandstheme/views/search-result-container.view.tsx?53b7","webpack:///./src/helpers/query-param-helpers.ts?a395","webpack:///src/modules/order-lookup/utilities/order-lookup-utility.tsx?9369","webpack:///src/modules/order-lookup/components/order-lookup-additional-fields.tsx?7c69","webpack:///src/modules/order-lookup/components/order-lookup-fields.tsx?c99c","webpack:///src/modules/order-lookup/order-lookup.tsx?a81e","webpack:///src/modules/loyalty-sign-up/index.ts?408b","webpack:///src/modules/sign-up/components/sign-up-error.tsx?9100","webpack:///src/modules/password-reset/components/password-reset-loading-message.tsx?a735","webpack:///src/modules/sign-in/index.ts?5400","webpack:///src/modules/account-profile-edit/components/account-profile-edit-label.tsx?505c","webpack:///src/modules/account-loyalty-tile/index.ts?b609","webpack:///src/modules/sign-up/sign-up.tsx?f918","webpack:///src/modules/business-organization-list/business-organization-list.view.tsx?8701","webpack:///src/modules/business-organization-list/components/small-components.tsx?104e","webpack:///src/modules/business-organization-list/business-organization-list.tsx?b6f5","webpack:///src/modules/sign-up/components/sign-up-button.tsx?4a5f","webpack:///src/index.ts?c6ae","webpack:///src/modules/account-address-tile/account-address-tile.tsx?4565","webpack:///src/modules/account-profile-edit/components/account-profile-edit-error.tsx?a0b2","webpack:///src/modules/fabrikam/views/order-history.view.tsx?46de","webpack:///src/modules/catalog-picker/catalog-picker.tsx?dde5","webpack:///src/modules/sign-up/components/sign-up-loading-icon.tsx?9dc7","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?ed3f","webpack:///src/modules/account-loyalty-tile/components/account-loyalty-tile-links.tsx?0c40","webpack:///src/modules/account-loyalty-tile/account-loyalty-tile.tsx?b50e","webpack:///src/modules/sign-up/sign-up.view.tsx?e4b6","webpack:///src/modules/account-order-templates-tile/account-order-templates-tile.view.tsx?90af","webpack:///src/modules/account-profile-edit/account-profile-edit.view.tsx?72b7","webpack:///src/modules/sign-up/components/index.ts?0666","webpack:///src/modules/navigation-menu/navigation-menu.data.ts?a9f0","webpack:///src/modules/navigation-menu/navigation-menu.tsx?390c","webpack:///src/modules/account-profile/components/account-profile-attributes.tsx?dd79","webpack:///src/modules/account-profile/components/account-profile-links.tsx?2955","webpack:///src/modules/account-profile/account-profile.tsx?8999","webpack:///src/modules/b2b-requests-status/index.ts?e772","webpack:///src/modules/account-wishlist-tile/account-wishlist-tile.view.tsx?58da","webpack:///src/modules/account-welcome-tile/index.ts?2bd4","webpack:///src/modules/account-loyalty/index.ts?6823","webpack:///src/modules/social-share/social-share.tsx?ed88","webpack:///src/modules/sign-up/index.ts?7cfc","webpack:///src/modules/organization-users-tile/organization-users-tile.view.tsx?d92a","webpack:///src/modules/account-customer-balance-tile/components/index.ts?1499","webpack:///src/modules/account-profile/account-profile.view.tsx?b442","webpack:///src/modules/password-reset/components/password-reset-input.tsx?7f32","webpack:///src/modules/account-welcome-tile/account-welcome-tile.tsx?abcf","webpack:///src/modules/account-wishlist-tile/index.ts?b510","webpack:///src/modules/account-address-tile/components/account-address-tile-description.tsx?88b9","webpack:///src/modules/account-order-templates-tile/components/account-order-templates-tile-description.tsx?7b53","webpack:///src/modules/account-order-templates-tile/components/account-order-templates-tile-links.tsx?5371","webpack:///src/modules/account-order-templates-tile/account-order-templates-tile.tsx?db71","webpack:///src/modules/account-profile/components/index.ts?41ea","webpack:///src/modules/site-picker/site-picker.tsx?35ca","webpack:///src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?c661","webpack:///src/modules/password-reset/components/password-reset-button.tsx?7c39","webpack:///src/modules/account-profile/components/account-profile-text.tsx?c06a","webpack:///src/modules/account-welcome-tile/account-welcome-tile.view.tsx?a13c","webpack:///src/modules/navigation-menu/navigation-menu.view.tsx?df40","webpack:///src/modules/account-invoice-tile/account-invoice-tile.view.tsx?4620","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?2c6f","webpack:///src/modules/account-address-tile/components/account-address-tile-links.tsx?7e3f","webpack:///src/modules/password-reset/components/password-reset-label.tsx?2eed","webpack:///src/modules/account-loyalty-tile/components/account-loyalty-tile-description.tsx?a49e","webpack:///src/modules/sign-up/components/sign-up-loading-message.tsx?1a3b","webpack:///src/modules/account-customer-balance/index.tsx?fe9b","webpack:///src/modules/checkout-apple-pay/checkout-apple-pay.view.tsx?3cd4","webpack:///src/modules/account-profile-edit/components/account-profile-edit-input.tsx?3bba","webpack:///src/modules/password-reset/components/password-reset-loading-icon.tsx?29cc","webpack:///src/modules/account-order-templates-tile/index.ts?21a3","webpack:///src/modules/sign-in/components/index.ts?3da2","webpack:///src/modules/content-block/content-block.view.tsx?a86e","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-description.tsx?8d2f","webpack:///src/modules/organization-users-tile/components/account-organization-users-tile-links.tsx?2a03","webpack:///src/modules/organization-users-tile/organization-users-tile.tsx?9c60","webpack:///src/modules/loyalty-terms/index.ts?01e8","webpack:///src/modules/sign-up/components/sign-up-label.tsx?a805","webpack:///src/modules/b2b-requests-tile/index.ts?ef19","webpack:///src/modules/account-profile-edit/account-profile-edit.tsx?a9d6"],"names":["PasswordReset","React","constructor","props","super","moduleClassName","handleHeadingChange","event","this","config","heading","text","target","value","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","map","obj","ID","toLowerCase","newPasswordRegex","PAT","reenterPasswordRegex","resources","message","verifying_blurb","loadingMessage","Object","assign","PasswordRegex","defaultRegex","source","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","data","render","viewProps","_objectSpread","viewState","isShowLoading","passwordReset","moduleProps","className","classnames","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","defaultAADConainer","id","style","display","aadConainer","Msdyn365","editProps","onEdit","requestContext","passwordResetLocalAccount","_renderLocalAccount","renderView","localAccount","items","_renderInput","newPasswordLabelText","confirmPasswordLabelText","errorMessage","PasswordResetErrorComponent","key","passwordEntryMismatchError","requiredFieldMissingError","fieldIncorrectError","buttonsWrapper","buttons","PasswordResetButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","type","labelText","pattern","wrapper","label","PasswordResetLabelComponent","forId","input","PasswordResetInputComponent","__decorate","observable","observer","PasswordResetError","_ref","errorClassName","role","SignUpSuccess","successClassName","OrderLookupViewComponent","_orderLookupForm$clas","_submitButton$classNa","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","paragraph","orderLookupForm","renderOrderLookupInputField","orderNumberInput","submitButton","additionalProperties","registeredUserMessage","fieldErrorMessage","Module","Node","ArrayExtensions","hasElements","item","submitButtonLabelText","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","onChange","undefined","AccountProfileEditLoadingIcon","assembleNode","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","ctaLink","index","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","push","additionalContentNode","additionalContentItems","ContentCardLinks","_mapEditableLinks","linkdata","length","editableLinks","forEach","payLoad","getPayloadObject","contentAction","etext","attributes","getTelemetryAttributes","btnClass","onClick","onTelemetryClick","ContentBlock","handleTextChange","handleParagraphChange","handleLinkTextChange","_heading$tag","_this$props$context$r","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","error","contentBlockviewProps","title","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","SocialShareView","SocialShareList","SocialShareItemElements","SocialShareItem","SocialShare","createElement","SocialShareElement","PasswordResetItem","PasswordResetLoading","_ref3","PasswordResetView","_ref2","button","LocalAccount","_renderSitePicker","_renderSiteOptionsList","SitePickerMenuList","SitePickerMenuListItem","SitePickerMenuListItemArray","options","onMouseLeave","resetSiteOptionsState","isMobileView","SitePicker","_props$SitePickerMenu","SitePickerMobileContainer","renderSiteOptions","_renderMobileView","_props$config$heading","SitePickerMenu","SitePickerMenuSpan","siteOptionsState","_renderDesktopView","AccountAddressTileView","AccountAddressTile","description","AccountInvoiceTileDescription","AccountInvoiceTileLinks","AccountInvoiceTile","_data$customerBalance","cultureFormatter","formatCurrency","currencyCode","accountInvoiceTileDescription","invoiceTotalAmount","customerBalance","result","OpenInvoiceBalance","toFixed","format","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","toLength","toString","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","RegExp","string","rx","S","res","done","global","fullUnicode","unicode","lastIndex","A","n","matchStr","CheckoutApplePay","applePaySdkId","handlePayButton","console","log","handler","onValidation","validateMerchant","onAuthorize","authorizePayment","onCancel","cancelPayment","onPaymentMethodUpdate","updatePaymentMethod","onShippingMethodUpdate","updateShippingMethod","CreateApplePaySession","loadPaymentConnectorSdk","cardPaymentAcceptPoint","AcceptPageContent","connectorSdk","sdk","document","appendChild","createTextNode","body","resolve","reject","validationEvent","_checkout$result","_cardPaymentAcceptPoi","checkout","JSON","stringify","validationUrl","cartId","checkoutCart","cart","Id","paymentConnectorId","PaymentConnectorId","settings","validationObject","domainName","location","hostname","validationBody","retrieveCardPaymentAcceptResultAsync","callerContext","actionContext","Buffer","from","then","async","validationResult","cardPaymentAcceptResult","catch","_this$props$data$card","script","src","onerror","applePayButton","Button","checkoutApplyPay","classNames","AccountProfileEditButton","disabled","IAccountProfileDescription","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","cartLine","MsDyn365","isBrowser","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","errors","Wrapper","header","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","cartlineId","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","groupTitle","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","CartView","_props$context$action","_props$cart","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","SignUpText","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","setState","IssueLoyaltyInput","apiSettings","issueLoyalty","debug","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","_this$props$context$a2","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","status","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","CatalogPickerViewFunctionComponent","catalogPicker","catalogs","IAccountWishlistTileDescription","AccountWishlistTileLinks","AccountWishlistTile","accountWishlistTileDescription","wishlists","wishlistsCount","CommerceListLines","DescriptionComponent","createSearchResultModal","modalProps","refineMenu","sortByDropDown","modalHeader","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titleCount","SearchResultContainerView","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","isMobile","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","searchTerm","getQueryParams","pathName","decodeURIComponent","pathname","decodeURI","search","substr","indexOf","replace","split","param","values","q","noResultsMessage","labelGroup","renderErrorLabel","responseErrorMessage","errorMessageClassName","renderRegisteredUserMessage","signInLinkClassName","registeredUserClassName","orderLookupRegisteredUserText","orderLookupViewAccountText","orderLookupSignInLinkText","infoMessage","signInText","renderFieldErrors","orderLookupFieldValidationErrorMessage","RenderOrderLookupAdditionalFieldInput","_getOrderLookupAdditionalFields","additionalFieldLabel","additionalFieldError","additionalFieldInput","additionalFieldLabelClassName","inputType","name","isValidAdditionalFieldName","additionalFieldValidationMessage","RenderOrderLookupFormFields","_getOrderLookupFields","orderLookupLabelClassName","orderLookupLabel","ref","inputReference","fieldErrorClassName","isInputTypeError","renderAlert","isValidInputField","OrderLookupSearchValues","OrderLookup","isEmailValue","isOrderNumberValue","orderLookupExtensibleEnum","handleSubmit","orderNumber","email","orderLookupValue","orderStatusLookUpParametersType","orderLookupName","_validateOrderLookupForm","_Msdyn365$getUrlSync","actionContextValue","orderDetailsPath","baseUrl","URL","redirectUrl","searchParameters","searchParams","set","fieldName","StringExtensions","isNullOrWhitespace","toLocaleLowerCase","fieldValue","_this$orderNumberInpu","_this$emailInputRef$c","orderNumberInputRef","current","emailInputRef","additionalPropertyStates","isAdditionalFieldError","isKeyExistInAdditionalFieldArray","labelName","isValidFieldName","additionalfieldErrorMessage","ordernumber","isOrdNumberError","isReqError","isEmailError","isValidEmailError","isValidLookupField","isValidAdditionalLookupField","isDisabled","_renderAlert","orderLookupEmailValidationErrorMessage","orderLookupRequiredTextErrorMessage","requiredErrorMessage","isNullOrEmpty","emailValidationErrorMessage","isRequireError","isEmailValidError","isValidEmailInput","_renderOrderNumberAlert","orderLookupOrderNumberValidationErrorMessage","_renderOrderLookupInput","orderLookupEmailLabel","orderLookupEmailAriaLabel","_additionalFieldValidation","isFieldValid","test","isValid","isDisable","trim","EmailRegex","isEmailValid","orderLookupSearchAdditionalFields","_item$labelName","_item$ariaLabel","_item$validationMessa","validationMessage","_context$request$user","orderLookupDefaultHeadingText","orderLookupButtonLabel","orderLookupFormAriaLabel","orderLookupOrderNumberLabel","orderLookupOrderNumberAriaLabel","orderLookupSubmitAriaLabel","headingText","headingTag","orderLookupHeading","_createParagraph","autoComplete","onSubmit","submit","_renderAdditionalFields","_getExtensibleEnumera","_getExtensibleEnumera2","isOrderLookupAdditionalFieldValid","isOrderLookupFieldValid","getExtensibleEnumerations","StoreOperationsDataActions","getExtensibleEnumerationsAsync","find","TypeName","ExtensibleEnumerations","orderLookupAdditionalParameter","validateOrderLookupField","orderStatusLookUpParameter","isValidField","Name","validateOrderLookupAdditionalField","orderStatusLookUpAdditionalParameters","isValidAdditionalField","_item$fieldKey","fieldKey","validateAdditionalFieldWithProxy","some","setLookupFieldState","additionalFieldsInput","SignUpError","PasswordResetLoadingMessage","AccountProfileEditLabel","htmlFor","disclaimer","isEmailVerificationRequried","templateVersion","emailRegex","VERIFY","isGivenNameVerificationRequried","isSurnameVerificationRequried","UX_INPUT_TYPE","PAT_DESC","invalidPasswordError","invalidEmailAddressError","errorMessages","required_field","getValue","v1Value","v2Value","signUp","SignUpLoadingIconComponent","SignUpLoadingMessageComponent","signUpLocalAccount","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","emailAddressLabelText","passwordLabelText","emailVerification","isRequired","verificationCodeLabelText","verificationControlWrapper","buttonWrapper","SignUpButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","successMessage","SignUpSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","SignUpErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","givenNameVerification","givenName","requiredFieldMissingSummaryError","surnameVerification","surname","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cssClassName","SignUpLabelComponent","SignUpInputComponent","BusinessFormItem","BusinessUserForm","modalClassName","FormWrapper","modalHeading","modalDescription","inputs","toggle","_renderModal","BusinessUserDetails","selectedUser","FirstName","LastName","userFullName","keys","InputID","isModalOpen","headingSection","bodySection","footerSection","toggleModal","wrapClassName","autoFocus","fade","applicationNode","ModalHeader","ModalFooter","BusinessOrganizationList","OrganizationUserList","moduleContainer","noUsersText","addUserButton","organizationListTable","form","formType","requestAccountStatementButton","requestStatementModal","ButtonList","_getForm","formProps","FormInput","fieldReference","placeholder","FormLabel","asteriskText","FormButton","FormFieldError","_ref4","FormType","InputType","renderInputSection","asteriskAfterLabel","onInputChange","element","customClass","maxChars","_this$props$config","BusinessFormDefaultInputs","Text","businessUserFirstNameLabelText","businessUserLastNameLabelText","Email","businessUserEmailAddressLabelText","SpendingLimit","businessUserSpendingLimitLabelText","delayFocus","formChildReference","userFormEditReference","userFormDeleteReference","_handleAddUserButtonClicked","newForm","formItems","newUser","B2BUserId","Random","Guid","generateGuid","isFormActive","Add","referenceBack","addUserButtonReference","hasFormError","hasActionError","selectedUserData","_handleAddEditFormSaveButton","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","reload","trace","addOrganizationUser","AddOrganizationUserInput","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","_handleDeleteIcon","displayedUserData","TableDataType","Price","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","isReady","_isFormReady","formItem","match","_formatPrice","price","_getCurrentUrl","reqContext","url","requestUrl","_getViewport","device","Type","innerWidth","xs","w","sm","md","lg","_toggleStatementRequestDropdown","isStatementRequestAdminDropdownOpen","_updateFromDate","newFromDate","statementRequestFromDateString","_updateToDate","newToDate","statementRequestToDateString","_showRequestStatementModal","isFullOrg","statementRequestFullOrg","isStatementRequestModalOpen","_requestStatement","customer","currentUser","users","_getB2BUserId","statementRequest","FromDate","Date","ToDate","IsForFullOrganization","RequestedUserId","RequestingUserEmail","DeliveryTypeValue","BusinessPartnerOperationDeliveryType","BusinessPartnerUsersDataActions","requestAccountStatementAsync","_closeStatementRequestModal","_this$statementReques","statementRequestButtonReference","focus","_onSelectRow","records","selectedRow","rowProps","isSelected","row","_toggleModal","bind","mobileExcludedColumns","Status","_viewport","_updateViewport","submitButtonReference","addedReference","businessUserSelectedUserDisplayName","addEventListener","componentWillUnmount","removeEventListener","_this$formChildRefere","_this$submitButtonRef","_this$props$data$cust","businessUserAddUserButtonText","businessUserLoadingMessage","businessUserEmptyListMessage","businessUserErrorGettingUsersMessage","userAccountStatementLabel","fullOrganizationLabel","requestStatementButtonLabel","statementRequestModalHeaderLabel","cancelLabel","fromDateLabel","toDateLabel","submitRequestLabel","sendToEmailLabel","selectedUserLabel","hasUsers","AddUser","addUserAttributes","errorProps","Heading","innerRef","modalState","Table","_createTableProps","_renderUserForm","_renderUserDetails","AdminRequestStatementButton","buttonReference","onRequestStatement","onToggleDropdown","myUserAccountLabel","isDropdownShowing","RequestStatementModal","fromDateString","toDateString","onChangeFromDate","onChangeToDate","canSubmitRequest","canSubmitStatementRequest","modalHeaderLabel","onSubmitRequest","selectedUserName","tableSort","showPagination","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserActionButtonText","businessUserPaginationAriaLabel","columnSortAriaLabel","tableData","_createTableItems","headings","includes","sortable","rows","editLinkText","deleteLinkText","viewLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","enableToModify","actionLinkText","showCheckBoxes","isSortable","resourcePrefix","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","itemPerPage","prevText","nextText","paginationText","isSingleSelectOnly","tableAriaLabel","tableTabIndex","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","actions","onDelete","onView","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","StatusValue","FullName","buttonReferences","edit","delete","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","computed","SignUpButton","accountAddressTileDescriptionForSingleAddress","accountAddressTileDescriptionForMultipleAddresses","address","addressCount","accountAddressTileDescription","AccountProfileEditError","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","OrderHistoryView","_ref8","orderHistoryProps","alert","emptyMessage","backToShoppingLink","list","table","moreButton","CatalogPicker","PureComponent","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","RecordId","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","getUrlSync","fullUrl","changeCatalogButtonText","_this$props$data$cata2","reactKey","String","firstOrDefault","Images","tabIndex","Image","generateImageUrl","Uri","galleryImageSettings","altText","AltText","loadFailureBehavior","SignUpLoadingIcon","LoyaltySignUpView","AccountLoyaltyTileLinks","AccountLoyaltyTile","signUpLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","SignUpItem","SignUpEmailVerification","SignUpGivenNameVerificationComponent","SignUpSurnameVerificationComponent","SignUpLoading","SignUpView","AccountOrderTemplatesTileView","AccountOrderTemplatesTile","AccountProfileEditItem","AccountProfileEditLoading","AccountProfileEditView","accountProfileEdit","accountProfileEditLocalAccount","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","viewport","navigationMenuSource","menuItemList","locale","nameTranslations","nameTranslation","Language","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","viewports","h","xl","lazyload","Navigation","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","menuItemData","mergedData","categories","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","Retail","CMSItemIdInit","imageDestinationURL","_getCMSNestedChildren","Cms","shouldOpenNewTab","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","_renderAttributes","_this$props$accountPr","_this$props$accountPr2","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","att","attributeDefinition","attribute","IsHidden","_renderAttribute","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","disableBtn","attributesContainerRef","showPhone","_renderPhone","showVatNumber","_renderVatNumber","attributesSaveExceptionMessage","_enableAttributes","editRef","_saveAttributes","_disableAttributes","phoneSectionHeading","_onPhoneChange","phone","_renderError","vatNumberSectionHeading","_onVatNumberChange","vatNumber","customAttribute","ExtDataType","Value","Integer","Decimal","_renderIntegerDecimalInput","_renderTextInputOrSelect","TrueFalse","_renderBoolean","attributeProps","_getAttributeProps","displayName","_onAttributeChange","IsMandatory","isEnumeration","IsEnumeration","EnumerationDetails","hasNoValue","_onAttributeSelect","selected","option","EnumerationValue","toggleState","arialabel","attributeToggleButtonAriaLabel","ariaPressed","toggleValue","TextComponent","toggleDisableText","_onAttributeCheck","toggleEnableText","attributeName","attributeError","attributePayloadData","isMandatory","getElementsByClassName","_setFocus","initialAttributes","initialPhone","initialVatNumber","currentTarget","selectedOptions","selectedIndex","_getAttributes","showAttributesArray","custmerAttributes","Attributes","showAttribute","defaultValue","AttributeValue","DataTypeValue","IntegerValue","DecimalValue","StringValue","BooleanValue","_addOrUpdateAttribute","hasValue","entries","payloadData","dataTypeValue","decimalValue","typeError","attributeInputTypeErrorText","lowerBoundValue","upperBoundValue","rangeError","attributeInputRangeErrorText","attributeInputValueExceedsMaximumErrorText","attributeInputValueExceedsMinimumErrorText","integerValue","trimValue","attributeInputStringMaxLengthErrorText","textValue","booleanValue","attributeInputMandatoryErrorText","findIndex","splice","Attribute","recordId","Units","ExtensionProperties","KeyName","Phone","VATNumber","VatNumber","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","initialCustomerAttributes","exception","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","reaction","AccountProfileLinks","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonYesText","buttonNoText","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","editButtonAriaLabel","shouldRenderAttributes","editLink","get","accountProfileWrapper","emailSection","_renderEmailSection","nameSection","_renderNameSection","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","AccountWishlistTileView","slots","socialShareItems","cookies","isConsentGiven","viewprops","caption","orientation","OrganizationUsersTileView","OrganizationUsersTile","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountProfileView","PasswordResetInput","AccountWelcomeTile","accountInfo","accountInformation","IAccountAddressTileDescription","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","_this$props$data$feat","RetailB2BEcommerceFeatureState","featureState","params","isEditor","IsEnabled","IsB2b","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","_this$_sitePickerMenu3","_this$_sitePickerMenu4","nextFocus","activeElement","_this$_sitePickerMenu5","_this$_sitePickerMenu6","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu7","_this$_sitePickerMenu8","_this$_sitePickerMenu9","_this$_sitePickerMenu10","_handleOutsideClick","_this$_sitePickerMenu11","_this$_sitePickerMenu12","_handleChange","createRef","_renderSiteOptions","_document","_document2","_document2$body","_document3","_document4","_document4$body","_this$props$config$he","_this$props$config$he2","Drawer","toggleButtonText","openGlyph","closeGlyph","glyphPlacement","_renderSitePickerImage","expandSiteOptionsState","e","preventDefault","cookieConfig","maxAge","defaultImageSettings","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","AccountLoyaltyTileView","PasswordResetButton","IAccountProfileText","AccountWelcomeTileView","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","promotionalImage","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","_categoryImage$imageS","categoryImageSettings","menuItemRef","_this$menuItemRef$cur","children","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","i","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","isParent","imagesource","onMouseOver","_renderPromotionalLink","level","currentItem","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","AccountProfileEditLoadingMessage","AccountAddressTileLinks","PasswordResetLabel","IAccountLoyaltyTileDescription","SignUpLoadingMessage","CheckoutApplyPayView","AccountProfileEditInput","PasswordResetLoadingIcon","renderAdditionalContent","_additionalContent$ad","ContentBlockView","AccountOrganizationUsersTileDescription","AccountOrganizationUsersTileLinks","accountOrganizationUsersTileDescriptionForSingleUser","accountOrganizationUsersTileDescriptionForMultipleUsers","numUsers","accountOrganizationUsersTileDescription","IsB2bAdmin","SignUpLabel","AccountProfileEdit","onTextBoxChange","PRE","_htmlDecode","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","str","innerHTML","childNodes","nodeValue","AccountProfileEditErrorComponent","AccountProfileEditButtonComponent","showEmail","AccountProfileEditLabelComponent","AccountProfileEditInputComponent"],"mappings":"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","file":"static/js/11.561ef4f38ba84549ded4.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordReset extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps) {\n super(props);\n\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPasswordResetProps, nextState: IPasswordResetViewState): 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 { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetLocalAccount: this._renderLocalAccount()\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 // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex)\n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default PasswordReset;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default SignUpSuccess;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderLookupViewProps } from './order-lookup';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns JSX Element.\n */\nexport const OrderLookupViewComponent: React.FC = props => {\n const {\n orderLookup,\n orderLookupContainer,\n orderLookupAdditionalFieldContainer,\n heading,\n paragraph,\n orderLookupForm,\n renderOrderLookupInputField,\n orderNumberInput,\n errorMessage,\n submitButton,\n additionalProperties,\n registeredUserMessage,\n fieldErrorMessage\n } = props;\n return (\n \n \n {heading}\n {paragraph}\n \n {orderNumberInput}\n {renderOrderLookupInputField}\n {ArrayExtensions.hasElements(additionalProperties) && (\n \n {additionalProperties.map((item: JSX.Element) => (\n {item}\n ))}\n \n )}\n {fieldErrorMessage}\n \n {props.submitButtonLabelText}\n \n {errorMessage}\n \n {registeredUserMessage}\n \n \n );\n};\n\nexport default OrderLookupViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpInputProps {\n id?: string;\n hasFocus?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface ISignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst SignUpInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default SignUpInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountCustomerBalanceTile from './account-customer-balance-tile';\nimport AccountCustomerBalanceTileView from './account-customer-balance-tile.view';\n\nexport * from './account-customer-balance-tile';\nexport * from './account-customer-balance-tile.data';\nexport {\n IAccountCustomerBalanceTileConfig,\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileResources\n} from './account-customer-balance-tile.props.autogenerated';\nexport * from './account-customer-balance-tile.view';\nexport * from './components';\n\nexport { AccountCustomerBalanceTile, AccountCustomerBalanceTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\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 btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\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 ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './account-address-tile-description';\nexport * from './account-address-tile-links';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountAddressTileViewProps } from './account-address-tile';\n\nconst AccountAddressTileView: React.FC = props => {\n const { AccountAddressTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountAddressTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountAddressTile from './account-address-tile';\nimport AccountAddressTileView from './account-address-tile.view';\n\nexport * from './account-address-tile';\nexport * from './account-address-tile.data';\nexport {\n IAccountAddressTileConfig,\n IAccountAddressTileProps,\n IAccountAddressTileResources,\n ILinksData\n} from './account-address-tile.props.autogenerated';\nexport * from './account-address-tile.view';\nexport * from './components';\n\nexport { AccountAddressTile, AccountAddressTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './loyalty-terms-modal';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountProfile from './account-profile';\nimport AccountProfileView from './account-profile.view';\n\nexport * from './account-profile';\nexport * from './account-profile.data';\nexport {\n EmailAddressSectionHeadingTag,\n IAccountProfileConfig,\n IAccountProfileProps,\n IAccountProfileResources,\n IEmailAddressSectionHeadingData,\n INameSectionHeadingData,\n IPersonalizationSectionHeadingData,\n IPreferencesSectionHeadingData,\n NameSectionHeadingTag,\n PersonalizationSectionHeadingTag,\n PreferencesSectionHeadingTag\n} from './account-profile.props.autogenerated';\nexport * from './account-profile.view';\nexport * from './components';\n\nexport { AccountProfile, AccountProfileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountInvoiceTileDescription {\n description: string;\n}\n\nexport const AccountInvoiceTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-invoice-tile.props.autogenerated';\n\nexport interface IAccountInvoiceTileLinks {\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 AccountInvoiceTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-invoice-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountInvoiceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileData } from './account-invoice-tile.data';\nimport { IAccountInvoiceTileProps } from './account-invoice-tile.props.autogenerated';\nimport { AccountInvoiceTileDescription } from './components';\nimport LinksComponent from './components/account-invoice-tile-links';\n\nexport interface IAccountInvoiceTileViewProps extends IAccountInvoiceTileProps {\n AccountInvoiceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountInvoiceTile component.\n * @extends {React.PureComponent>}\n */\nclass AccountInvoiceTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountInvoiceTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const {\n config,\n data,\n resources,\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n const { className, heading, links } = config;\n const { accountInvoiceTileDescription } = resources;\n\n const openinvoiceAmount = data.customerBalance.result?.OpenInvoiceBalance || 0;\n const invoiceTotalAmount: string | undefined = formatCurrency(openinvoiceAmount.toFixed(2), currencyCode);\n\n const description = invoiceTotalAmount && format(accountInvoiceTileDescription, invoiceTotalAmount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountInvoiceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-invoice-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && \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 AccountInvoiceTile;\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { retrieveCardPaymentAcceptResultAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport { CardPaymentAcceptPoint } from '@msdyn365-commerce/retail-proxy';\nimport { ICheckoutApplePayData } from './checkout-apple-pay.data';\nimport { ICheckoutApplePayProps } from './checkout-apple-pay.props.autogenerated';\n\ninterface ICheckoutApplePayState {\n paymentConnectorId?: string;\n}\n\ninterface IValidationEvent {\n validationUrl: string;\n}\n\ninterface IAppleSessionHandler {\n onValidation(resolve: (result: string) => void, reject: () => void, validationEvent: IValidationEvent): void;\n onAuthorize(): void;\n onCancel(): void;\n onPaymentMethodUpdate?(): void;\n onShippingMethodUpdate?(): void;\n}\n\nexport interface ICheckoutApplePayViewProps extends ICheckoutApplePayProps<{}>, ICheckoutApplePayState {\n className?: string;\n checkoutApplyPay: IModuleProps;\n applePayButton?: React.ReactNode;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const window: any;\n\n/**\n *\n * CheckoutApplePay component\n * @extends {React.PureComponent>}\n */\nexport class CheckoutApplePay extends React.PureComponent, ICheckoutApplePayData> {\n private readonly moduleClassName: string = 'ms-checkout-apple-pay';\n private readonly applePaySdkId = 'd365-apple-pay-sdk';\n\n public constructor(props: ICheckoutApplePayProps) {\n super(props);\n }\n\n public componentDidMount() {\n // load JS portion of payment connector for ApplePay\n this.props.data.cardPaymentAcceptPoint?.then(res => this.loadPaymentConnectorSdk(res));\n\n // load official ApplePay JS SDK.\n const script = document.createElement('script');\n script.src = 'https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js';\n script.async = false;\n script.onerror = () => console.log('unable to load apple script');\n document.body.appendChild(script);\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className }\n // telemetry\n } = this.props;\n\n const applePayButton = ;\n const viewProps: ICheckoutApplePayViewProps = {\n ...this.props,\n ...this.state,\n className,\n checkoutApplyPay: {\n moduleProps: this.props,\n className: classNames(this.moduleClassName, className)\n },\n applePayButton\n };\n\n return this.props.renderView(viewProps);\n }\n\n public handlePayButton = () => {\n console.log('[handlePayButton] pay with apple clicked.');\n\n const handler: IAppleSessionHandler = {\n onValidation: this.validateMerchant,\n onAuthorize: this.authorizePayment,\n onCancel: this.cancelPayment,\n onPaymentMethodUpdate: this.updatePaymentMethod,\n onShippingMethodUpdate: this.updateShippingMethod\n };\n\n // calling connector JS to create payment session.\n window.CreateApplePaySession(handler);\n };\n\n private loadPaymentConnectorSdk = (cardPaymentAcceptPoint: CardPaymentAcceptPoint) => {\n if (!cardPaymentAcceptPoint.AcceptPageContent) {\n this.props.telemetry.error(`Card payment accept page content can't be null or empty`);\n }\n\n const connectorSdk: string = cardPaymentAcceptPoint.AcceptPageContent || '';\n const sdk = document.createElement('script');\n sdk.id = this.applePaySdkId;\n sdk.type = 'text/javascript';\n sdk.appendChild(document.createTextNode(connectorSdk));\n document.body.appendChild(sdk);\n };\n\n private validateMerchant = (resolve: (result: string) => void, reject: () => void, validationEvent: IValidationEvent): void => {\n const {\n data: { checkout, cardPaymentAcceptPoint },\n telemetry\n } = this.props;\n\n console.log(`[validateMerchant] received event: ${JSON.stringify(validationEvent)}`);\n const validationUrl = validationEvent?.validationUrl || '';\n if (!validationUrl) {\n telemetry.error(`Validation Url can't be null or empty`);\n reject();\n }\n\n const cartId = checkout?.result?.checkoutCart.cart.Id || '';\n if (!cartId) {\n telemetry.error('Card identifier can not be null or empty');\n reject();\n }\n\n const paymentConnectorId = cardPaymentAcceptPoint?.result?.PaymentConnectorId || '';\n if (!paymentConnectorId) {\n telemetry.error('Connector identifier can not be null or empty');\n reject();\n }\n\n const settings = {\n PaymentConnectorId: paymentConnectorId\n };\n\n console.log(`[validationCallback] validationEvent: ${JSON.stringify(validationEvent)}`);\n const validationObject = {\n domainName: window.location.hostname,\n validationUrl: validationUrl\n };\n const validationBody = JSON.stringify(validationObject);\n console.log(`[handlePayButton] validationBody: ${validationBody}`);\n\n retrieveCardPaymentAcceptResultAsync(\n { callerContext: this.props.context.actionContext },\n Buffer.from(validationBody).toString('base64'),\n [],\n cartId,\n settings\n )\n .then(async cardPaymentAcceptResult => {\n const validationResult: string = JSON.stringify(cardPaymentAcceptResult);\n console.log(`[retrieveCardPaymentAcceptResultAsync] result: ${validationResult}`);\n resolve(validationResult);\n })\n .catch(error => {\n telemetry.error(`retrieveCardPaymentAcceptResultAsync failed, error: ${error}`);\n reject();\n });\n };\n\n private authorizePayment = (): void => {\n console.log('authorizePayment');\n };\n\n private cancelPayment = (): void => {\n console.log('cancelPayment');\n };\n\n private updateShippingMethod = (): void => {\n console.log('updateShippingMethod');\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private updatePaymentMethod = (): void => {\n console.log('updatePaymentMethod');\n };\n}\n\nexport default CheckoutApplePay;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './account-loyalty-tile-description';\nexport { IAccountLoyaltyTileLinks } from './account-loyalty-tile-links';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountProfileDescription {\n className: string;\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileDescription: React.FC = ({ className, description }) => (\n

{description}

\n);\n\nexport default IAccountProfileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartlinesViewProps, ICartResources, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n _renderCartLinesGroup(props, props.resources)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n mulitplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n const { emptyCartText } = resources;\n\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map((cartLine, index) => {\n return (\n
\n {cartLine.cartline}\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {mulitplePickUp ? (\n \n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : cartLine.addToOrderTemplate ? (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n ) : (\n <>\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{emptyCartText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * On Toggle function.\n * @param cartLine -Cartline.\n * @param isBopisSelected -Boolean.\n * @returns Set state of button.\n */\nconst onToggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * On change store function.\n * @param cartLine -CartLine items prop.\n * @returns Set state of button.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore && cartLine.pickUpInStore.callbacks.toggleBopis(true);\n};\n\nconst _renderBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || errorData.errors.length === 0) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\nconst _renderCartLinesGroup = (props: ICartViewProps, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && props.cartLinesGroup.length > 0) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {_renderCartLinesGroupHeader(\n cartlines[0],\n props.storeSelector,\n resources,\n _countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\nconst _renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n storeSelector: React.ReactNode | undefined,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {_renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\nconst _renderGroupBOPISBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\nconst _countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity || 0);\n }, 0);\n return countItem;\n};\n\nconst _renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

\n ({count}\n {` `}\n {suffix})\n

\n
\n \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): 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 {\n config: { className, heading, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: loyaltyCard.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\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 public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountWishlistTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountWishlistTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountWishlistTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-wishlist-tile.props.autogenerated';\n\nexport interface IAccountWishlistTileLinks {\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 AccountWishlistTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-wishlist-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountWishlistTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileData } from './account-wishlist-tile.data';\nimport { IAccountWishlistTileProps } from './account-wishlist-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-wishlist-tile-description';\nimport LinksComponent from './components/account-wishlist-tile-links';\n\nexport interface IAccountWishlistTileViewProps extends IAccountWishlistTileProps {\n AccountWishlistTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountWishlist component.\n * @extends {React.PureComponent>}\n */\nclass AccountWishlistTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccountWishlistTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountWishlistTileDescription } = resources;\n const wishlists = data.wishlists.result;\n\n const wishlistsCount = ((wishlists && wishlists.length && wishlists[0].CommerceListLines) || []).length;\n const description = format(accountWishlistTileDescription || 'You have {0} items in the Wishlist.', wishlistsCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountWishlistTile: {\n moduleProps: this.props,\n className: classnames('ms-account-wishlist-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \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 AccountWishlistTile;\n","\r\nimport { ICategoryHierarchyViewProps, IRefineMenuViewProps, ISearchResultContainerViewProps, ISearchResultModalViewProps, ISortByViewProps, ITitleViewProps } from '@msdyn365-commerce-modules/search-result-container';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { getQueryParams } from '../../../helpers/query-param-helpers';\r\nimport * as React from 'react';\r\n\r\nconst SearchResultContainerView: React.FC = props => {\r\n const { SearchResultContainer, products, pagination, ProductsContainer, ProductSectionContainer, isMobile, modalToggle, searchResultModal, TitleViewProps,\r\n refineMenu, categoryHierarchy, sortByOptions, CategoryNavContainer, RefineAndProductSectionContainer, errorMessage } = props;\r\n\r\n const searchTerm = getQueryParams().q; // Query param for search term is just the letter 'q'\r\n\r\n const noResultsMessage = (\r\n \r\n

No products found for the given search term: \"{searchTerm}\". Perhaps try a different term or brand?

\r\n

Can’t find what you’re looking for? Not all products are available online currently.\r\n Please call us at 0800 200 600 or click the link below to email us.

\r\n Contact us\r\n
\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n \r\n {renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {/* {choiceSummary} */}\r\n {!errorMessage && modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions)}\r\n \r\n {errorMessage && noResultsMessage}\r\n {products}\r\n \r\n
\r\n {pagination}\r\n
\r\n
\r\n );\r\n }\r\n return (\r\n \r\n \r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n \r\n \r\n {refineMenu && renderRefiner(refineMenu)}\r\n \r\n
\r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {/* {choiceSummary} */}\r\n
\r\n {!errorMessage &&
\r\n {sortByOptions && renderSort(sortByOptions)}\r\n
}\r\n \r\n {errorMessage && noResultsMessage}\r\n {products}\r\n \r\n
\r\n {pagination}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nconst createSearchResultModal = (modalProps: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element => {\r\n return React.cloneElement(modalProps.modal, {}, modalProps.modalHeader, createModalBody(modalProps, refineMenu, sortByDropDown), modalProps.modalFooter);\r\n};\r\n\r\nconst createModalBody = (props: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown), renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n \r\n {submenu}\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown) {\r\n return (\r\n \r\n {sortByDropDown}\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n \r\n

\r\n {title.titleCount}\r\n

\r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;","export const getQueryParams = (): any => {\r\n const pathName = decodeURIComponent(window.location.pathname);\r\n const queryString = decodeURI(window.location.search) || pathName.substr(pathName.indexOf('?'), pathName.length - 1);\r\n return queryString\r\n .replace('?', '')\r\n .split('&')\r\n .map(param => param.split('='))\r\n .reduce((values, [key, value]) => {\r\n values[key] = value;\r\n return values;\r\n }, {});\r\n};","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ExtensibleEnumeration } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { IOrderLookupResources, IOrderLookupSearchAdditionalFieldsData } from '../order-lookup.props.autogenerated';\n\n/**\n * Render label.\n * @param className - Classname for label.\n * @param value - Text for label.\n * @returns -The JSX Element.\n */\nexport const labelGroup = (className: string, value: string): JSX.Element => {\n return
{value}
;\n};\n\n/**\n * Error label.\n * @param responseErrorMessage - Error message for label.\n * @param errorMessageClassName - Error message for class name.\n * @returns - Error ReactNode.\n */\nexport const renderErrorLabel = (responseErrorMessage: string, errorMessageClassName: string): React.ReactNode => {\n return responseErrorMessage &&
{responseErrorMessage}
;\n};\n\n/**\n * Registered user message.\n * @param resources - Resource values.\n * @param signInUrl - Signin url.\n * @param signInLinkClassName - Signin link classname.\n * @param registeredUserClassName - Registered user message classname.\n * @returns - ReactNode.\n */\nexport const renderRegisteredUserMessage = (\n resources: IOrderLookupResources,\n signInUrl: string,\n signInLinkClassName: string,\n registeredUserClassName: string\n): React.ReactNode => {\n const { orderLookupRegisteredUserText, orderLookupViewAccountText, orderLookupSignInLinkText } = resources;\n const message: string = orderLookupRegisteredUserText;\n const infoMessage: string = orderLookupViewAccountText;\n const signInText: string = orderLookupSignInLinkText;\n return (\n
\n {message}\n \n {signInText}\n \n {infoMessage}\n
\n );\n};\n\n/**\n * EmailValid submit.\n * @param email - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n};\n\n/**\n * Additional field validation for on submit.\n * @param name - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isAdditionalFieldValid = (name: string): boolean => {\n const regEx = new RegExp('^(?!\\\\s)[A-Za-z0-9\\\\s]+$', 'u');\n return regEx.test(name);\n};\n\n/**\n * Validate order lookup field against extensible enum.\n * @param orderStatusLookUpParameter - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupField = (\n orderStatusLookUpParameter: string,\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidField: boolean = false;\n for (const item of orderLookupExtensibleEnum) {\n if (item.Name.toLocaleLowerCase() === orderStatusLookUpParameter.toLocaleLowerCase()) {\n isValidField = true;\n return isValidField;\n }\n }\n return isValidField;\n};\n\n/**\n * Validate order lookup additional fields with proxy values.\n * @param value - Value to be validated.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateAdditionalFieldWithProxy = (value: string, orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n return !orderLookupExtensibleEnum.some(item => item.Name.toLocaleLowerCase() === value.toLocaleLowerCase());\n};\n\n/**\n * Validate order lookup additional fields against extensible enum.\n * @param orderStatusLookUpAdditionalParameters - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupAdditionalField = (\n orderStatusLookUpAdditionalParameters: IOrderLookupSearchAdditionalFieldsData[],\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidAdditionalField: boolean = false;\n if (ArrayExtensions.hasElements(orderStatusLookUpAdditionalParameters)) {\n orderStatusLookUpAdditionalParameters.map(item => {\n const fieldKey: string = item.fieldKey ?? '';\n if (!isValidAdditionalField) {\n isValidAdditionalField = validateAdditionalFieldWithProxy(fieldKey, orderLookupExtensibleEnum);\n }\n return isValidAdditionalField;\n });\n } else {\n isValidAdditionalField = false;\n }\n return isValidAdditionalField;\n};\n\n/**\n * Render validation message if field does not matches with extensible enum.\n * @param orderLookupFieldValidationErrorMessage - Order lookup validation message.\n * @returns - ReactNode.\n */\nexport const renderFieldErrors = (orderLookupFieldValidationErrorMessage: string): React.ReactNode => {\n return
{orderLookupFieldValidationErrorMessage}
;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Additional input field props.\n */\nexport interface IOrderLookupAdditionalFieldInfoInput {\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n additionalFieldLabel: string;\n additionalFieldLabelClassName: string;\n isValidAdditionalFieldName: boolean;\n additionalFieldValidationMessage: string;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup additional field props.\n */\nexport interface IOrderLookupAdditionalFieldInfo {\n additionalFieldLabel: React.ReactNode;\n additionalFieldInput: React.ReactNode;\n additionalFieldError: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupAdditionalFieldInput component.\n */\n@observer\nexport default class RenderOrderLookupAdditionalFieldInput extends React.Component {\n public constructor(props: IOrderLookupAdditionalFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupAdditionalFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupAdditionalFields().additionalFieldLabel}\n {this._getOrderLookupAdditionalFields().additionalFieldError}\n {this._getOrderLookupAdditionalFields().additionalFieldInput}\n
\n );\n }\n\n /**\n * Function to create the order lookup additional fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupAdditionalFields(): IOrderLookupAdditionalFieldInfo {\n return {\n additionalFieldLabel: labelGroup(this.props.additionalFieldLabelClassName, this.props.additionalFieldLabel),\n additionalFieldInput: (\n
\n \n
\n ),\n additionalFieldError: (\n
\n {!this.props.isValidAdditionalFieldName ? this.props.additionalFieldValidationMessage : ''}\n
\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Input field props.\n */\nexport interface IOrderLookupFieldInfoInput {\n inputReference?: React.RefObject;\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n orderLookupLabel: string;\n orderLookupLabelClassName: string;\n fieldErrorClassName: string;\n isInputTypeError: boolean;\n isValidInputField: boolean;\n renderAlert(className: string): JSX.Element;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup field props.\n */\nexport interface IOrderLookupFieldInfo {\n label: React.ReactNode;\n input: React.ReactNode;\n error: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupInputs component.\n */\n@observer\nexport default class RenderOrderLookupFormFields extends React.Component {\n public constructor(props: IOrderLookupFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupFields().label}\n {this._getOrderLookupFields().error}\n {this._getOrderLookupFields().input}\n
\n );\n }\n\n /**\n * Function to create the order lookup fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupFields(): IOrderLookupFieldInfo {\n return {\n label: labelGroup(this.props.orderLookupLabelClassName, this.props.orderLookupLabel),\n input: (\n
\n \n
\n ),\n error: (\n
\n {this.props.isInputTypeError ? this.props.renderAlert(this.props.name) : ''}\n {this.props.isValidInputField ? this.props.renderAlert(this.props.name) : ''}\n
\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { ExtensibleEnumeration, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport RenderOrderLookupAdditionalFieldInput from './components/order-lookup-additional-fields';\nimport RenderOrderLookupFormFields from './components/order-lookup-fields';\nimport {\n IOrderLookupProps,\n IOrderLookupSearchAdditionalFieldsData,\n orderStatusLookUpParametersType as orderStatusLookUpParametersTypes\n} from './order-lookup.props.autogenerated';\nimport {\n isAdditionalFieldValid,\n isEmailValid,\n renderErrorLabel,\n renderFieldErrors,\n renderRegisteredUserMessage,\n validateOrderLookupAdditionalField,\n validateOrderLookupField\n} from './utilities/order-lookup-utility';\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupViewProps extends IOrderLookupProps<{}> {\n additionalProperties: JSX.Element[] | undefined;\n orderLookup: IModuleProps;\n orderLookupContainer: INodeProps;\n orderLookupAdditionalFieldContainer: INodeProps;\n paragraph?: React.ReactNode;\n heading?: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n orderLookupForm?: INodeProps;\n renderOrderLookupInputField: JSX.Element | undefined;\n orderNumberInput?: JSX.Element | undefined;\n errorMessage?: React.ReactNode;\n fieldErrorMessage?: React.ReactNode;\n registeredUserMessage?: React.ReactNode;\n onChange?(event: React.ChangeEvent): void;\n submit?(): void;\n}\n\n/**\n * OrderLookupSearchValues -- supported values.\n */\nenum OrderLookupSearchValues {\n email = 'email',\n ordernumber = 'ordernumber'\n}\n\n/**\n * To render and handle state for additional order lookup fields.\n */\nexport interface IOrderLookupAdditionalFields {\n labelName: string;\n isValidFieldName: boolean;\n fieldValue: string;\n ariaLabel: string;\n additionalfieldErrorMessage: string;\n}\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupFormState {\n orderNumber: string;\n email: string;\n isOrdNumberError: boolean;\n isEmailError: boolean;\n isValidEmailError: boolean;\n isReqError: boolean;\n isDisabled: boolean;\n isValidLookupField: boolean;\n isValidAdditionalLookupField: boolean;\n responseErrorMessage: string;\n additionalProperties: IOrderLookupAdditionalFields[];\n}\n\n/**\n *\n * OrderLookup component.\n * @extends {React.PureComponent>}\n */\nclass OrderLookup extends React.PureComponent, IOrderLookupFormState> {\n public orderNumberInputRef: React.RefObject;\n\n public emailInputRef: React.RefObject;\n\n public isEmailValue: boolean = false;\n\n private requiredErrorMessage: string | undefined;\n\n private emailValidationErrorMessage: string | undefined;\n\n private isOrderNumberValue: boolean = false;\n\n private orderLookupExtensibleEnum: ExtensibleEnumeration[] = [];\n\n public constructor(props: IOrderLookupProps<{}>) {\n super(props);\n this.orderNumberInputRef = React.createRef();\n this.emailInputRef = React.createRef();\n const { config } = this.props;\n const { orderLookupSearchAdditionalFields } = config;\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n\n if (orderLookupSearchAdditionalFields) {\n for (const item of orderLookupSearchAdditionalFields) {\n additionalPropertyStates.push({\n labelName: item.labelName ?? '',\n isValidFieldName: true,\n fieldValue: '',\n ariaLabel: item.ariaLabel ?? '',\n additionalfieldErrorMessage: item.validationMessage ?? ''\n });\n }\n }\n\n this.state = {\n orderNumber: '',\n email: '',\n isOrdNumberError: false,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false,\n isDisabled: true,\n isValidLookupField: true,\n isValidAdditionalLookupField: false,\n responseErrorMessage: '',\n additionalProperties: additionalPropertyStates\n };\n }\n\n public render(): JSX.Element | null {\n const {\n config: { paragraph, heading },\n resources,\n context\n } = this.props;\n\n const {\n orderLookupDefaultHeadingText,\n orderLookupButtonLabel,\n orderLookupFormAriaLabel,\n orderLookupOrderNumberLabel,\n orderLookupOrderNumberAriaLabel,\n orderLookupSubmitAriaLabel,\n orderLookupFieldValidationErrorMessage\n } = resources;\n\n const { responseErrorMessage, isDisabled, orderNumber, isOrdNumberError } = this.state;\n\n const headingText = StringExtensions.isNullOrEmpty(heading?.text) ? orderLookupDefaultHeadingText : heading?.text;\n const headingTag = heading?.tag ?? 'h1';\n\n const moduleClassName = 'ms-order-lookup';\n const orderLookupContainerClassName = `${moduleClassName}__details`;\n const orderLookupHeadingClassName = `${orderLookupContainerClassName}__heading`;\n const orderLookupFormClassName = `${orderLookupContainerClassName}__form`;\n const orderLookupAdditionalFiledContainerClassName = `${orderLookupFormClassName}__additional-fields-container`;\n const orderLookupFormFieldsClassName = `${orderLookupFormClassName}__fields`;\n const orderNumberLabelClassName = `${orderLookupFormFieldsClassName}__order-number-label`;\n const orderNumberInputErrorClassName = `${orderLookupFormFieldsClassName}__order-number-input-error`;\n const submitButtonClassName = `${orderLookupFormClassName}__submit`;\n const labelErrorMessageClassName = `${moduleClassName}__error-message`;\n const registeredUserClassName = `${moduleClassName}__registered-user`;\n const signinLinkClassName = `${registeredUserClassName}__sign-in-link msc-btn`;\n\n const orderLookupHeading = (\n \n );\n\n const viewProps: IOrderLookupViewProps = {\n ...this.props,\n orderLookup: {\n moduleProps: this.props,\n className: moduleClassName\n },\n\n orderLookupContainer: {\n className: orderLookupContainerClassName\n },\n orderLookupAdditionalFieldContainer: {\n className: orderLookupAdditionalFiledContainerClassName\n },\n paragraph: paragraph && this._createParagraph(paragraph),\n heading: orderLookupHeading,\n\n renderOrderLookupInputField: this._renderOrderLookupInput(),\n orderLookupForm: {\n className: orderLookupFormClassName,\n tag: 'form',\n 'aria-label': orderLookupFormAriaLabel,\n name: 'orderLookupForm',\n role: 'form',\n autoComplete: 'off',\n onSubmit: this.handleSubmit\n },\n orderNumberInput: (\n \n ),\n\n submitButton: {\n className: submitButtonClassName,\n tag: Button,\n 'aria-label': orderLookupSubmitAriaLabel,\n type: 'submit',\n role: 'button',\n title: orderLookupButtonLabel,\n onClick: this.handleSubmit,\n disabled: isDisabled\n },\n\n submitButtonLabelText: orderLookupButtonLabel,\n errorMessage: renderErrorLabel(responseErrorMessage, labelErrorMessageClassName),\n fieldErrorMessage:\n (!this.state.isValidLookupField || this.state.isValidAdditionalLookupField) &&\n renderFieldErrors(orderLookupFieldValidationErrorMessage),\n registeredUserMessage: renderRegisteredUserMessage(\n resources,\n context.request.user.signInUrl ?? '',\n signinLinkClassName,\n registeredUserClassName\n ),\n onChange: this.onChange,\n submit: this.handleSubmit,\n additionalProperties: this._renderAdditionalFields()\n };\n return this.props.renderView(viewProps);\n }\n\n public async componentDidMount(): Promise {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { orderStatusLookUpParametersType, orderLookupSearchAdditionalFields } = config;\n let isOrderLookupAdditionalFieldValid: boolean = false;\n let isOrderLookupFieldValid: boolean = false;\n\n const getExtensibleEnumerations = await StoreOperationsDataActions.getExtensibleEnumerationsAsync({ callerContext: actionContext });\n this.orderLookupExtensibleEnum =\n getExtensibleEnumerations.find(item => item.TypeName === 'OrderLookupAdditionalCriteriaType')?.ExtensibleEnumerations ?? [];\n\n const orderLookupParameter: string = orderStatusLookUpParametersType ?? '';\n const orderLookupAdditionalParameter: IOrderLookupSearchAdditionalFieldsData[] = orderLookupSearchAdditionalFields ?? [];\n\n isOrderLookupFieldValid = validateOrderLookupField(orderLookupParameter, this.orderLookupExtensibleEnum);\n isOrderLookupAdditionalFieldValid = validateOrderLookupAdditionalField(\n orderLookupAdditionalParameter,\n this.orderLookupExtensibleEnum\n );\n this.setLookupFieldState(isOrderLookupFieldValid, isOrderLookupAdditionalFieldValid);\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 const { config } = this.props;\n config.paragraph = event.target.value;\n };\n\n /**\n * Sets isValidLookupField after validating with extensible emun.\n * @param isValidField - Sets the property.\n * @param isValidAdditionalField - Sets the additional field property.\n */\n public setLookupFieldState(isValidField: boolean, isValidAdditionalField: boolean): void {\n this.setState({ isValidLookupField: isValidField, isValidAdditionalLookupField: isValidAdditionalField });\n }\n\n /**\n * HandleSubmit submit.\n */\n public readonly handleSubmit = (): void => {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { additionalProperties, orderNumber, email } = this.state;\n const orderLookupValue = email;\n const { orderStatusLookUpParametersType } = config;\n const orderLookupName = orderStatusLookUpParametersType !== undefined ? orderStatusLookUpParametersType : '';\n const isValid: boolean = this._validateOrderLookupForm();\n if (isValid) {\n const actionContextValue: IActionContext = actionContext;\n const orderDetailsPath = Msdyn365.getUrlSync('orderDetails', actionContextValue) ?? '';\n if (orderDetailsPath) {\n const baseUrl = new URL(window.location.origin);\n const redirectUrl = new URL(orderDetailsPath, baseUrl);\n const searchParameters = redirectUrl.searchParams;\n\n searchParameters.set('confirmationId', orderNumber);\n searchParameters.set('propertyName', orderLookupName);\n searchParameters.set('propertyValue', orderLookupValue);\n\n if (ArrayExtensions.hasElements(additionalProperties)) {\n additionalProperties.map((item, index) => {\n const fieldName = !StringExtensions.isNullOrWhitespace(item.ariaLabel)\n ? item.ariaLabel.replace(' ', '').toLocaleLowerCase()\n : '';\n const fieldValue = !StringExtensions.isNullOrWhitespace(item.fieldValue) ? item.fieldValue : '';\n searchParameters.set(`field${index + 1}Name`, fieldName);\n searchParameters.set(`field${index + 1}Value`, fieldValue);\n return item;\n });\n }\n\n window.location.assign(redirectUrl.toString());\n }\n }\n };\n\n /**\n * OnChange event.\n * @param event - Value of input field.\n */\n public readonly onChange = (event: React.ChangeEvent): void => {\n const { additionalProperties } = this.state;\n const { config } = this.props;\n const { orderStatusLookUpParametersType } = config;\n const name = event.target.name || '';\n const value = event.target.value || '';\n this.isOrderNumberValue = !StringExtensions.isNullOrWhitespace(this.orderNumberInputRef.current?.value);\n this.isEmailValue = !StringExtensions.isNullOrWhitespace(this.emailInputRef.current?.value);\n\n if (orderStatusLookUpParametersType?.toLocaleLowerCase() === 'none') {\n this.isEmailValue = true;\n }\n\n this.setState({ responseErrorMessage: '' });\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isAdditionalFieldError: boolean = true as boolean;\n let isKeyExistInAdditionalFieldArray: boolean = false as boolean;\n\n for (const item of additionalProperties) {\n const fieldName: string = item.ariaLabel.replace(' ', '');\n if (fieldName.toLocaleLowerCase() === name.toLocaleLowerCase()) {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: true,\n fieldValue: value,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n } else {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: item.isValidFieldName,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n if (fieldName.toLocaleLowerCase() === orderStatusLookUpParametersType?.toLocaleLowerCase()) {\n isKeyExistInAdditionalFieldArray = true;\n }\n }\n\n for (const items of additionalPropertyStates) {\n if (StringExtensions.isNullOrWhitespace(items.fieldValue)) {\n isAdditionalFieldError = false;\n }\n }\n\n this.setState({ additionalProperties: additionalPropertyStates });\n\n if (!isKeyExistInAdditionalFieldArray) {\n switch (name.toLocaleLowerCase()) {\n case OrderLookupSearchValues.ordernumber: {\n this.setState({\n orderNumber: value,\n isOrdNumberError: false,\n isReqError: false\n });\n break;\n }\n case OrderLookupSearchValues.email: {\n this.setState({\n email: value,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false\n });\n break;\n }\n default: {\n this.setState({ isReqError: false });\n }\n }\n }\n\n if (\n this.isOrderNumberValue &&\n this.isEmailValue &&\n isAdditionalFieldError &&\n this.state.isValidLookupField &&\n !this.state.isValidAdditionalLookupField\n ) {\n this.setState({ isDisabled: false });\n } else {\n this.setState({ isDisabled: true });\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n const { context } = this.props;\n const { request } = context;\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n /**\n * Render order lookup validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupEmailValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isEmailError, email, isValidEmailError, isReqError } = this.state;\n if (isEmailError) {\n this.requiredErrorMessage = orderLookupRequiredTextErrorMessage;\n }\n\n if (!StringExtensions.isNullOrEmpty(email) && isValidEmailError) {\n this.emailValidationErrorMessage = orderLookupEmailValidationErrorMessage;\n }\n\n const isRequireError = isReqError;\n const isEmailValidError = isValidEmailError;\n const isValidEmailInput = className.toLocaleLowerCase() === OrderLookupSearchValues.email;\n return (\n <>\n {isRequireError && (\n \n {this.requiredErrorMessage}\n \n )}\n {isEmailValidError && isValidEmailInput && (\n \n {this.emailValidationErrorMessage}\n \n )}\n \n );\n };\n\n /**\n * Render order number validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderOrderNumberAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupOrderNumberValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isOrdNumberError, isReqError } = this.state;\n return (\n <>\n {isReqError && (\n \n {orderLookupRequiredTextErrorMessage}\n \n )}\n {isOrdNumberError && (\n \n {orderLookupOrderNumberValidationErrorMessage}\n \n )}\n \n );\n };\n\n private _renderAdditionalFields(): JSX.Element[] | undefined {\n const { additionalProperties } = this.state;\n const additionalFieldsInput: JSX.Element[] = [];\n for (const item of additionalProperties) {\n const name: string = item.ariaLabel.replace(' ', '');\n additionalFieldsInput.push(\n \n );\n }\n return additionalFieldsInput;\n }\n\n /**\n * Render Input field for order lookup.\n * @returns - IOrderLookupFieldInfo.\n */\n private readonly _renderOrderLookupInput = (): JSX.Element | undefined => {\n const { email, isEmailError, isValidEmailError } = this.state;\n const {\n config: { orderStatusLookUpParametersType },\n resources: { orderLookupEmailLabel, orderLookupEmailAriaLabel }\n } = this.props;\n\n switch (orderStatusLookUpParametersType) {\n case orderStatusLookUpParametersTypes.none:\n return undefined;\n case orderStatusLookUpParametersTypes.email:\n default:\n return (\n \n );\n }\n };\n\n /**\n * _validation for additional fields.\n * @returns - Returns IOrderLookupAdditionalFields[].\n */\n private readonly _additionalFieldValidation = (): IOrderLookupAdditionalFields[] => {\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n for (const item of this.state.additionalProperties) {\n const isFieldValid: boolean = !StringExtensions.isNullOrWhitespace(item.fieldValue) && isAdditionalFieldValid(item.fieldValue);\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: isFieldValid,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n return additionalPropertyStates;\n };\n\n /**\n * _validateOrderLookupForm submit.\n * @returns - Returns boolean.\n */\n private readonly _validateOrderLookupForm = (): boolean => {\n const { config } = this.props;\n const { orderNumber, email } = this.state;\n const { orderStatusLookUpParametersType } = config;\n let additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isValid = false;\n let isDisable = false;\n\n if (ArrayExtensions.hasElements(this.state.additionalProperties)) {\n additionalPropertyStates = this._additionalFieldValidation();\n for (const item of additionalPropertyStates) {\n if (!item.isValidFieldName) {\n isDisable = true;\n }\n }\n\n if (isDisable) {\n this.setState({\n additionalProperties: additionalPropertyStates,\n isDisabled: true\n });\n }\n }\n\n if (StringExtensions.isNullOrWhitespace(orderNumber)) {\n this.setState({\n isOrdNumberError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderNumber.trim() !== orderNumber) {\n this.setState({\n isOrdNumberError: true,\n isReqError: false,\n isDisabled: true\n });\n } else if (\n orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email &&\n StringExtensions.isNullOrWhitespace(email)\n ) {\n this.setState({\n isEmailError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email && !isEmailValid(email)) {\n this.setState({\n isValidEmailError: true,\n isDisabled: true\n });\n } else if (isDisable || !this.state.isValidLookupField || this.state.isValidAdditionalLookupField) {\n this.setState({\n isDisabled: true\n });\n } else {\n this.setState({\n isDisabled: false\n });\n isValid = true;\n }\n return isValid;\n };\n}\n\nexport default OrderLookup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport LoyaltySignUp from './loyalty-sign-up';\nimport LoyaltySignUpView from './loyalty-sign-up.view';\n\nexport * from './loyalty-sign-up';\nexport * from './loyalty-sign-up.data';\nexport {\n ILoyaltySignUpConfig,\n ILoyaltySignUpProps,\n ILoyaltySignUpResources,\n IMemberHeadingData,\n MemberHeadingTag\n} from './loyalty-sign-up.props.autogenerated';\nexport * from './loyalty-sign-up.view';\n\nexport { LoyaltySignUp, LoyaltySignUpView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ISignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport SignIn from './sign-in';\nimport SignInView from './sign-in.view';\n\nexport * from './components';\nexport * from './sign-in';\nexport * from './sign-in.props.autogenerated';\nexport * from './sign-in.view';\n\nexport { SignIn, SignInView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountLoyaltyTile from './account-loyalty-tile';\nimport AccountLoyaltyTileView from './account-loyalty-tile.view';\n\nexport * from './account-loyalty-tile';\nexport * from './account-loyalty-tile.data';\nexport {\n IAccountLoyaltyTileConfig,\n IAccountLoyaltyTileProps,\n IAccountLoyaltyTileResources\n} from './account-loyalty-tile.props.autogenerated';\nexport * from './account-loyalty-tile.view';\nexport * from './components';\n\nexport { AccountLoyaltyTile, AccountLoyaltyTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex, PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport SignUpButtonComponent from './components/sign-up-button';\nimport SignUpErrorComponent from './components/sign-up-error';\nimport SignUpInputComponent from './components/sign-up-input';\nimport SignUpLabelComponent from './components/sign-up-label';\nimport SignUpLoadingIconComponent from './components/sign-up-loading-icon';\nimport SignUpLoadingMessageComponent from './components/sign-up-loading-message';\nimport SignUpSuccessComponent from './components/sign-up-success';\nimport { ISignUpConfig, ISignUpProps, ISignUpResources } from './sign-up.props.autogenerated';\n\nexport interface ISignUpViewState {\n isShowLoading: boolean;\n}\n\nexport interface ISignUpItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface ISignUpEmailVerification {\n isRequired: boolean;\n email: ISignUpItem;\n buttonWrapper: INodeProps;\n buttons: React.ReactNode[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Given Name Verification Interface.\n */\nexport interface ISignUpGivenNameVerification {\n isRequired: boolean;\n givenName: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\n/**\n * SignUp Surname Verification Interface.\n */\nexport interface ISignUpSurnameVerification {\n isRequired: boolean;\n surname: ISignUpItem;\n errorMessage: React.ReactNode[];\n verificationControlWrapper: INodeProps;\n}\n\nexport interface ISignUpLocalAccount {\n localAccount: INodeProps;\n items: ISignUpItem[];\n emailVerification: ISignUpEmailVerification;\n givenNameVerification: ISignUpGivenNameVerification;\n surnameVerification: ISignUpSurnameVerification;\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface ISignUpLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ISignUpViewProps {\n className: string;\n viewState: ISignUpViewState;\n loading: ISignUpLoading;\n signUp: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n signUpLocalAccount: ISignUpLocalAccount;\n}\n\n/**\n *\n * SignUp component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass SignUp extends React.Component> {\n @observable private isGivenNameVerificationRequried: boolean;\n\n @observable private isSurnameVerificationRequried: boolean;\n\n private readonly moduleClassName: string = 'ms-sign-up';\n\n @observable private emailRegex: string;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isEmailVerificationRequried: boolean;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: ISignUpProps) {\n super(props);\n\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isEmailVerificationRequried = false;\n this.isGivenNameVerificationRequried = false;\n this.isSurnameVerificationRequried = false;\n this.isInitialized = false;\n this.templateVersion = '';\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: ISignUpProps, nextState: ISignUpViewState): 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 { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n signUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n signUpLocalAccount: this._renderLocalAccount()\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 * @returns - Heading Text.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n * @returns - Paragraph Text.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.disclaimer = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string; VERIFY: boolean }) => {\n switch (obj.ID.toLowerCase()) {\n case 'emailverificationcontrol': {\n this.isEmailVerificationRequried = true;\n this.templateVersion = 'v2';\n break;\n }\n case 'email': {\n this.emailRegex = obj.PAT;\n this.isEmailVerificationRequried = obj.VERIFY;\n this.templateVersion = 'v1';\n break;\n }\n case 'givennameverificationcontrol': {\n this.isGivenNameVerificationRequried = true;\n break;\n }\n case 'givenname': {\n this.isGivenNameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'surnameverificationcontrol': {\n this.isEmailVerificationRequried = true;\n break;\n }\n case 'surname': {\n this.isSurnameVerificationRequried = obj.VERIFY;\n break;\n }\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n\n switch (obj.UX_INPUT_TYPE.toLowerCase()) {\n case 'password': {\n obj.PAT_DESC = resources.invalidPasswordError;\n break;\n }\n case 'emailbox': {\n obj.PAT_DESC = resources.invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const resources: ISignUpResources = this.props.resources || {};\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const errorMessages = {\n required_field: resources.requiredFieldMissingError\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], errorMessages);\n }\n };\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n\n private _renderLocalAccount(): ISignUpLocalAccount {\n const { config, resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', resources.lastNameLabelText, resources.lastNameMaxLength),\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput('newPassword', 'password', resources.passwordLabelText, undefined, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, undefined, this.reenterPasswordRegex)\n ],\n emailVerification: {\n isRequired: this.isEmailVerificationRequried,\n email: this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n buttonWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n buttons: [\n ,\n ,\n ,\n \n ],\n successMessage: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n \n ]\n },\n givenNameVerification: {\n isRequired: this.isGivenNameVerificationRequried,\n givenName: this._renderInput(\n this.getValue('givenName_ver_input', 'givenNameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'givenNameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n surnameVerification: {\n isRequired: this.isSurnameVerificationRequried,\n surname: this._renderInput(\n this.getValue('surname_ver_input', 'surnameVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n ),\n verificationControlWrapper: {\n id: 'surnameVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n errorMessage: [\n \n ]\n },\n buttons: [\n ,\n \n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n }\n\n private _renderInput(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): ISignUpItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default SignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessOrganizationListViewProps, IFormViewProps, InputID } from './business-organization-list';\nimport { IBusinessFormItem } from './components/small-components';\n\nconst BusinessFormItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst BusinessUserForm: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\n\n const modalBody = (\n <>\n {modalDescription}\n \n {inputs &&\n inputs.map((item: IBusinessFormItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n \n );\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst BusinessUserDetails: React.FC = (props: IFormViewProps) => {\n const { modalClassName, FormWrapper, modalHeading, modalDescription, selectedUser, buttons, errorMessage, resources, toggle } = props;\n let modalBody = null;\n\n if (!selectedUser) {\n modalBody = errorMessage;\n } else {\n const { FirstName, LastName } = selectedUser;\n const userFullName = `${FirstName} ${LastName}`;\n\n modalBody = (\n <>\n {modalDescription}\n \n \n {userFullName}\n \n {Object.keys(selectedUser).map((data, index) => {\n if (data === InputID.FirstName || data === InputID.LastName) {\n return null;\n }\n const label = resources[`table${data}HeadingText`] || data;\n return (\n \n {label}\n {': '}\n {selectedUser[data]}\n \n );\n })}\n \n \n );\n }\n\n const modalFooter =\n buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n });\n\n return _renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\n};\n\nconst _getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\n switch (type) {\n case 'ADD':\n case 'EDIT':\n return ;\n case 'VIEW':\n case 'REMOVE':\n return ;\n default:\n return null;\n }\n};\n\nconst _renderModal = (\n className: string,\n isModalOpen: boolean,\n headingSection: React.ReactNode,\n bodySection: React.ReactNode,\n footerSection: React.ReactNode,\n toggleModal?: () => void\n) => {\n return (\n \n {headingSection}\n {bodySection}\n {footerSection}\n \n );\n};\n\nconst BusinessOrganizationList: React.FC = props => {\n const {\n OrganizationUserList,\n moduleContainer,\n heading,\n noUsersText,\n addUserButton,\n organizationListTable,\n form,\n formType,\n toggleModal,\n requestAccountStatementButton,\n requestStatementModal\n } = props;\n\n const ButtonList: React.ReactNode = (\n \n {addUserButton}\n {requestAccountStatementButton}\n \n );\n\n if (noUsersText) {\n return (\n \n \n {heading}\n {ButtonList}\n {requestStatementModal}\n {noUsersText}\n \n \n );\n }\n\n return (\n \n \n {heading}\n {ButtonList}\n {requestStatementModal}\n {organizationListTable}\n \n {form && _getForm(formType, form, toggleModal)}\n \n );\n};\n\nexport default BusinessOrganizationList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InputType } from '../business-organization-list';\n\nexport interface IBusinessForm {\n FormWrapper: INodeProps;\n message?: React.ReactNode;\n items: IBusinessFormItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n}\n\nexport interface IBusinessFormItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IBusinessFormInput {\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IUserFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n isDisabled?: boolean;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport interface IBusinessFormInputProps {\n id?: string;\n type: string;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n isDisabled?: boolean;\n placeholder?: string;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport const FormInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n isDisabled,\n onChange,\n fieldReference,\n placeholder\n}) => (\n \n);\n\nexport interface IBusinessFormLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n asteriskText: string;\n}\n\nexport const FormLabel: React.FC = ({ id, forId, className, text, asteriskText }) => (\n \n);\n\nexport interface IBusinessFormButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const FormButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, disabled, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport interface IBusinessFormErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const FormFieldError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUser,\n BusinessPartnerUsersDataActions\n} from '@msdyn365-commerce/retail-proxy';\nimport { AdminRequestStatementButton, RequestStatementModal } from '@msdyn365-commerce-modules/account-management';\nimport {\n addOrganizationUser,\n AddOrganizationUserInput,\n ArrayExtensions,\n deleteOrganizationUser,\n DeleteOrganizationUserInput,\n editOrganizationUser,\n EditOrganizationUserInput,\n EmailRegex,\n Random,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n Heading,\n IDataTableProps,\n IHeadingsProperty,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITableItemProps,\n ITableRowProps,\n ITelemetryContent,\n Table,\n TableDataType,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IBusinessOrganizationListData } from './business-organization-list.data';\nimport { IBusinessOrganizationListProps, IBusinessOrganizationListResources } from './business-organization-list.props.autogenerated';\nimport { FormButton, FormFieldError, FormInput, FormLabel, IBusinessFormItem, IUserFormItem } from './components';\n\nexport interface IBusinessOrganizationListViewProps extends IBusinessOrganizationListProps {\n OrganizationUserList: IModuleProps;\n moduleContainer: INodeProps;\n heading: React.ReactNode;\n noUsersText?: string;\n addUserButton?: React.ReactNode;\n search?: React.ReactNode;\n organizationListTable: React.ReactNode;\n form?: IFormViewProps;\n formItems?: IUserFormItem[];\n formType: FormType;\n deleteUserForm?: React.ReactNode;\n viewUserDetails?: React.ReactNode;\n modalHeading?: React.ReactNode;\n modalState?: boolean;\n requestAccountStatementButton: React.ReactNode;\n requestStatementModal: React.ReactNode;\n toggleModal?(): void;\n}\n\nexport interface IBusinessOrganizationListState {\n isReady: boolean;\n formItems: IUserFormItem[];\n isFormActive: boolean;\n formType: FormType;\n selectedUserData?: BusinessPartnerUser;\n referenceBack?: HTMLButtonElement | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n displayedUserData?: any;\n refresh: boolean;\n isModalOpen: boolean;\n hasFormError: boolean;\n hasActionError: boolean;\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport enum FormType {\n None = 'NONE',\n Edit = 'EDIT',\n Remove = 'REMOVE',\n View = 'VIEW',\n Add = 'ADD'\n}\n\nexport enum InputType {\n Text = 'text',\n Email = 'email'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n B2BUserId = 'B2BUserId',\n Email = 'Email',\n SpendingLimit = 'SpendingLimit',\n Status = 'Status',\n FullName = 'Name'\n}\n\nexport interface IFormViewProps {\n modalClassName: string;\n FormWrapper: INodeProps;\n modalHeading?: string;\n modalDescription?: React.ReactNode;\n inputs?: IBusinessFormItem[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n selectedUser?: any;\n buttons?: React.ReactNode[];\n errorMessage?: React.ReactNode[];\n resources: IBusinessOrganizationListResources;\n toggle?(): void;\n}\n\nexport const renderInputSection = (\n inputs: IUserFormItem[],\n className: string,\n asteriskAfterLabel: string,\n onInputChange: (event: React.ChangeEvent) => void\n): IBusinessFormItem[] => {\n return inputs.map(element => {\n const { customClass, id, type, label, maxChars, isRequired, pattern, value, isDisabled, fieldReference } = element;\n return {\n wrapper: {\n className: classnames(className, id, customClass)\n },\n key: id,\n label: ,\n errorMessage: ,\n input: (\n \n )\n };\n });\n};\n\ninterface IUserTableItemProps extends ITableItemProps {\n user: BusinessPartnerUser;\n}\n\n/**\n *\n * BusinessOrganizationList component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass BusinessOrganizationList extends React.Component<\n IBusinessOrganizationListProps,\n IBusinessOrganizationListState\n> {\n public BusinessFormDefaultInputs: IUserFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.businessUserFirstNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.businessUserLastNameLabelText,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.businessUserEmailAddressLabelText,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-100'\n },\n {\n id: InputID.SpendingLimit,\n type: InputType.Text,\n label: this.props.resources.businessUserSpendingLimitLabelText,\n value: '',\n isRequired: false,\n customClass: 'width-50',\n maxChars: this.props.config?.maxLength\n }\n ];\n\n @observable\n private _viewport: GridSize;\n\n private readonly delayFocus: number = 110;\n\n private formChildReference: React.RefObject[] = [];\n\n private userFormEditReference: React.RefObject[] = [];\n\n private userFormDeleteReference: React.RefObject[] = [];\n\n private readonly submitButtonReference: React.RefObject;\n\n private readonly addUserButtonReference: React.RefObject;\n\n private readonly statementRequestButtonReference: React.RefObject;\n\n private readonly moduleClassName: string = 'ms-business-organization-list';\n\n private readonly mobileExcludedColumns: string[];\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n @computed get canSubmitStatementRequest(): boolean {\n return (\n !StringExtensions.isNullOrWhitespace(this.state.statementRequestFromDateString) &&\n !StringExtensions.isNullOrWhitespace(this.state.statementRequestToDateString)\n );\n }\n\n @computed get selectedUserName(): string {\n const { businessUserSelectedUserDisplayName } = this.props.resources;\n return this.state.selectedUserData\n ? businessUserSelectedUserDisplayName\n .replace('{firstName}', this.state.selectedUserData.FirstName || '')\n .replace('{lastName}', this.state.selectedUserData.LastName || '')\n : '';\n }\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: IBusinessOrganizationListProps) {\n super(props);\n this._toggleModal = this._toggleModal.bind(this);\n this._onInputChange = this._onInputChange.bind(this);\n this._handleRemoveUserButton = this._handleRemoveUserButton.bind(this);\n\n this.mobileExcludedColumns = [InputID.Email, InputID.Status, InputID.SpendingLimit];\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n this.submitButtonReference = React.createRef();\n this.addUserButtonReference = React.createRef();\n this.statementRequestButtonReference = React.createRef();\n this.state = {\n isReady: false,\n formItems: this.addedReference(),\n isFormActive: false,\n formType: FormType.None,\n refresh: true,\n isModalOpen: false,\n hasFormError: false,\n hasActionError: false,\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public addedReference(): IUserFormItem[] {\n const newFormFields = this.BusinessFormDefaultInputs;\n return newFormFields.map((input, index) => {\n this.formChildReference[Number(index)] = React.createRef();\n input.fieldReference = this.formChildReference[Number(index)];\n return input;\n });\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser && window.addEventListener) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser && window.removeEventListener) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IBusinessOrganizationListProps,\n nextState: IBusinessOrganizationListState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n\n if (!this.state.isModalOpen && this.state.isModalOpen !== nextState.isModalOpen) {\n setTimeout(() => {\n this.formChildReference[0].current?.focus();\n this.submitButtonReference.current?.focus();\n }, this.delayFocus);\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config,\n resources,\n data: { users }\n } = this.props;\n const { className, heading } = config;\n const {\n businessUserAddUserButtonText,\n businessUserLoadingMessage,\n businessUserEmptyListMessage,\n businessUserErrorGettingUsersMessage,\n userAccountStatementLabel,\n fullOrganizationLabel,\n requestStatementButtonLabel,\n statementRequestModalHeaderLabel,\n cancelLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n sendToEmailLabel,\n selectedUserLabel\n } = resources;\n const {\n formItems,\n isFormActive,\n formType,\n isModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n isStatementRequestModalOpen\n } = this.state;\n\n const hasUsers = users && users.result && users.result.length > 0;\n this.payLoad.contentAction.etext = TelemetryConstant.AddUser;\n const addUserAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n const customer = this.props.data.customerInformation?.result;\n\n if (!hasUsers) {\n let errorMessage = '';\n if (users.status === 'LOADING') {\n errorMessage = businessUserLoadingMessage;\n } else if (users.status === 'FAILED') {\n errorMessage = businessUserErrorGettingUsersMessage;\n } else if (users.result && users.result.length === 0) {\n errorMessage = businessUserEmptyListMessage;\n }\n\n const errorProps = {\n ...this.props,\n className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n addUserButton: (\n \n {businessUserAddUserButtonText}\n \n ),\n noUsersText:

{errorMessage}

\n };\n\n return this.props.renderView(errorProps) as React.ReactElement;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUserList: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n moduleContainer: {\n className: `${this.moduleClassName}__container`\n },\n heading: heading && ,\n modalState: isModalOpen,\n addUserButton: (\n \n {businessUserAddUserButtonText}\n \n ),\n organizationListTable: ,\n toggleModal: this._toggleModal,\n formType,\n form:\n isFormActive && isModalOpen && (formType === FormType.Add || formType === FormType.Edit)\n ? this._renderUserForm()\n : this._renderUserDetails(),\n formItems,\n requestAccountStatementButton: (\n \n ),\n requestStatementModal: (\n \n )\n } as IBusinessOrganizationListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n // _createTableProps: creates the props for the organization list table\n private _createTableProps(): IDataTableProps {\n const { config, resources, context } = this.props;\n const { tableSort, showPagination, paginationItemPerPage } = config;\n const {\n businessUserPaginationNextButtonText,\n businessUserPaginationPreviousButtonText,\n businessUserEditButtonText,\n businessUserViewUserButtonText,\n businessUserDeleteButtonText,\n businessUserActionButtonText,\n businessUserPaginationAriaLabel,\n columnSortAriaLabel\n } = resources;\n\n const tableData = this._createTableItems();\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row.map(item => {\n if (this.isMobile && this.mobileExcludedColumns.includes(item.id)) {\n return undefined;\n }\n return {\n name: item.id,\n sortable: (tableSort && tableSort) || false,\n ariaLabel: columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources,\n headings: tableHeading,\n rows: tableData,\n className: `${this.moduleClassName}__table`,\n editLinkText: this.isMobile ? businessUserEditButtonText : '', // '' === showing just icon\n deleteLinkText: this.isMobile ? businessUserDeleteButtonText : '', // '' === showing just icon\n viewLinkText: businessUserViewUserButtonText,\n editLinkTooltip: businessUserEditButtonText,\n deleteLinkTooltip: businessUserDeleteButtonText,\n viewLinkTooltip: businessUserViewUserButtonText,\n enableToModify: true,\n actionLinkText: businessUserActionButtonText,\n showCheckBoxes: true,\n isSortable: tableSort,\n resourcePrefix: 'businessUser',\n showPagination,\n minifyActions: this.isMobile,\n excludedColumns: this.isMobile ? this.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context &&\n context.request &&\n context.request.query &&\n context.request.query.skip &&\n !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: paginationItemPerPage || 10,\n prevText: businessUserPaginationPreviousButtonText,\n nextText: businessUserPaginationNextButtonText,\n paginationText: businessUserPaginationAriaLabel,\n url: (context && this._getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n tableAriaLabel: resources.tableAriaLabel,\n tableTabIndex: 0,\n businessUserSelectCheckBoxAriaLabelText: resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: resources.sortByAscending,\n sortByDescending: resources.sortByDescending,\n actions: {\n onDelete: this._handleDeleteIcon,\n onEdit: this._handleEditIcon,\n onView: (this.isMobile && this._handleViewDetails) || undefined\n },\n formatPrice: this._formatPrice,\n checkBoxCallback: this._onSelectRow\n };\n }\n\n // _createTableItems: converts users recieved from the data-action(IBusinessParterUser[]) to tableRows(ITableItemProps[])\n private _createTableItems(): ITableRowProps[] {\n const {\n resources,\n data: { users }\n } = this.props;\n const { businessUserActiveStatusText, businessUserPendingStatusText, businessUserRemovedStatusText } = resources;\n const usersList = users && users.result;\n\n if (!ArrayExtensions.hasElements(usersList)) {\n return [];\n }\n\n return usersList.map((user, index) => {\n let statusString = '';\n this.userFormEditReference[index] = React.createRef();\n this.userFormDeleteReference[index] = React.createRef();\n\n switch (user.StatusValue) {\n case 0:\n statusString = businessUserPendingStatusText;\n break;\n case 1:\n statusString = businessUserActiveStatusText;\n break;\n case 2:\n default:\n statusString = businessUserRemovedStatusText;\n }\n\n return {\n row: [\n {\n id: InputID.FullName,\n type: TableDataType.Text,\n value: `${user.FirstName} ${user.LastName}`,\n user\n } as IUserTableItemProps,\n {\n id: InputID.Email,\n type: TableDataType.Text,\n value: user.Email || '',\n className: `${this.moduleClassName}__padRight`\n } as IUserTableItemProps,\n {\n id: InputID.Status,\n type: TableDataType.Text,\n value: statusString\n } as IUserTableItemProps,\n {\n id: InputID.SpendingLimit,\n type: TableDataType.Price,\n value: user.SpendingLimit || 0\n } as IUserTableItemProps\n ],\n isSelected: false,\n buttonReferences: {\n edit: this.userFormEditReference[index],\n delete: this.userFormDeleteReference[index]\n }\n };\n });\n }\n\n // _toggleModal: closes the modal and resets the form states\n private _toggleModal(): void {\n this.state.referenceBack?.focus();\n this.setState({\n isModalOpen: false,\n isFormActive: false,\n referenceBack: undefined,\n formType: FormType.None\n });\n }\n\n // _handleAddUserButtonClicked: resets input fields, opens the modal, and sets the form states\n private readonly _handleAddUserButtonClicked = () => {\n // Reset form\n const newForm = this.state.formItems;\n newForm.forEach(input => {\n if (input.id === InputID.Email) {\n // Make sure email input is re enabled (it gets disabled when admin is editing user)\n input.isDisabled = false;\n }\n\n input.value = '';\n });\n\n const newUser = { B2BUserId: Random.Guid.generateGuid() } as BusinessPartnerUser;\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n formType: FormType.Add,\n referenceBack: this.addUserButtonReference.current,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: newUser\n });\n };\n\n // _handleAddEditFormSaveButton: triggered on the save button for both add/edit forms. Calls the appropriate data-action and reloads the page when successful\n private readonly _handleAddEditFormSaveButton = async () => {\n const { context } = this.props;\n const { formType, formItems } = this.state;\n\n const updatedUser = this._createBusinessPartner(formItems);\n\n if (formType === FormType.Edit) {\n editOrganizationUser(new EditOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n } else {\n addOrganizationUser(new AddOrganizationUserInput(updatedUser), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n this.setState({\n hasActionError: true\n });\n });\n }\n };\n\n // _createBusinessPartner: attempts to convert input values(IUserFormItem) to a new user(BusinessPartnerUser)\n private readonly _createBusinessPartner = (inputs: IUserFormItem[]): BusinessPartnerUser => {\n const newUser: BusinessPartnerUser = { ...this.state.selectedUserData! };\n\n inputs.forEach(input => {\n // Deals with input values need need to be converted into numbers\n if (input.id === InputID.SpendingLimit) {\n newUser[input.id] = Number.parseFloat(input.value) || 0;\n } else {\n newUser[input.id] = input.value;\n }\n });\n\n return newUser;\n };\n\n // _handleEditIcon: converts the table row data(ITableItemProps[]) to input fields(IUserFormItem) and opens the edit form\n private readonly _handleEditIcon = (userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null) => {\n // Split full name into first and last\n const possibleName = userData.find(cell => {\n return cell.id === 'Name';\n });\n const fullName = (possibleName && (possibleName.value as string)) || '';\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n const firstName = fullName.substring(0, lastSpaceIndex);\n\n const lastName = fullName.substring(lastSpaceIndex + 1);\n\n // Create clone of formItems, map users information, update state\n const { formItems } = this.state;\n const newForm = formItems;\n\n newForm.forEach(input => {\n switch (input.id) {\n case InputID.FirstName:\n input.value = firstName;\n break;\n case InputID.LastName:\n input.value = lastName;\n break;\n case InputID.Email: // Email can never be null/undefined as it is a required field\n input.isDisabled = true;\n const possibleCell = userData.find(cell => {\n return input.id === cell.id;\n });\n input.value = (possibleCell && (possibleCell.value as string)) || '';\n break;\n default:\n const dataCell = userData.find(cell => {\n return input.id === cell.id;\n });\n input.value = (dataCell && (dataCell.value as string)) || '';\n }\n });\n\n this.setState({\n formItems: newForm,\n isFormActive: true,\n referenceBack,\n formType: FormType.Edit,\n isModalOpen: true,\n hasFormError: false,\n hasActionError: false,\n selectedUserData: (userData[0] as IUserTableItemProps).user\n });\n };\n\n // _handleDeleteIcon: opens removeUser confirmation window\n private readonly _handleDeleteIcon = (userData: ITableItemProps[], referenceBack?: HTMLButtonElement | null) => {\n const newUser: BusinessPartnerUser = { ...(userData[0] as IUserTableItemProps).user };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // Split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData,\n referenceBack,\n selectedUserData: newUser,\n formType: FormType.Remove,\n isModalOpen: true,\n isFormActive: false\n });\n };\n\n // _handleViewDetails: opens user details window\n private readonly _handleViewDetails = (userData: ITableItemProps[]) => {\n const newUser: BusinessPartnerUser = { ...(userData[0] as IUserTableItemProps).user };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const displayedUserData: any = {};\n\n userData.forEach((cell: ITableItemProps) => {\n if (cell.id === 'Name') {\n // Split full name into first and last\n const fullName = cell.value as string;\n const lastSpaceIndex = fullName.lastIndexOf(' ');\n displayedUserData.FirstName = fullName.substring(0, lastSpaceIndex);\n\n displayedUserData.LastName = fullName.substring(lastSpaceIndex + 1);\n } else if (cell.type === TableDataType.Price) {\n displayedUserData[cell.id] = this.props.context.cultureFormatter.formatCurrency(cell.value as string);\n } else {\n displayedUserData[cell.id] = cell.value;\n }\n });\n\n this.setState({\n displayedUserData,\n selectedUserData: newUser,\n formType: FormType.View,\n isModalOpen: true,\n isFormActive: false\n });\n };\n\n // _handleRemoveUserButton: triggered on confirmation of removing a user.\n private readonly _handleRemoveUserButton = () => {\n // TODO\n const { context } = this.props;\n const { selectedUserData: deleteUserData } = this.state;\n\n if (deleteUserData) {\n deleteOrganizationUser(new DeleteOrganizationUserInput(deleteUserData), context.actionContext)\n .then(() => {\n window.location.reload(false);\n })\n .catch(error => {\n context.telemetry.trace(error);\n });\n }\n this.setState({\n formType: FormType.None,\n isModalOpen: false\n });\n };\n\n private readonly callbackRemoveButton = () => {\n this._handleRemoveUserButton();\n };\n\n // _renderUserDetails: creates the remove/view form props\n private _renderUserDetails(): IFormViewProps {\n const { resources } = this.props;\n const { formType, displayedUserData } = this.state;\n const {\n businessUserRemoveModalHeaderText,\n businessUserRemoveModalDescription,\n businessUserViewModalHeaderText,\n businessUserCancelButtonText,\n businessUserCancelRemoveUserButtonText,\n businessUserRemoveUserButtonText,\n businessUserErrorUpdatingUsersMessage\n } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Remove ? 'type-remove' : 'type-view';\n const handleRemoveButton = this.callbackRemoveButton;\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Remove ? businessUserRemoveModalHeaderText : businessUserViewModalHeaderText,\n modalDescription: formType === FormType.Remove && (\n

{businessUserRemoveModalDescription}

\n ),\n selectedUser: displayedUserData,\n buttons: [\n formType === FormType.Remove && (\n \n {businessUserRemoveUserButtonText}\n \n ),\n \n ],\n errorMessage: [\n \n ],\n resources\n };\n }\n\n // _renderUserForm: creates the add/edit form props\n private _renderUserForm(): IFormViewProps {\n const { resources } = this.props;\n const { formType, formItems, hasFormError, hasActionError, isReady } = this.state;\n const {\n businessUserEditUserFormHeadingText,\n businessUserAddUserFormHeadingText,\n businessUserSaveButtonArialabel,\n businessUserSaveButtonText,\n businessUserCancelButtonArialabel,\n businessUserCancelButtonText,\n businessUserFieldIncorrectErrorText,\n businessUserActionErrorText,\n businessUserAllFieldsRequiredMessage,\n asteriskAfterLabel\n } = resources;\n\n const formClassName = `${this.moduleClassName}__form`;\n const typeClassName = formType === FormType.Add ? 'type-add' : 'type-edit';\n\n return {\n modalClassName: classnames(`${this.moduleClassName}__modal`, typeClassName),\n FormWrapper: {\n className: formClassName\n },\n modalHeading: formType === FormType.Add ? businessUserAddUserFormHeadingText : businessUserEditUserFormHeadingText,\n modalDescription: formType === FormType.Add && (\n

{businessUserAllFieldsRequiredMessage}

\n ),\n inputs: renderInputSection(formItems, `${formClassName}-item`, asteriskAfterLabel, this._onInputChange),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasFormError && (\n \n ),\n hasActionError && (\n \n )\n ],\n resources\n };\n }\n\n // _onInputChange: updates the fomrItems state on every input change\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Update state object with latest values and check if form is ready\n // TODO: remove !refresh\n this.setState(prev => ({\n refresh: !prev.refresh,\n isReady: this._isFormReady(),\n formItems: newForm,\n hasFormError: false,\n hasActionError: false\n }));\n };\n\n // _isFormReady: checks whether the current values in the input fields are valid for submission, this will also disable/enable the submit button.\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const formItem of formItems) {\n // Will return TRUE if:\n // - input field is required and EMPTY\n // OR\n // - pattern provided and value does not match pattern\n // OR\n // - if spendingLimit input --> make sure value can be parsed into an NUMBER\n if (formItem.isRequired && formItem.value.length === 0) {\n return false;\n } else if (formItem.pattern !== undefined && formItem.value.match(formItem.pattern) === null) {\n return false;\n } else if (formItem.id === InputID.SpendingLimit && formItem.value !== '' && isNaN(Number.parseFloat(formItem.value))) {\n this.setState({\n hasFormError: true\n });\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _formatPrice = (price: number): string => {\n return this.props.context.cultureFormatter ? this.props.context.cultureFormatter.formatCurrency(price) : price.toString();\n };\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n private readonly _toggleStatementRequestDropdown = (): void => {\n this.setState({\n isStatementRequestAdminDropdownOpen: !this.state.isStatementRequestAdminDropdownOpen\n });\n };\n\n private readonly _updateFromDate = (newFromDate: string) => {\n this.setState({\n statementRequestFromDateString: newFromDate\n });\n };\n\n private readonly _updateToDate = (newToDate: string) => {\n this.setState({\n statementRequestToDateString: newToDate\n });\n };\n\n private readonly _showRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestModalOpen: true\n });\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const businessPartnerUsers = this.props.data.users.result!;\n\n const currentUser = businessPartnerUsers.find(element => element.Email === customer.Email);\n const B2BUserId = this._getB2BUserId(currentUser);\n\n const statementRequest: AccountStatementRequest = {\n FromDate: new Date(this.state.statementRequestFromDateString),\n ToDate: new Date(this.state.statementRequestToDateString),\n IsForFullOrganization: this.state.statementRequestFullOrg,\n RequestedUserId: B2BUserId,\n RequestingUserEmail: customer.Email,\n DeliveryTypeValue: BusinessPartnerOperationDeliveryType?.Email || 1\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this._closeStatementRequestModal();\n };\n\n private readonly _getB2BUserId = (currentUser: BusinessPartnerUser | undefined) => {\n if (this.state.statementRequestFullOrg || !this.state.selectedUserData) {\n return currentUser ? currentUser.B2BUserId : '';\n }\n return this.state.selectedUserData.B2BUserId;\n };\n\n private readonly _closeStatementRequestModal = () => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n this.statementRequestButtonReference.current?.focus();\n };\n\n private readonly _onSelectRow = (records: ITableRowProps[]) => {\n const selectedRow = records.find(rowProps => rowProps.isSelected);\n\n this.setState({\n selectedUserData: selectedRow ? (selectedRow.row[0] as IUserTableItemProps).user : undefined\n });\n };\n}\n\nexport default BusinessOrganizationList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISignUpButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst SignUpButton: React.FC = ({ id, className, text, ariaLabel, disabled, onClick }) => (\n \n);\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './modules/account-address-tile';\nexport * from './modules/account-customer-balance';\nexport * from './modules/account-customer-balance-tile';\nexport * from './modules/account-generic-tile';\nexport * from './modules/account-loyalty';\nexport * from './modules/account-loyalty-tile';\nexport * from './modules/account-order-templates-tile';\nexport * from './modules/account-profile';\nexport * from './modules/account-profile-edit';\nexport * from './modules/account-welcome-tile';\nexport * from './modules/account-wishlist-tile';\nexport * from './modules/b2b-requests-status';\nexport * from './modules/b2b-requests-tile';\nexport * from './modules/loyalty-sign-up';\nexport * from './modules/loyalty-terms';\nexport * from './modules/password-reset';\nexport * from './modules/password-reset-verification';\nexport * from './modules/sign-in';\nexport * from './modules/sign-up';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountAddressTileData } from './account-address-tile.data';\nimport { IAccountAddressTileProps } from './account-address-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-address-tile-description';\nimport LinksComponent from './components/account-address-tile-links';\n\nexport interface IAccountAddressTileViewProps extends IAccountAddressTileProps {\n AccountAddressTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountAddress component.\n * @extends {React.PureComponent>}\n */\nclass AccountAddressTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountAddressTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountAddressTileDescriptionForSingleAddress, accountAddressTileDescriptionForMultipleAddresses } = resources;\n const { address } = data;\n const addressCount = (address && address.result && address.result.length) || 0;\n const accountAddressTileDescription =\n addressCount === 1 ? accountAddressTileDescriptionForSingleAddress : accountAddressTileDescriptionForMultipleAddresses;\n const description = format(accountAddressTileDescription, addressCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountAddressTile: {\n moduleProps: this.props,\n className: classnames('ms-account-address-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \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 AccountAddressTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Msdyn365, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\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: 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: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n \n );\n }\n}\n\nexport default CatalogPicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLoadingIcon {\n className: string;\n}\n\nconst SignUpLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default SignUpLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\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 AccountLoyaltyTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.PureComponent>}\n */\nclass AccountLoyaltyTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountLoyaltyTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n const decimalPrecision = 2;\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points.toFixed(decimalPrecision));\n }\n\n const viewProps = {\n ...this.props,\n className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n \n ),\n links: (\n \n ),\n description: \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.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n}\n\nexport default AccountLoyaltyTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignUpEmailVerification,\n ISignUpGivenNameVerification,\n ISignUpItem,\n ISignUpLoading,\n ISignUpLocalAccount,\n ISignUpSurnameVerification,\n ISignUpViewProps\n} from './sign-up';\n\nconst SignUpItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst SignUpEmailVerification: React.FC = ({ email, buttonWrapper, buttons, successMessage, errorMessage }) => {\n return (\n <>\n {successMessage &&\n successMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {errorMessage &&\n errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode) => {\n return <>{button};\n })}\n \n \n );\n};\n\n/**\n * Handles validation of sign-up givenName.\n * @param event - Content editable event.\n * @param event.givenName - Event Given Name.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for Given Name.\n */\nconst SignUpGivenNameVerificationComponent: React.FC = ({ givenName, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\n/**\n * Handles validation of signUp surname.\n * @param event - Content editable event.\n * @param event.surname - Event surname.\n * @param event.errorMessage - Event Error Message.\n * @returns - Error Message for surname.\n */\nconst SignUpSurnameVerificationComponent: React.FC = ({ surname, errorMessage }) => {\n return (\n <>\n \n {errorMessage.map((message: React.ReactNode) => {\n return <>{message};\n })}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n emailVerification,\n givenNameVerification,\n surnameVerification,\n buttons,\n errorMessage,\n disclaimer\n}) => {\n return (\n \n {items &&\n items.map((item: ISignUpItem) => {\n if (item.key === 'email' && emailVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'givenName' && givenNameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n if (item.key === 'surname' && surnameVerification.isRequired) {\n return (\n \n \n \n \n );\n }\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n );\n};\n\nconst SignUpLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst SignUpView: React.FC = props => {\n const { signUp, viewState, loading, defaultAADConainer, aadConainer, heading, signUpLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(signUpLocalAccount)}\n \n \n );\n};\n\nexport default SignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './sign-up-button';\nexport * from './sign-up-error';\nexport * from './sign-up-input';\nexport * from './sign-up-label';\nexport * from './sign-up-loading-icon';\nexport * from './sign-up-loading-message';\nexport * from './sign-up-success';\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, Text } from '@msdyn365-commerce/core';\nimport { AttributeDefinition, Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { StringExtensions, updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from '../account-profile.data';\nimport { IAccountProfileProps } from '../account-profile.props.autogenerated';\nimport TextComponent from './account-profile-text';\n\ninterface IAttributePropertiesType {\n Name?: string;\n IsMandatory?: boolean;\n}\n\nexport interface IAccountProfileAttributesProps {\n accountProfileProps: IAccountProfileProps;\n}\n\nexport enum AccountAttributeDataTypeValue {\n Decimal = 3,\n Integer = 4,\n Text = 5,\n TrueFalse = 6\n}\n\nexport interface IAttributePayloadData {\n recordId?: number;\n name?: string;\n dataTypeValue?: number;\n isEnumeration?: boolean;\n lowerBoundValue?: number;\n upperBoundValue?: number;\n decimalValue?: number;\n integerValue?: number;\n textValue?: string;\n booleanValue?: boolean;\n isMandatory?: boolean;\n defaultValue?: string;\n}\n\nexport interface IAccountProfileAttributesState extends React.ComponentState {\n editAttributes: boolean;\n phone: string;\n vatNumber: string;\n attributes: IDictionary;\n attributeError: IDictionary;\n}\n\n/**\n *\n * AccountProfileAttributes class.\n * @extends {React.PureComponentIAccountProfileAttributesProps, IAccountProfileAttributesState>}\n */\n@observer\nclass AccountProfileAttributes extends React.Component {\n private readonly attributePayloadData: IAttributePayloadData[];\n\n @observable private isUpdatingAttributes: boolean = false;\n\n @observable private gotException: boolean = false;\n\n private hasError: boolean = false;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private initialAttributes: IDictionary;\n\n private initialCustomerAttributes?: CustomerAttribute[];\n\n private initialPhone: string;\n\n private initialVatNumber: string;\n\n private readonly payLoad: IPayLoad;\n\n private readonly editRef: React.RefObject;\n\n private readonly attributesContainerRef: React.RefObject;\n\n private readonly attributeClassName: string = 'ms-account-profile__attributes-element';\n\n private readonly maxIntegerLimit: number = 2_100_000_000;\n\n private readonly minIntegerLimit: number = -2_100_000_000;\n\n private readonly maxDecimalLimit: number = 7_900_000_000_000;\n\n private readonly minDecimalLimit: number = -7_900_000_000_000;\n\n private readonly maxStringLength: number = 1000;\n\n private readonly maxVATNumberLength: number = 20;\n\n private readonly maxPhoneLength: number = 25;\n\n constructor(props: IAccountProfileAttributesProps) {\n super(props);\n this.state = {\n editAttributes: false,\n phone: '',\n vatNumber: '',\n attributes: {},\n attributeError: {}\n };\n this.initialAttributes = {};\n this.initialCustomerAttributes = [];\n this.initialPhone = '';\n this.initialVatNumber = '';\n this.attributePayloadData = [];\n const telemetryPageName =\n (this.props.accountProfileProps &&\n this.props.accountProfileProps.context &&\n this.props.accountProfileProps.context.request &&\n this.props.accountProfileProps.context.request.telemetryPageName) ||\n '';\n const friendlyName = (this.props.accountProfileProps && this.props.accountProfileProps.friendlyName) || '';\n const telemetry = (this.props.accountProfileProps && this.props.accountProfileProps.telemetry) || {};\n this.telemetryContent = getTelemetryObject(telemetryPageName, friendlyName, telemetry);\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.editRef = React.createRef();\n this.attributesContainerRef = React.createRef();\n }\n\n public componentDidMount(): void {\n this._buildPayloadData();\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n reaction(\n () => this.props.accountProfileProps.data.customerInformation.result,\n () => {\n const customerInformation = this.props.accountProfileProps.data.customerInformation.result;\n this.initialCustomerAttributes = customerInformation && customerInformation.Attributes;\n this._getAttributes();\n this._getCustomerPhoneAndVatNumber();\n }\n );\n reaction(\n () => this.props.accountProfileProps.data.attributeDefinitions.result,\n () => {\n this._buildPayloadData();\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileAttributesProps, nextState: IAccountProfileAttributesState): boolean {\n if (this.state === nextState && this.props.accountProfileProps.data === nextProps.accountProfileProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return this._renderAttributes();\n }\n\n private readonly _renderAttributes = (): JSX.Element | null => {\n const { config, data, resources } = this.props.accountProfileProps;\n const attributeDefinitions: AttributeDefinition[] = data.attributeDefinitions.result || [];\n const additionalInformationSectionHeading =\n (config.additionalInformationSectionHeading && config.additionalInformationSectionHeading.text) || '';\n const showAttributes = config.showAttributes || '';\n const attributes = showAttributes.split(',');\n const elements = attributes.map(att => {\n const attributeDefinition: AttributeDefinition = attributeDefinitions.find(\n attribute => attribute.IsHidden === false && attribute.Name!.toLocaleLowerCase() === att.toLocaleLowerCase()\n ) || { RecordId: 0 };\n return this._renderAttribute(attributeDefinition);\n });\n const edit = (this.state && this.state.editAttributes) || false;\n this.payLoad.contentAction.etext = `${resources.attributesEditButtonText} ${additionalInformationSectionHeading}`;\n const editAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesSaveButtonText} ${additionalInformationSectionHeading}`;\n const saveAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = `${resources.attributesCancelButtonText} ${additionalInformationSectionHeading}`;\n const cancelAttributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n const customerInformation = data.customerInformation.result;\n\n // Disable the 'Edit' button if the switch is enabled and the customer is async.\n const disableBtn: boolean =\n (this.props.accountProfileProps.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n return (\n \n {config.additionalInformationSectionHeading && (\n \n )}\n {config.showPhone && this._renderPhone()}\n {config.showVatNumber && this._renderVatNumber()}\n {elements}\n {this.gotException && (\n
\n \n
\n )}\n {!edit && (\n \n {resources.attributesEditButtonText}\n \n )}\n {edit && (\n \n {resources.attributesSaveButtonText}\n \n )}\n {edit && (\n \n {resources.attributesCancelButtonText}\n \n )}\n
\n );\n };\n\n private readonly _renderPhone = (): JSX.Element | null => {\n const { phoneSectionHeading } = this.props.accountProfileProps.config;\n const heading = (phoneSectionHeading && phoneSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {phoneSectionHeading && }\n \n {this._renderError('Phone')}\n
\n );\n };\n\n private readonly _renderVatNumber = (): JSX.Element | null => {\n const { vatNumberSectionHeading } = this.props.accountProfileProps.config;\n const heading = (vatNumberSectionHeading && vatNumberSectionHeading.text) || '';\n const className = (heading && heading.replace(/ /g, '_')) || '';\n const editAttributes = (this.state && this.state.editAttributes) || false;\n return (\n
\n {vatNumberSectionHeading && }\n \n {this._renderError('VATNumber')}\n
\n );\n };\n\n private readonly _renderAttribute = (customAttribute: AttributeDefinition): JSX.Element | null => {\n const editAttributes = (this.state && this.state.editAttributes) || false;\n const className = (customAttribute.Name && customAttribute.Name.replace(/ /g, '_')) || '';\n switch (customAttribute.ExtDataType && customAttribute.ExtDataType.Value) {\n case AccountAttributeDataTypeValue.Integer:\n case AccountAttributeDataTypeValue.Decimal:\n return this._renderIntegerDecimalInput(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.Text:\n return this._renderTextInputOrSelect(customAttribute, className, editAttributes);\n case AccountAttributeDataTypeValue.TrueFalse:\n return this._renderBoolean(customAttribute, className, editAttributes);\n default:\n return null;\n }\n };\n\n private readonly _renderIntegerDecimalInput = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderTextInputOrSelect = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n const isEnumeration: boolean = customAttribute.IsEnumeration || false;\n const edit = (this.state && this.state.editAttributes) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n if (isEnumeration && customAttribute.EnumerationDetails) {\n const value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n return (\n
\n \n \n {hasNoValue && (\n \n )}\n {customAttribute.EnumerationDetails.map(option => {\n const selected = option.EnumerationValue === this.state.attributes[customAttribute.Name || ''];\n return (\n \n {option.EnumerationValue}\n \n );\n })}\n \n
\n );\n }\n return (\n
\n \n \n {this._renderError(customAttribute.Name || '')}\n
\n );\n };\n\n private readonly _renderBoolean = (\n customAttribute: AttributeDefinition,\n className: string,\n editAttributes: boolean\n ): JSX.Element | null => {\n let value = this.state.attributes[customAttribute.Name || ''] || '';\n const hasNoValue = value === '';\n const render = !(hasNoValue && !editAttributes);\n value = value || 'false';\n const toggleState = (value === 'true' && 'enable') || 'disable';\n const arialabel = format(this.props.accountProfileProps.resources.attributeToggleButtonAriaLabel, customAttribute.Name);\n const ariaPressed = (value === 'true' && true) || false;\n const attributeProps = this._getAttributeProps(customAttribute.Name || '');\n const displayName: string = attributeProps.Name || '';\n let toggleValue = 'false';\n if (value === 'true') {\n toggleValue = 'false';\n } else {\n toggleValue = 'true';\n }\n\n return (\n \n \n {render && (\n \n \n \n \n \n )}\n \n );\n };\n\n private readonly _renderError = (attributeName: string): JSX.Element | null => {\n const error: string = (this.state && this.state.attributeError && this.state.attributeError[attributeName]) || '';\n const hasError = !StringExtensions.isNullOrWhitespace(error);\n if (hasError) {\n return (\n
\n \n
\n );\n }\n return null;\n };\n\n private readonly _getAttributeProps = (attributeName: string): IAttributePropertiesType => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === attributeName);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n return {\n Name: isMandatory ? `${attributeName || ''} *` : attributeName || '',\n IsMandatory: isMandatory\n };\n };\n\n private readonly _onPhoneChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ phone: value });\n };\n\n private readonly _onVatNumberChange = (event: React.ChangeEvent): void => {\n const value = event.target.value;\n this.setState({ vatNumber: value });\n };\n\n private readonly _enableAttributes = () => {\n this.hasError = false;\n\n // To clear exception messages\n this.gotException = false;\n this.setState({ editAttributes: true, attributeError: {} });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n if (this.attributesContainerRef.current) {\n const attributes: HTMLCollectionOf = this.attributesContainerRef.current.getElementsByClassName(\n this.attributeClassName\n );\n if (attributes && attributes.length > 0) {\n this._setFocus(attributes[0] as HTMLElement);\n }\n }\n }, 0);\n }\n };\n\n private readonly _disableAttributes = () => {\n this.setState({\n editAttributes: false,\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n };\n\n private readonly _onAttributeChange = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeCheck = (attributeDefinition: AttributeDefinition, value: string) => (\n event: React.MouseEvent\n ) => {\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n }\n });\n };\n\n private readonly _onAttributeSelect = (attributeDefinition: AttributeDefinition) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.selectedOptions[0].value;\n const index = event.currentTarget.selectedOptions[0].index;\n const name = attributeDefinition.Name || '';\n this.setState({\n attributes: {\n ...this.state.attributes,\n [name]: value\n },\n selectedIndex: {\n ...this.state.selectedIndex,\n [name]: index\n }\n });\n };\n\n private readonly _getAttributes = () => {\n const { config, data } = this.props.accountProfileProps;\n const showAttributes = config.showAttributes || '';\n const showAttributesArray = showAttributes.split(',');\n const customer = data.customerInformation.result;\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attributes: IDictionary = {};\n\n showAttributesArray.forEach(showAttribute => {\n const attributePayloadData = this.attributePayloadData.find(att => att.name === showAttribute);\n const isMandatory: boolean = (attributePayloadData && attributePayloadData.isMandatory) || false;\n const defaultValue = attributePayloadData && attributePayloadData.defaultValue;\n const attribute = custmerAttributes.find(att => att.Name === showAttribute);\n let value: string = '';\n if (attribute && attribute.AttributeValue) {\n const name = (attribute && attribute.Name) || '';\n switch (attribute.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n if (attribute.AttributeValue.IntegerValue) {\n value = String(attribute.AttributeValue.IntegerValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n if (attribute.AttributeValue.DecimalValue) {\n value = String(attribute.AttributeValue.DecimalValue);\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n if (attribute.AttributeValue.StringValue) {\n value = attribute.AttributeValue.StringValue;\n attributes[name] = value;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n if (attribute.AttributeValue.BooleanValue !== null) {\n value = String(attribute.AttributeValue.BooleanValue);\n attributes[name] = value;\n }\n break;\n default:\n\n // Do nothing\n }\n }\n if (StringExtensions.isNullOrWhitespace(value) && isMandatory) {\n attributes[showAttribute] = '';\n }\n if (value.length === 0 && defaultValue) {\n attributes[showAttribute] = String(defaultValue);\n }\n });\n if (Object.keys(this.initialAttributes).length === 0) {\n this.initialAttributes = attributes;\n }\n this.setState({ attributes });\n };\n\n // eslint-disable-next-line\n private readonly _addOrUpdateAttribute = (customer: Customer) => {\n const { resources } = this.props.accountProfileProps;\n const { phone, vatNumber } = this.state;\n const attributeError: IDictionary = {};\n let hasError: boolean = false;\n let hasValue: boolean = true;\n for (const [key, value] of Object.entries(this.state.attributes)) {\n const payloadData: IAttributePayloadData = this.attributePayloadData.find(data => data.name === key) || {};\n if (payloadData) {\n switch (payloadData.dataTypeValue) {\n case AccountAttributeDataTypeValue.Decimal:\n const decimalValue = Number(value);\n if (isNaN(decimalValue)) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Decimal');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (decimalValue < payloadData.lowerBoundValue || decimalValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (decimalValue > this.maxDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxDecimalLimit\n );\n hasError = true;\n }\n\n if (decimalValue < this.minDecimalLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minDecimalLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.decimalValue = decimalValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Integer:\n const integerValue = Number(value);\n if (isNaN(integerValue) || value.includes('.')) {\n const typeError = format(resources.attributeInputTypeErrorText, payloadData.name, 'Integer');\n attributeError[payloadData.name || ''] = typeError;\n hasError = true;\n } else if (payloadData.lowerBoundValue !== undefined && payloadData.upperBoundValue !== undefined) {\n if (integerValue < payloadData.lowerBoundValue || integerValue > payloadData.upperBoundValue) {\n const rangeError = format(\n resources.attributeInputRangeErrorText,\n payloadData.name,\n payloadData.lowerBoundValue,\n payloadData.upperBoundValue\n );\n attributeError[payloadData.name || ''] = rangeError;\n hasError = true;\n }\n } else {\n if (integerValue > this.maxIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMaximumErrorText,\n payloadData.name,\n this.maxIntegerLimit\n );\n hasError = true;\n }\n\n if (integerValue < this.minIntegerLimit) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputValueExceedsMinimumErrorText,\n payloadData.name,\n this.minIntegerLimit\n );\n hasError = true;\n }\n }\n\n if (!hasError) {\n if (StringExtensions.isNullOrWhitespace(value)) {\n hasValue = false;\n } else {\n payloadData.integerValue = integerValue;\n hasValue = true;\n }\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n let trimValue = '';\n if (!StringExtensions.isNullOrWhitespace(value)) {\n trimValue = value.trim();\n }\n if (trimValue.length > this.maxStringLength) {\n attributeError[payloadData.name || ''] = format(\n resources.attributeInputStringMaxLengthErrorText,\n payloadData.name,\n this.maxStringLength\n );\n hasError = true;\n }\n if (!hasError) {\n payloadData.textValue = trimValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n payloadData.booleanValue = value === 'true';\n break;\n default:\n\n // Do nothing\n }\n\n if (payloadData.isMandatory && StringExtensions.isNullOrWhitespace(value)) {\n attributeError[payloadData.name || ''] = format(resources.attributeInputMandatoryErrorText, payloadData.name);\n hasError = true;\n }\n\n const custmerAttributes: CustomerAttribute[] = (customer && customer.Attributes) || [];\n const attribute = custmerAttributes.find(att => att.Name === key);\n const index = custmerAttributes.findIndex(att => att.Name === key);\n\n if (index !== -1 && !hasValue) {\n custmerAttributes.splice(index, 1);\n }\n\n if (!hasError && hasValue) {\n if (attribute) {\n attribute.Attribute = undefined;\n attribute.DataTypeValue = payloadData.dataTypeValue;\n attribute.Name = payloadData.name;\n attribute.RecordId = payloadData.recordId;\n attribute.Units = undefined;\n attribute.AttributeValue = {\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n };\n attribute.ExtensionProperties = [];\n attribute.NameTranslations = [];\n } else {\n custmerAttributes.push({\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CustomerAttribute',\n Attribute: undefined,\n DataTypeValue: payloadData.dataTypeValue,\n KeyName: payloadData.name,\n Name: payloadData.name,\n RecordId: payloadData.recordId,\n Units: undefined,\n AttributeValue: {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CommercePropertyValue',\n IntegerValue: payloadData.integerValue,\n BooleanValue: payloadData.booleanValue,\n StringValue: payloadData.textValue,\n DecimalValue: payloadData.decimalValue\n },\n 'ExtensionProperties@odata.type': '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.CommerceProperty)',\n ExtensionProperties: [],\n 'NameTranslations@odata.type':\n '#Collection(Microsoft.Dynamics.Commerce.Runtime.DataModel.TextValueTranslation)',\n NameTranslations: []\n });\n }\n }\n }\n }\n\n if (phone.trim().length > this.maxPhoneLength) {\n attributeError.Phone = format(resources.attributeInputStringMaxLengthErrorText, 'Phone', this.maxPhoneLength);\n hasError = true;\n } else {\n customer.Phone = phone.trim();\n }\n\n if (vatNumber.trim().length > this.maxVATNumberLength) {\n attributeError.VATNumber = format(resources.attributeInputStringMaxLengthErrorText, 'VAT Number', this.maxVATNumberLength);\n hasError = true;\n } else {\n customer.VatNumber = vatNumber.trim();\n }\n\n this.hasError = hasError;\n this.setState({ attributeError });\n };\n\n private readonly _saveAttributes = async () => {\n const { context, data } = this.props.accountProfileProps;\n const customer = data.customerInformation.result;\n\n if (customer && context) {\n this._addOrUpdateAttribute(customer);\n const input = new updateCustomerAttributesInput(\n customer.AccountNumber,\n customer.Attributes || [],\n context.request.apiSettings,\n customer.Phone,\n customer.VatNumber\n );\n\n this.isUpdatingAttributes = true;\n this.gotException = false;\n\n if (!this.hasError) {\n this.setState({ editAttributes: false });\n try {\n await updateCustomerAttributes(input, context.actionContext);\n } catch (error) {\n this.gotException = true;\n customer.Attributes = this.initialCustomerAttributes;\n if (context.telemetry) {\n context.telemetry.exception(error);\n context.telemetry.debug('Unable to update customer attributes');\n }\n this.setState({\n attributeError: {},\n attributes: this.initialAttributes,\n phone: this.initialPhone,\n vatNumber: this.initialVatNumber\n });\n }\n this.setState({ editAttributes: false });\n if (!this.gotException) {\n this.initialAttributes = this.state.attributes;\n this.initialCustomerAttributes = customer.Attributes;\n this.initialPhone = this.state.phone;\n this.initialVatNumber = this.state.vatNumber;\n }\n }\n\n this.isUpdatingAttributes = false;\n\n if (MsDyn365.isBrowser) {\n setTimeout(() => {\n this._setFocus(this.editRef.current);\n }, 0);\n }\n }\n };\n\n private readonly _setFocus = (element: HTMLElement | null) => {\n element?.focus();\n };\n\n private readonly _buildPayloadData = () => {\n const { data } = this.props.accountProfileProps;\n const attributeDefinitions = data.attributeDefinitions.result || [];\n const attributes: IDictionary = {};\n\n attributeDefinitions.forEach(attributeDefinition => {\n const attributePayloadData: IAttributePayloadData = {};\n attributePayloadData.recordId = attributeDefinition.RecordId;\n attributePayloadData.name = attributeDefinition.Name;\n attributePayloadData.dataTypeValue = attributeDefinition.DataTypeValue;\n attributePayloadData.isEnumeration = attributeDefinition.IsEnumeration;\n attributePayloadData.isMandatory = attributeDefinition.IsMandatory;\n switch (attributeDefinition.DataTypeValue) {\n case AccountAttributeDataTypeValue.Integer:\n const defaultIntegerValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.IntegerValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.IntegerValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.IntegerValue;\n if (attributePayloadData.name && defaultIntegerValue) {\n attributePayloadData.defaultValue = String(defaultIntegerValue);\n attributes[attributePayloadData.name] = String(defaultIntegerValue);\n }\n break;\n case AccountAttributeDataTypeValue.Decimal:\n const defaultDecimalValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.DecimalValue;\n attributePayloadData.lowerBoundValue = attributeDefinition.LowerBound && attributeDefinition.LowerBound.DecimalValue;\n attributePayloadData.upperBoundValue = attributeDefinition.UpperBound && attributeDefinition.UpperBound.DecimalValue;\n if (attributePayloadData.name && defaultDecimalValue) {\n attributePayloadData.defaultValue = String(defaultDecimalValue);\n attributes[attributePayloadData.name] = String(defaultDecimalValue);\n }\n break;\n case AccountAttributeDataTypeValue.Text:\n const defaultStringValue = attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.StringValue;\n if (attributePayloadData.name && defaultStringValue) {\n attributePayloadData.defaultValue = defaultStringValue;\n attributes[attributePayloadData.name] = defaultStringValue;\n }\n break;\n case AccountAttributeDataTypeValue.TrueFalse:\n const defaultBooleanValue =\n (attributeDefinition.DefaultValue && attributeDefinition.DefaultValue.BooleanValue) || false;\n if (attributePayloadData.name) {\n attributePayloadData.defaultValue = String(defaultBooleanValue);\n attributes[attributePayloadData.name] = String(defaultBooleanValue);\n }\n break;\n default:\n\n // Do nothing\n }\n this.attributePayloadData.push(attributePayloadData);\n });\n Object.keys(attributes).length > 0 && this.setState({ attributes });\n };\n\n private readonly _getCustomerPhoneAndVatNumber = () => {\n const customer = this.props.accountProfileProps.data.customerInformation.result;\n const phone = (customer && customer.Phone) || '';\n const vatNumber = (customer && customer.VatNumber) || '';\n this.setState({ phone, vatNumber });\n if (this.initialPhone.length === 0) {\n this.initialPhone = phone;\n }\n if (this.initialVatNumber.length === 0) {\n this.initialVatNumber = vatNumber;\n }\n };\n}\n\nexport default AccountProfileAttributes;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n isDisabled?: boolean;\n}\n\nexport interface IAccountProfileLinks {\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 AccountProfileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: link.isDisabled ? 'ms-account-profile__section-link-disable' : 'ms-account-profile__section-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountProfileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { updateCustomerPersonalization, updateCustomerPersonalizationInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileData } from './account-profile.data';\nimport {\n IAccountProfileProps,\n IEmailAddressSectionHeadingData,\n IHeadingData,\n INameSectionHeadingData\n} from './account-profile.props.autogenerated';\nimport AccountProfileAttributes from './components/account-profile-attributes';\nimport DescriptionComponent from './components/account-profile-description';\nimport LinksComponent, { ILinksData } from './components/account-profile-links';\nimport TextComponent from './components/account-profile-text';\n\nexport interface IAccountPreference {\n accountPreference: INodeProps;\n heading: React.ReactNode;\n buttonWrapper: INodeProps;\n buttonYesText: React.ReactNode;\n buttonNoText: React.ReactNode;\n button: React.ReactNode;\n description: React.ReactNode;\n onUpdateAccountPreference(preferenceType?: string): void;\n}\n\nexport interface IAccountPreferences {\n accountPreferences: INodeProps;\n heading?: React.ReactNode;\n personalization: IAccountPreference;\n extraPreferences?: IAccountPreference[];\n}\n\nexport interface IAccountProfileItem {\n AccountProfileItem: INodeProps;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\nexport interface IAccountCustomerAttributes {\n customerAttributes?: React.ReactNode;\n}\n\nexport interface IAccountProfileViewProps extends IAccountProfileProps {\n AccountProfile: IModuleProps;\n accountProfileWrapper?: INodeProps;\n className: string;\n heading?: React.ReactNode;\n emailSection: IAccountProfileItem;\n nameSection: IAccountProfileItem;\n preferenceSection: IAccountPreferences;\n customerAttributesWrapper?: INodeProps;\n customerAttributesSection?: IAccountCustomerAttributes;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * AccountProfile component.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfile extends React.Component> {\n @observable private isUpdatingPreference: boolean = false;\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n\n constructor(props: IAccountProfileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n }\n\n public shouldComponentUpdate(nextProps: IAccountProfileProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const { className, heading, emailAddressSectionHeading, nameSectionHeading, showAttributes, showPhone, showVatNumber } = config;\n\n const { editButtonText, editButtonAriaLabel } = resources;\n const customerInformation = data.customerInformation.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n\n // As per the design, phone and vat numbers are part of the profile attributes section\n const shouldRenderAttributes = (showAttributes && showAttributes.length > 0) || showPhone || showVatNumber || false;\n const editLink: ILinksData = {\n linkUrl: {\n destinationUrl: get(this.props, 'context.request.user.editProfileUrl', '')\n },\n linkText: editButtonText,\n ariaLabel: editButtonAriaLabel,\n isDisabled: invalidAsyncCustomerState\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountProfile: {\n moduleProps: this.props,\n className: classnames('ms-account-profile', config.className)\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n accountProfileWrapper: {\n className: classnames('ms-account-profile-wrapper')\n },\n heading: heading && (\n \n ),\n emailSection: this._renderEmailSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-email'),\n emailAddressSectionHeading as IEmailAddressSectionHeadingData,\n customerInformation && customerInformation.Email\n ),\n nameSection: this._renderNameSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-name'),\n nameSectionHeading as INameSectionHeadingData,\n `${customerInformation && customerInformation.FirstName} ${customerInformation && customerInformation.LastName}`,\n [editLink]\n ),\n preferenceSection: this._renderPreferenceSection(\n classnames('ms-account-profile__section', 'ms-account-profile__section-preferences'),\n invalidAsyncCustomerState,\n customerInformation\n ),\n customerAttributesWrapper: {\n className: classnames('ms-account-profile__attributes-wrapper')\n },\n customerAttributesSection: shouldRenderAttributes && this._renderCustomerAttributes()\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 handleEmailHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.emailAddressSectionHeading!.text = event.target.value);\n\n public handleNameHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.nameSectionHeading!.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.resources.editButtonText) {\n this.props.resources.editButtonText = event.target.value;\n }\n };\n\n @computed get editProfileUrl(): string {\n return get(this.props, 'context.request.user.editProfileUrl', '');\n }\n\n private _renderEmailSection(\n className: string,\n heading?: IEmailAddressSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private _renderNameSection(\n className: string,\n heading?: INameSectionHeadingData,\n description?: string,\n links?: ILinksData[]\n ): IAccountProfileItem {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: description && (\n \n )\n };\n }\n\n private readonly onClickEventHandler = (className: string) => async () => {\n return this._updateAccountPersonalization(className);\n };\n\n private _renderPreferenceSection(\n className: string,\n invalidAsyncCustomerState: boolean,\n customerInformation?: Customer\n ): IAccountPreferences | null {\n const {\n personalizationDescription,\n personalizationEnableButtonAriaLabel,\n webTrackingDescription,\n webTrackingEnableButtonAriaLabel\n } = this.props.resources;\n const { preferencesSectionHeading, personalizationSectionHeading, webTrackingSectionHeading } = this.props.config;\n const { enableDataAnalytics } = this.props.context.request.features;\n const extraPreferences: IAccountPreference[] = [];\n\n if (!customerInformation) {\n this.props.context.telemetry.error('Account profile data is empty, module wont render');\n return null;\n }\n\n // Show browser activity login preference if switch is enabled AND a heading is provided\n enableDataAnalytics &&\n webTrackingSectionHeading &&\n extraPreferences.push(\n this._renderPreference(\n 'web-tracking',\n webTrackingSectionHeading as IHeadingData,\n webTrackingEnableButtonAriaLabel,\n webTrackingDescription,\n customerInformation.OptOutWebActivityTracking || false,\n invalidAsyncCustomerState\n )\n );\n\n return {\n accountPreferences: {\n className\n },\n heading: preferencesSectionHeading && (\n \n ),\n personalization: this._renderPreference(\n 'personalization',\n personalizationSectionHeading as IHeadingData,\n personalizationEnableButtonAriaLabel,\n personalizationDescription,\n customerInformation.OptOutPersonalization || false,\n invalidAsyncCustomerState\n ),\n extraPreferences: extraPreferences || undefined\n };\n }\n\n private readonly _renderPreference = (\n className: string,\n sectionHeading: IHeadingData,\n enableAriaLabel: string,\n description: string,\n isOptOut: boolean,\n disableBtn: boolean\n ) => {\n const { toggleDisableText, toggleEnableText } = this.props.resources;\n const toggleState = isOptOut ? 'disable' : 'enable';\n const onClickHandler = this.onClickEventHandler(className);\n this.payLoad.contentAction.etext = sectionHeading.text;\n const attributes = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n\n return {\n accountPreference: {\n className: classnames('ms-account-profile__preference', `ms-account-profile__preference-${className}`, {\n 'ms-account-profile__personalization-updating': this.isUpdatingPreference\n })\n },\n heading: sectionHeading && (\n \n ),\n buttonWrapper: {\n className: classnames('ms-account-profile__toggle-wrapper', `ms-account-profile__toggle-${toggleState}`, {\n // Disable the toggle completely if customer is async.\n 'ms-account-profile__toggle-disabled': disableBtn\n })\n },\n buttonYesText: ,\n buttonNoText: ,\n button: (\n \n ),\n description: ,\n onUpdateAccountPreference: async () => this._updateAccountPersonalization(className)\n };\n };\n\n private readonly _updateAccountPersonalization = async (preferenceType?: string) => {\n const customerInformation = this.props.data.customerInformation.result;\n\n if (customerInformation) {\n const {\n telemetry,\n context: { request, actionContext }\n } = this.props;\n\n let isOptOutPersonalization = false;\n let input;\n\n switch (preferenceType) {\n case 'web-tracking':\n isOptOutPersonalization = customerInformation.OptOutWebActivityTracking || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n break;\n case undefined:\n case 'personalization':\n default:\n isOptOutPersonalization = customerInformation.OptOutPersonalization || false;\n input = new updateCustomerPersonalizationInput(\n customerInformation.AccountNumber,\n !isOptOutPersonalization,\n request.apiSettings,\n preferenceType\n );\n }\n\n this.isUpdatingPreference = true;\n\n try {\n await updateCustomerPersonalization(input, actionContext);\n } catch (error) {\n if (telemetry) {\n telemetry.exception(error);\n telemetry.debug('Unable to update customer personalization');\n }\n }\n\n this.isUpdatingPreference = false;\n }\n };\n\n private readonly _renderCustomerAttributes = (): React.ReactNode => {\n return ;\n };\n}\n\nexport default AccountProfile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport B2bRequestsStatus from './b2b-requests-status';\nimport B2bRequestsStatusView from './b2b-requests-status.view';\n\nexport * from './b2b-requests-status';\nexport * from './b2b-requests-status.data';\nexport { IB2bRequestsStatusConfig, IB2bRequestsStatusProps } from './b2b-requests-status.props.autogenerated';\nexport * from './b2b-requests-status.view';\n\nexport { B2bRequestsStatus, B2bRequestsStatusView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWishlistTileViewProps } from './account-wishlist-tile';\n\nconst AccountWishlistTileView: React.FC = props => {\n const { AccountWishlistTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountWishlistTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountWelcomeTile from './account-welcome-tile';\nimport AccountWelcomeTileView from './account-welcome-tile.view';\n\nexport * from './account-welcome-tile';\nexport * from './account-welcome-tile.data';\nexport { IAccountWelcomeTileConfig, IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\nexport * from './account-welcome-tile.view';\n\nexport { AccountWelcomeTile, AccountWelcomeTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountLoyalty from './account-loyalty';\nimport AccountLoyaltyView from './account-loyalty.view';\n\nexport * from './account-loyalty';\nexport * from './account-loyalty.data';\nexport { IAccountLoyaltyConfig, IAccountLoyaltyProps, IAccountLoyaltyResources } from './account-loyalty.props.autogenerated';\nexport * from './account-loyalty.view';\nexport * from './components';\n\nexport { AccountLoyalty, AccountLoyaltyView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE 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 { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (slots && slots.socialShareItems.length === 0) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport SignUp from './sign-up';\nimport SignUpView from './sign-up.view';\n\nexport * from './components';\nexport * from './sign-up';\nexport * from './sign-up.props.autogenerated';\nexport * from './sign-up.view';\n\nexport { SignUp, SignUpView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrganizationUsersTileViewProps } from './organization-users-tile';\n\nconst OrganizationUsersTileView: React.FC = props => {\n const { OrganizationUsersTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default OrganizationUsersTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './account-customer-balance-tile-info';\nexport * from './account-customer-balance-tile-links';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountPreference, IAccountPreferences, IAccountProfileItem, IAccountProfileViewProps } from './account-profile';\n\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\n return (\n \n {heading}\n \n {extraPreferences &&\n extraPreferences.map((preferenceSecton, index) => {\n return ;\n })}\n \n );\n};\n\nconst AccountPreferenceSection: React.FC = ({\n accountPreference,\n heading,\n description,\n buttonWrapper,\n buttonYesText,\n button,\n buttonNoText\n}) => {\n return (\n \n {heading}\n {description}\n \n {buttonNoText}\n {button}\n {buttonYesText}\n \n \n );\n};\n\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nconst AccountProfileView: React.FC = props => {\n const {\n AccountProfile,\n infoMessageBar,\n accountProfileWrapper,\n heading,\n emailSection,\n nameSection,\n preferenceSection,\n customerAttributesWrapper,\n customerAttributesSection\n } = props;\n\n return (\n \n {infoMessageBar}\n {accountProfileWrapper && (\n \n {heading}\n \n \n \n \n )}\n {customerAttributesWrapper && {customerAttributesSection}}\n \n );\n};\n\nexport default AccountProfileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default PasswordResetInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileData } from './account-welcome-tile.data';\nimport { IAccountWelcomeTileProps } from './account-welcome-tile.props.autogenerated';\n\nexport interface IAccountWelcomeTileViewProps extends IAccountWelcomeTileProps {\n AccountWelcomeTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n}\n\n/**\n *\n * AccountWelcome component.\n * @extends {React.PureComponent>}\n */\nclass AccountWelcomeTile extends React.PureComponent> {\n public render(): JSX.Element {\n const { config, data } = this.props;\n const { className } = config;\n\n const accountInfo = data.accountInformation.result;\n const heading = {\n ...config.heading,\n ...{\n text: `${config.heading.text} ${accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''}`\n }\n };\n\n const viewProps = {\n ...this.props,\n className,\n AccountWelcomeTile: {\n moduleProps: this.props,\n className: classnames('ms-account-welcome-tile', config.className)\n },\n heading: heading && heading.text && (\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\nexport default AccountWelcomeTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountWishlistTile from './account-wishlist-tile';\nimport AccountWishlistTileView from './account-wishlist-tile.view';\n\nexport * from './account-wishlist-tile';\nexport * from './account-wishlist-tile.data';\nexport {\n IAccountWishlistTileConfig,\n IAccountWishlistTileProps,\n IAccountWishlistTileResources\n} from './account-wishlist-tile.props.autogenerated';\nexport * from './account-wishlist-tile.view';\n\nexport { AccountWishlistTile, AccountWishlistTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountAddressTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountAddressTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountAddressTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrderTemplatesTileDescription {\n description: string;\n}\n\nexport const AccountOrderTemplatesTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\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\nexport const AccountOrderTemplatesTileLinks: React.FC = ({\n links,\n onTextChange,\n telemetryContent,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component.\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature'\n );\n if (\n !this.props.context.request.params.isEditor &&\n (!RetailB2BEcommerceFeatureState?.IsEnabled || !this.props.data.customerInformation.result?.IsB2b)\n ) {\n return <>;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\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 AccountOrderTemplatesTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './account-profile-description';\nexport { IAccountProfileLinks } from './account-profile-links';\nexport * from './account-profile-text';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\n );\n }\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n return 'xs';\n }\n}\n\nexport default SitePicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountProfileText {\n className: string;\n text: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountProfileText: React.FC = ({ className, text }) => {text};\n\nexport default IAccountProfileText;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountWelcomeTileViewProps } from './account-welcome-tile';\n\nconst AccountWelcomeTileView: React.FC = props => {\n const { AccountWelcomeTile, heading } = props;\n\n return {heading};\n};\n\nexport default AccountWelcomeTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountInvoiceTileViewProps } from './account-invoice-tile';\n\nexport default (props: IAccountInvoiceTileViewProps) => {\n const { AccountInvoiceTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-address-tile.props.autogenerated';\n\nexport interface IAccountAddressTileLinks {\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 AccountAddressTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-address-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountAddressTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountLoyaltyTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountLoyaltyTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountLoyaltyTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLoadingMessage {\n className: string;\n message: string;\n}\n\nconst SignUpLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default SignUpLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AdminRequestStatementButton, RequestStatementModal } from './components';\n\nexport { AdminRequestStatementButton, RequestStatementModal };\n\nexport * from './account-customer-balance';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { ICheckoutApplePayViewProps } from './checkout-apple-pay';\n\nconst CheckoutApplyPayView: React.FC = ({ checkoutApplyPay, applePayButton }) => (\n {applePayButton}\n);\n\nexport default CheckoutApplyPayView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default PasswordResetLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport AccountOrderTemplatesTile from './account-order-templates-tile';\nimport AccountOrderTemplatesTileView from './account-order-templates-tile.view';\n\nexport * from './account-order-templates-tile';\nexport * from './account-order-templates-tile.data';\nexport {\n IAccountOrderTemplatesTileConfig,\n IAccountOrderTemplatesTileProps,\n IAccountOrderTemplatesTileResources\n} from './account-order-templates-tile.props.autogenerated';\nexport * from './account-order-templates-tile.view';\n\nexport { AccountOrderTemplatesTile, AccountOrderTemplatesTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './sign-in-button';\nexport * from './sign-in-description';\nexport * from './sign-in-error';\nexport * from './sign-in-input';\nexport * from './sign-in-label';\nexport * from './sign-in-link';\nexport * from './sign-in-loading-icon';\nexport * from './sign-in-loading-message';\nexport * from './sign-in-text';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrganizationUsersTileDescription {\n description: string;\n}\n\nexport const AccountOrganizationUsersTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../organization-users-tile.props.autogenerated';\n\nexport interface IAccountOrganizationUsersTileLinks {\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\nexport const AccountOrganizationUsersTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-organization-users-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { AccountOrganizationUsersTileDescription, AccountOrganizationUsersTileLinks } from './components';\nimport { IOrganizationUsersTileData } from './organization-users-tile.data';\nimport { IOrganizationUsersTileProps } from './organization-users-tile.props.autogenerated';\n\nexport interface IOrganizationUsersTileViewProps extends IOrganizationUsersTileProps {\n OrganizationUsersTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * OrganizationUsersTile component.\n * @extends {React.PureComponent>}\n */\nclass OrganizationUsersTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IOrganizationUsersTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n const { config, resources, data } = this.props;\n const { className, heading, links } = config;\n const { accountOrganizationUsersTileDescriptionForSingleUser, accountOrganizationUsersTileDescriptionForMultipleUsers } = resources;\n const numUsers = data.users && data.users.result;\n const accountOrganizationUsersTileDescription =\n numUsers === 1 ? accountOrganizationUsersTileDescriptionForSingleUser : accountOrganizationUsersTileDescriptionForMultipleUsers;\n const customerInformation = data.customerInformation.result;\n\n // Organization-users tile will not be render for non-admin users.\n if (!customerInformation?.IsB2bAdmin) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n OrganizationUsersTile: {\n moduleProps: this.props,\n className: classnames('ms-account-organization-users-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\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 OrganizationUsersTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport LoyaltyTerms from './loyalty-terms';\nimport LoyaltyTermsView from './loyalty-terms.view';\n\nexport * from './components';\nexport * from './loyalty-terms';\nexport * from './loyalty-terms.data';\nexport { ILoyaltyTermsConfig, ILoyaltyTermsProps, ILoyaltyTermsResources } from './loyalty-terms.props.autogenerated';\nexport * from './loyalty-terms.view';\n\nexport { LoyaltyTerms, LoyaltyTermsView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ISignUpLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport B2bRequestsTile from './b2b-requests-tile';\nimport B2bRequestsTileView from './b2b-requests-tile.view';\n\nexport * from './b2b-requests-tile';\nexport * from './b2b-requests-tile.data';\nexport { IB2bRequestsTileConfig, IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nexport * from './b2b-requests-tile.view';\n\nexport { B2bRequestsTile, B2bRequestsTileView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\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 onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\n"],"sourceRoot":""}