{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///src/modules/password-reset/password-reset.tsx?2fc7","webpack:///src/modules/fabrikam/views/reviews-list.view.tsx?39a2","webpack:///src/modules/password-reset/components/password-reset-error.tsx?5bd3","webpack:///src/modules/order-lookup/order-lookup.view.tsx?d1dd","webpack:///src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?e178","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///src/modules/account-customer-balance-tile/index.ts?038c","webpack:///./src/modules/advanced-notes/advanced-notes.tsx?0cd5","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/password-reset/password-reset.view.tsx?f872","webpack:///./src/themes/gardner-theme-b2c/views/components/carticon.component.tsx?0bc6","webpack:///src/modules/site-picker/site-picker.view.tsx?dcff","webpack:///src/modules/account-address-tile/index.ts?effb","webpack:///src/modules/loyalty-terms/components/index.ts?508b","webpack:///./src/themes/gardner-theme/views/business-organization-list.view.tsx?ad18","webpack:///src/modules/b2b-requests-tile/components/account-b2b-requests-tile-links.tsx?4f55","webpack:///src/modules/b2b-requests-tile/b2b-requests-tile.tsx?ce42","webpack:///src/modules/account-profile/index.ts?8c04","webpack:///src/modules/adventureworks/views/checkout-customer-account-payment.view.tsx?fdf3","webpack:///./src/themes/gardner-theme-b2c/views/business-organization-list.view.tsx?ec68","webpack:///./src/themes/gardner-theme/views/components/carticon.component.tsx?6233","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/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/catalog-picker/catalog-picker.view.tsx?d632","webpack:///src/modules/b2b-requests-status/b2b-requests-status.view.tsx?afa7","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/password-reset/components/password-reset-loading-message.tsx?a735","webpack:///src/modules/sign-in/index.ts?5400","webpack:///./src/modules/advanced-notes/advanced-notes.view.tsx?f5d4","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/business-organization-list/business-organization-list.view.tsx?8701","webpack:///src/modules/business-organization-list/business-organization-list.tsx?b6f5","webpack:///src/modules/account-customer-balance/components/account-actions.tsx?bbe9","webpack:///src/modules/account-customer-balance/components/account-statement-request-modal.tsx?cf6e","webpack:///src/modules/account-customer-balance/components/index.tsx?9c6a","webpack:///src/index.ts?c6ae","webpack:///src/modules/adventureworks/views/b2b-requests-status.view.tsx?b8db","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/adventureworks/views/business-organization-list.view.tsx?dcc4","webpack:///src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?ed3f","webpack:///src/modules/account-order-templates-tile/account-order-templates-tile.view.tsx?90af","webpack:///./src/modules/eve-business-sign-up/eve-business-sign-up.view.tsx?dc32","webpack:///src/modules/account-profile-edit/account-profile-edit.view.tsx?72b7","webpack:///src/modules/sign-up/components/index.ts?0666","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-welcome-tile/index.ts?2bd4","webpack:///src/modules/account-loyalty/index.ts?6823","webpack:///src/modules/sign-up/index.ts?7cfc","webpack:///src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?c84d","webpack:///src/modules/account-customer-balance-tile/components/index.ts?1499","webpack:///src/modules/loyalty-terms/loyalty-terms.tsx?0629","webpack:///src/modules/account-customer-balance/account-customer-balance.tsx?da17","webpack:///src/modules/business-organization-list/components/small-components.tsx?104e","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-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/b2b-requests-tile/b2b-requests-tile.view.tsx?949e","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/account-profile-edit/components/account-profile-edit-loading-message.tsx?2c6f","webpack:///src/modules/loyalty-terms/loyalty-terms.view.tsx?5155","webpack:///./src/modules/eve-business-sign-up/components/sign-up-button.tsx?e34c","webpack:///./src/modules/eve-business-sign-up/components/sign-up-error.tsx?b1ad","webpack:///./src/modules/eve-business-sign-up/components/sign-up-input.tsx?a0aa","webpack:///./src/modules/eve-business-sign-up/components/sign-up-label.tsx?2e32","webpack:///./src/modules/eve-business-sign-up/eve-business-sign-up.tsx?1300","webpack:///src/modules/password-reset/components/password-reset-label.tsx?2eed","webpack:///src/modules/account-customer-balance/index.tsx?fe9b","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/b2b-requests-status/components/b2b-requests-table.tsx?6d33","webpack:///src/modules/b2b-requests-status/b2b-requests-status.tsx?692d","webpack:///src/modules/content-block/content-block.view.tsx?a86e","webpack:///src/modules/adventureworks/views/media-gallery.view.tsx?e2f6","webpack:///src/modules/loyalty-terms/index.ts?01e8","webpack:///src/modules/b2b-requests-tile/index.ts?ef19","webpack:///src/modules/account-profile-edit/account-profile-edit.tsx?a9d6"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","PasswordReset","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","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","buildReviewCard","Node","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","Module","modalHeader","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","ReviewsListview","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","length","isFilterApplied","review","PasswordResetError","errorClassName","role","OrderLookupViewComponent","_orderLookupForm$clas","_submitButton$classNa","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","paragraph","orderLookupForm","renderOrderLookupInputField","orderNumberInput","additionalProperties","registeredUserMessage","fieldErrorMessage","ArrayExtensions","hasElements","item","submitButtonLabelText","AccountProfileEditLoadingIcon","ProductSpecification","_toggle","drawerListId","setState","isDrawerOpen","undefined","isAdditionalMediaDrawerOpen","catalogId","validateCatalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","debug","_heading$tag","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","title","productSpecificationResult","_createDrawerBody","_createTableBody","content","_this$props$context$r","_this$props$data$addi","tableRows","index","_renderProductCell","Name","app","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Drawer","collapseProps","timeout","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","prevState","mediaLocation","Uri","href","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","AdvancedNotes","_className","_renderNote","_renderNotes","notes","note","ItemId","_renderStaticNotesDisplay","isNoteAreaActive","staticDisplay","children","advancedNotesModuleProps","assembleNode","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","ctaLink","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","_mapEditableLinks","linkdata","editableLinks","forEach","payLoad","getPayloadObject","contentAction","etext","attributes","getTelemetryAttributes","btnClass","onClick","onTelemetryClick","ContentBlock","handleTextChange","handleParagraphChange","handleLinkTextChange","Number","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","imageProps","gridSettings","imageSettings","contentBlockLinks","LinksComponent","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","contentBlockviewProps","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","PasswordResetItem","PasswordResetLoading","_ref3","PasswordResetView","_ref2","button","LocalAccount","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","hasInvoiceLine","totalItemsInCart","qtyLabel","format","visibility","CartIconComponent","msdyn365Commerce","createComponentOverride","component","_renderSitePicker","_renderSiteOptionsList","SitePickerMenuList","SitePickerMenuListItem","SitePickerMenuListItemArray","options","onMouseLeave","resetSiteOptionsState","isMobileView","SitePicker","_props$SitePickerMenu","SitePickerMobileContainer","renderSiteOptions","_renderMobileView","_props$config$heading","SitePickerMenu","SitePickerMenuSpan","siteOptionsState","_renderDesktopView","BusinessFormItemComponent","renderModal","isModalOpen","headingSection","bodySection","footerSection","toggleModal","wrapClassName","autoFocus","fade","applicationNode","toggle","ModalHeader","ModalFooter","BusinessUserFormComponent","modalClassName","FormWrapper","modalHeading","modalDescription","inputs","toString","BusinessUserDetailsComponent","selectedUser","FirstName","LastName","userFullName","keys","InputID","BusinessOrganizationListComponent","OrganizationUserList","moduleContainer","noUsersText","addUserButton","organizationListTable","formType","requestAccountStatementButton","requestStatementModal","buttonList","headingForEmptyUserOrganizationList","textForEmptyUserOrganizationList","getForm","formProps","B2bRequestsTileLinks","B2bRequestsTile","isChannelTypeB2B","b2bRequestsTile","SummaryForm","addPaymentButton","appliedLine","bottomBorder","paymentAmountInput","EditForm","inputLabel","inputAmount","customerName","customerAccountNumber","customerSince","accountCredit","alert","accountDetails","CheckoutCustomerAccountView","checkoutCustomerAccount","checkoutErrorRef","summaryView","editView","moduleState","ref","isReady","AccountProfileEditButton","disabled","Button","IAccountProfileDescription","description","_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","_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","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","_renderCartLinesGroupTitle","_cartLine$data2","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","CartView","_props$cart","_props$context$action","_props$cart2","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","SignUpText","createElement","LoyaltySignUp","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","IssueLoyaltyInput","issueLoyalty","then","location","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","customerInformation","invalidAsyncCustomerState","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","status","signInLink","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","CatalogPickerViewFunctionComponent","catalogPicker","catalogs","B2bRequestsStatusView","b2bRequestsStatus","table","labelGroup","renderErrorLabel","responseErrorMessage","errorMessageClassName","renderRegisteredUserMessage","signInLinkClassName","registeredUserClassName","orderLookupRegisteredUserText","orderLookupViewAccountText","orderLookupSignInLinkText","infoMessage","signInText","renderFieldErrors","orderLookupFieldValidationErrorMessage","RenderOrderLookupAdditionalFieldInput","_getOrderLookupAdditionalFields","additionalFieldLabel","additionalFieldError","additionalFieldInput","additionalFieldLabelClassName","inputType","onChange","isValidAdditionalFieldName","additionalFieldValidationMessage","RenderOrderLookupFormFields","_getOrderLookupFields","orderLookupLabelClassName","orderLookupLabel","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","isNullOrWhitespace","replace","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","emailValidationErrorMessage","isRequireError","isEmailValidError","isValidEmailInput","_renderOrderNumberAlert","orderLookupOrderNumberValidationErrorMessage","_renderOrderLookupInput","orderLookupEmailLabel","orderLookupEmailAriaLabel","_additionalFieldValidation","isFieldValid","RegExp","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","callerContext","find","TypeName","ExtensibleEnumerations","orderLookupAdditionalParameter","validateOrderLookupField","orderStatusLookUpParameter","isValidField","validateOrderLookupAdditionalField","orderStatusLookUpAdditionalParameters","isValidAdditionalField","_item$fieldKey","fieldKey","validateAdditionalFieldWithProxy","some","setLookupFieldState","additionalFieldsInput","PasswordResetLoadingMessage","AccountProfileEditLabel","htmlFor","BusinessFormItem","BusinessUserForm","_renderModal","BusinessUserDetails","BusinessOrganizationList","ButtonList","_getForm","FormType","InputType","renderInputSection","asteriskAfterLabel","onInputChange","element","customClass","maxChars","isRequired","fieldReference","FormLabel","asteriskText","FormFieldError","FormInput","maxLength","placeholder","_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","async","updatedUser","_createBusinessPartner","Edit","editOrganizationUser","EditOrganizationUserInput","reload","trace","addOrganizationUser","AddOrganizationUserInput","businessUserActionRetailErrorMsg","parseFloat","_handleEditIcon","userData","possibleName","cell","fullName","lastSpaceIndex","lastIndexOf","firstName","substring","lastName","possibleCell","dataCell","_handleDeleteIcon","displayedUserData","TableDataType","Price","cultureFormatter","formatCurrency","Remove","_handleViewDetails","View","_handleRemoveUserButton","deleteUserData","deleteOrganizationUser","DeleteOrganizationUserInput","None","callbackRemoveButton","_onInputChange","prev","refresh","_isFormReady","formItem","match","isNaN","_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","_toggleModal","bind","mobileExcludedColumns","Status","_viewport","_updateViewport","submitButtonReference","addedReference","statementRequestMaxDateString","toISOString","split","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","selectedOrganizationLabel","selectedUserName","modalAriaLabel","maxDateString","tableSort","showPagination","paginationItemPerPage","businessUserPaginationNextButtonText","businessUserPaginationPreviousButtonText","businessUserEditButtonText","businessUserViewUserButtonText","businessUserDeleteButtonText","businessUserActionButtonText","businessUserPaginationAriaLabel","columnSortAriaLabel","tableData","_createTableItems","headings","isMobile","includes","sortable","rows","editLinkText","deleteLinkText","viewLinkText","editLinkTooltip","deleteLinkTooltip","viewLinkTooltip","enableToModify","actionLinkText","showCheckBoxes","isSortable","resourcePrefix","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","parseInt","itemPerPage","prevText","nextText","paginationText","isSingleSelectOnly","tableAriaLabel","tableTabIndex","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","actions","onDelete","onView","formatPrice","checkBoxCallback","businessUserActiveStatusText","businessUserPendingStatusText","businessUserRemovedStatusText","usersList","statusString","StatusValue","FullName","buttonReferences","delete","_this$state$reference","businessUserRemoveModalHeaderText","businessUserRemoveModalDescription","businessUserViewModalHeaderText","businessUserCancelButtonText","businessUserCancelRemoveUserButtonText","businessUserRemoveUserButtonText","businessUserErrorUpdatingUsersMessage","formClassName","typeClassName","handleRemoveButton","businessUserEditUserFormHeadingText","businessUserAddUserFormHeadingText","businessUserSaveButtonArialabel","businessUserSaveButtonText","businessUserCancelButtonArialabel","businessUserFieldIncorrectErrorText","businessUserActionErrorText","businessUserAllFieldsRequiredMessage","FormButton","computed","ActionBar","onSelectCustomerAccount","onSelectFullOrg","popoverReference","requestStatementDropdownString","Popover","placement","onChangeFromDateEvent","onChangeToDateEvent","onBlurFromDate","isFunction","onBlurToDate","horizontalPosition","verticalPosition","onBlur","max","min","AccountLabels","accountNumber","customerSincePrefix","createdOn","AccountValues","availableCredit","availableCreditLabel","AvailableCreditComponent","_ref5","BalanceOwedComponent","_ref6","balanceOwedLabel","balanceOwed","CreditExcessComponent","_ref7","creditExcessLabel","creditExcess","BackButton","_ref8","BackToShopping","_props$data$operation","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","AccountProfileEditError","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","listProps","salesOrders","salesOrder","OrderHistoryView","orderHistoryProps","emptyMessage","backToShoppingLink","list","moreButton","CatalogPicker","PureComponent","_this$props$data$cata","catalogPickerHeading","_moduleClassName","isCatalogsAvailable","catalogPickerParagraph","RichTextComponent","catalogValidationText","_renderCatalogPicker","_renderCatalogPickerButton","getCatalogId","currentCatalogText","linkToCatalog","_getUrlSync","catalogUrl","fullUrl","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","String","firstOrDefault","Images","tabIndex","Image","src","generateImageUrl","galleryImageSettings","altText","loadFailureBehavior","LoyaltySignUpView","AccountOrderTemplatesTileView","AccountOrderTemplatesTile","BusinessSignUpItem","isAddressInput","BusinesSignUpView","businessSignUp","ContainerWrapper","businessSignUpForm","disclaimer","AccountProfileEditItem","AccountProfileEditLoading","AccountProfileEditView","accountProfileEdit","accountProfileEditLocalAccount","AccountAttributeDataTypeValue","AccountProfileAttributes","isUpdatingAttributes","gotException","hasError","attributeClassName","maxIntegerLimit","minIntegerLimit","maxDecimalLimit","minDecimalLimit","maxStringLength","maxVATNumberLength","maxPhoneLength","editAsyncCustomerFeatureName","isEditAsyncCustomerFeatureEnabled","_renderAttributes","_data$featureState","_this$props$accountPr","accountProfileProps","attributeDefinitions","additionalInformationSectionHeading","elements","showAttributes","att","attributeDefinition","attribute","IsHidden","_renderAttribute","editAttributes","attributesEditButtonText","attributesSaveButtonText","saveAttributes","attributesCancelButtonText","cancelAttributes","featureState","feature","IsEnabled","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","DecimalValue","StringValue","_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","NameTranslations","KeyName","Phone","VATNumber","VatNumber","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","initialCustomerAttributes","exception","_buildPayloadData","defaultIntegerValue","DefaultValue","LowerBound","UpperBound","defaultDecimalValue","defaultStringValue","defaultBooleanValue","_getCustomerPhoneAndVatNumber","AccountProfileLinks","AccountProfile","isUpdatingPreference","handleEmailHeadingChange","emailAddressSectionHeading","handleNameHeadingChange","nameSectionHeading","editButtonText","onClickEventHandler","_updateAccountPersonalization","_renderPreference","sectionHeading","enableAriaLabel","isOptOut","onClickHandler","accountPreference","buttonWrapper","buttonYesText","buttonNoText","DescriptionComponent","onUpdateAccountPreference","isOptOutPersonalization","preferenceType","OptOutWebActivityTracking","updateCustomerPersonalizationInput","OptOutPersonalization","updateCustomerPersonalization","_renderCustomerAttributes","editButtonAriaLabel","shouldRenderAttributes","editLink","get","accountProfileWrapper","emailSection","_renderEmailSection","nameSection","_renderNameSection","getDescription","preferenceSection","_renderPreferenceSection","customerAttributesWrapper","customerAttributesSection","AccountProfileItem","personalizationDescription","personalizationEnableButtonAriaLabel","webTrackingDescription","webTrackingEnableButtonAriaLabel","preferencesSectionHeading","personalizationSectionHeading","webTrackingSectionHeading","enableDataAnalytics","features","extraPreferences","accountPreferences","personalization","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","returnFocusRef","returnRef","cancelLoyaltyTermsText","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_submit","_checkboxChecked","toggleRef","search","isJoining","qsps","qsp","splitQsp","hideToggle","slots","serviceTerms","modalToggle","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getLoyaltyCardAsync","fullCard","update","GetLoyaltyCardInput","AccountCustomerBalance","_toggleDropdown","_adminShowRequestStatementModal","_this$props$data$b2bU","b2bUserInformation","_get","account","creditSummarySectionHeading","accountSectionHeading","backToShoppingText","myAccountStatementLabel","_formatJoinDate","CreatedDateTime","customerCredit","customerAccountBalance","excess","InvoiceAccountCreditLimit","CreditLimit","Balance","InvoiceAccountBalance","_formatCurrency","backLink","emailAddress","isB2BSite","actionBar","IsB2bAdmin","accountLabels","accountValues","homeButton","currency","currencyCode","toFixed","Intl","DateTimeFormat","locale","month","day","year","GetMaxLength","parsedMaxLength","AccountPreferencesSection","AccountPreferenceSection","preferenceSecton","AccountProfileSection","AccountProfileView","PasswordResetInput","AccountWelcomeTile","accountInfo","accountInformation","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","accountOrderTemplatesTileDescription","orderTemplates","orderTemplatesCount","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","document","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","createRef","_renderSiteOptions","viewport","_document","_document2","body","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_this$props$config$he","_this$props$config$he2","_renderSitePickerImage","expandSiteOptionsState","e","preventDefault","cookies","isConsentGiven","cookieConfig","maxAge","defaultImageSettings","viewports","q","h","xl","lazyload","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","siteRedirectUrl","siteName","B2bRequestsTileView","PasswordResetButton","IAccountProfileText","AccountWelcomeTileView","AccountProfileEditLoadingMessage","LoyaltyTermsView","SignUpButton","SignUpError","SignUpInput","TextArea","SignUpLabel","needToReset","showErrors","addressForm","updateAddress","fieldRequiredError","fieldInvalidError","_label$replace$trim","renderFieldFeedbackMessage","fieldPattern","invalidFieldMessage","missingFieldMessage","baseSignUpItem","Address","updateForm","resetAddress","BusinessSignUp","_this","BusinessSignUpDefaultInputs","firstNameLabel","lastNameLabel","emailAddressLabel","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","needsToReset","hasSubmitErrors","_onAddressChange","currentAddress","addressItem","addressHasErrors","showAddressErrors","currentInput","_onSubmit","_getItem","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","_onCancel","cleanForm","isAddress","arguments","_addedReference","_renderForm","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","newFormFields","PasswordResetLabel","AccountProfileEditInput","PasswordResetLoadingIcon","RequestsTableColumnHeader","getUserName","UserFirstName","UserLastName","b2bRequestsNameDisplay","formatDate","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","_request$TypeValue","_request$StatusValue","b2bRequestsTypeColumn","b2bRequestsRequestDateColumn","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","createTableItems","b2bRequestsPreviousText","b2bRequestsNextText","B2bRequestsTable","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","renderAdditionalContent","_additionalContent$ad","ContentBlockView","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","_props$context$app$co2","_props$config$thumbna2","fallbackImage","emptyPlaceHolderImage","placeholderImageName","_props$context$reques2","getFallbackImageUrl","thumbnailImageSettings","imageFallbackOptimize","skipImageValidation","fallBackSrc","defaultThumbnailImageSettings","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","Thumbnails","mediaGalleryItems","getMediaGalleryItems","lastUpdate","GetThumbnailItemComponent","imageId","modifiedActiveIndex","_props$context$app$co","_props$config$thumbna","_props$context$reques","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","Enter","onKeyDown","shouldUseOptimizedImage","bypassHideOnFailure","fullScreenTitleText","mediaGalleryView","CarouselProps","MediaGallery","AccountProfileEdit","onTextBoxChange","givenName","surname","emailRegex","invalidEmailAddressError","PRE","_htmlDecode","PAT_DESC","required_field","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","str","innerHTML","childNodes","nodeValue","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","AccountProfileEditButtonComponent","showEmail","emailAddressLabelText","AccountProfileEditLabelComponent","AccountProfileEditInputComponent"],"mappings":"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","file":"static/js/10.e276e487f883bc085168.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\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 { 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 { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\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 { 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 * 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): 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 let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\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","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IAdvancedNotesData } from './advanced-notes.data';\r\nimport { IAdvancedNotesProps } from './advanced-notes.props.autogenerated';\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { IAdvancedNoteEntity } from '../../actions/DataServiceEntities.g';\r\n\r\nexport interface IAdvancedNotesViewProps extends IAdvancedNotesProps {\r\n staticDisplay: INodeProps;\r\n advancedNotesModuleProps: IModuleProps;\r\n}\r\n\r\ninterface IAdvancedNotesExtendedProps extends IAdvancedNotesProps {\r\n notes: IAdvancedNoteEntity[];\r\n}\r\n\r\ninterface IAdvancedNotesState {\r\n notes: IAdvancedNoteEntity[];\r\n isNoteAreaActive: boolean;\r\n}\r\n/**\r\n *\r\n * AdvancedNotes component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass AdvancedNotes extends React.PureComponent {\r\n private _className = 'advanced-notes';\r\n constructor(props: IAdvancedNotesExtendedProps) {\r\n super(props);\r\n this.state = {\r\n notes: props.notes,\r\n isNoteAreaActive: false\r\n };\r\n }\r\n private _renderNote = (key: string, message: string): React.ReactNode => {\r\n return (\r\n
\r\n

{message}

\r\n
\r\n );\r\n };\r\n\r\n private _renderNotes = (): React.ReactNode => {\r\n return (\r\n
\r\n {this.props.notes.map((note, index) => {\r\n return this._renderNote(`${index}${note.ItemId}`, note.TextValue || '');\r\n })}\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders the static comment display for when the isCommentAreaActive state param is false\r\n * @return React.ReactNode\r\n */\r\n private _renderStaticNotesDisplay = () => {\r\n const notes = this._renderNotes();\r\n return
{notes}
;\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: IAdvancedNotesViewProps = {\r\n ...this.props,\r\n staticDisplay: {\r\n tag: 'div',\r\n className: `${this._className}__static-display`,\r\n children: this._renderStaticNotesDisplay()\r\n },\r\n advancedNotesModuleProps: {\r\n tag: 'div',\r\n className: `${this._className}`,\r\n moduleProps: { ...this.props }\r\n }\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default AdvancedNotes;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { 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 * 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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartIconData: Interface for Cart Icon Data.\r\n */\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\n/**\r\n * ICartIconComponentProps: Interface for Cart Icon component props.\r\n */\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\n/**\r\n * ICartIconComponent: Interface for Cart Icon component.\r\n */\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\r\n const defaultCartItemCount: number = 0;\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n let cartItem = defaultCartItemCount;\r\n\r\n if (cart) {\r\n cartItem = cart.hasInvoiceLine ? defaultCartItemCount : cart.totalItemsInCart;\r\n }\r\n\r\n let qtyLabel: string = '';\r\n const cartMaxQuantity: number = 99;\r\n const maxQuantityLabel: string = '99+';\r\n if (cartItem > cartMaxQuantity) {\r\n qtyLabel = maxQuantityLabel;\r\n } else {\r\n qtyLabel = format(cartQtyLabel, cartItem);\r\n }\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {qtyLabel}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// @ts-expect-error -- Compatible issue with the component override.\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { 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 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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IBusinessFormItem, IBusinessOrganizationListViewProps, IFormViewProps, InputID } from '@msdyn365-commerce-modules/business-organization-list';\r\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessOrganizationListProps, IBusinessOrganizationListResources }\r\n from '../definition-extensions/business-organization-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Business Form Item component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessFormItemComponent: React.FC = (props: IBusinessFormItem) => {\r\n const {\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n } = props;\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * To render modal.\r\n * @param className - The modal classname.\r\n * @param isModalOpen - The boolean for modal open status.\r\n * @param headingSection - The heading section of modal.\r\n * @param bodySection - The body section of modal.\r\n * @param footerSection - The footer section of modal.\r\n * @param toggleModal - The toggle modal callback function.\r\n * @returns The JSX Element.\r\n */\r\nconst renderModal = (className: string, isModalOpen: boolean, headingSection: React.ReactNode, bodySection: React.ReactNode, footerSection: React.ReactNode,\r\n toggleModal?: () => void) => {\r\n return (\r\n \r\n \r\n {headingSection}\r\n \r\n \r\n {bodySection}\r\n \r\n \r\n {footerSection}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Business User Form component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessUserFormComponent: React.FC = (props: IFormViewProps) => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\r\n\r\n const modalBody = (\r\n <>\r\n {modalDescription}\r\n \r\n {inputs && inputs.map((item: IBusinessFormItem) => {\r\n return (\r\n\r\n \r\n );\r\n })}\r\n {errorMessage?.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n \r\n \r\n\r\n );\r\n\r\n const modalFooter = buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n });\r\n\r\n return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\r\n};\r\n\r\n/**\r\n * Selected user interface.\r\n */\r\ninterface ISelectedUser {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n FirstName?: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n LastName?: string;\r\n}\r\n\r\n/**\r\n * Business User Details component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessUserDetailsComponent: React.FC = (props: IFormViewProps) => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { modalClassName, FormWrapper, modalHeading, modalDescription, buttons, errorMessage, resources, toggle } = props;\r\n let modalBody = null;\r\n const selectedUser = props.selectedUser as ISelectedUser | string;\r\n\r\n if (!selectedUser) {\r\n modalBody = errorMessage;\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { FirstName, LastName } = selectedUser as ISelectedUser;\r\n const userFullName = `${FirstName as string} ${LastName as string}`;\r\n\r\n modalBody = (\r\n <>\r\n { modalDescription }\r\n \r\n \r\n {userFullName}\r\n \r\n { Object.keys(selectedUser).map((data, index) => {\r\n if (data === InputID.FirstName || data === InputID.LastName) {\r\n return null;\r\n }\r\n const label = resources[`table${data}HeadingText`] as string || data;\r\n return (\r\n {label}\r\n {': '}\r\n {selectedUser[data]}\r\n );\r\n\r\n })}\r\n \r\n \r\n );\r\n }\r\n\r\n const modalFooter = buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n });\r\n\r\n return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\r\n};\r\n\r\n/**\r\n * To get form.\r\n * @param type - The type of form.\r\n * @param formProps - The form props.\r\n * @param toggleModal - The toggle modal callback function.\r\n * @returns The JSX Element.\r\n */\r\nconst getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\r\n switch (type) {\r\n case 'ADD':\r\n case 'EDIT':\r\n return ;\r\n case 'VIEW':\r\n case 'REMOVE':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Business Organization List component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessOrganizationListComponent: React.FC> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { OrganizationUserList, moduleContainer, heading, noUsersText, addUserButton, organizationListTable, form, formType,\r\n toggleModal, requestAccountStatementButton, requestStatementModal } = props;\r\n\r\n const buttonList: React.ReactNode =\r\n (\r\n \r\n {addUserButton}\r\n {requestAccountStatementButton}\r\n \r\n );\r\n\r\n if (noUsersText) {\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n \r\n {props.resources.headingForEmptyUserOrganizationList}\r\n \r\n \r\n {props.resources.textForEmptyUserOrganizationList}\r\n \r\n {buttonList}\r\n \r\n {requestStatementModal}\r\n {noUsersText}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {buttonList}\r\n {requestStatementModal}\r\n {organizationListTable}\r\n \r\n { form && getForm(formType, form, toggleModal) }\r\n \r\n );\r\n};\r\n\r\nexport default BusinessOrganizationListComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../../..';\n\nexport interface IB2bRequestsTileLinksProps {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst defaultClassName = 'ms-account-b2b-requests-tile';\n\nexport const B2bRequestsTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (!ArrayExtensions.hasElements(links)) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n return linkdata.map(link => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return {\n ariaLabel: link.ariaLabel,\n className: `${defaultClassName}__link`,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n } as Msdyn365.ILinksData;\n });\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IB2bRequestsTileData } from './b2b-requests-tile.data';\nimport { IB2bRequestsTileProps } from './b2b-requests-tile.props.autogenerated';\nimport { B2bRequestsTileLinks } from './components/account-b2b-requests-tile-links';\n\nexport interface IB2bRequestsTileViewProps extends IB2bRequestsTileProps {\n b2bRequestsTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsTile component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsTile extends React.PureComponent> {\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IB2bRequestsTileProps) {\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 } = this.props;\n const { className, heading, links } = config;\n\n const defaultClassName = 'ms-account-b2b-requests-tile';\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const viewProps = {\n ...this.props,\n className,\n b2bRequestsTile: {\n moduleProps: this.props,\n className: classnames(defaultClassName, config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: ArrayExtensions.hasElements(links) && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default B2bRequestsTile;\n","/*!\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n}) => (\n \n <>\n {label}\n {paymentAmountInput}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IBusinessFormItem, IBusinessOrganizationListViewProps, IFormViewProps, InputID } from '@msdyn365-commerce-modules/business-organization-list';\r\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessOrganizationListProps, IBusinessOrganizationListResources }\r\n from '../definition-extensions/business-organization-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Business Form Item component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessFormItemComponent: React.FC = (props: IBusinessFormItem) => {\r\n const {\r\n wrapper,\r\n label,\r\n errorMessage,\r\n input\r\n } = props;\r\n return (\r\n \r\n {label}\r\n {errorMessage}\r\n {input}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * To render modal.\r\n * @param className - The modal classname.\r\n * @param isModalOpen - The boolean for modal open status.\r\n * @param headingSection - The heading section of modal.\r\n * @param bodySection - The body section of modal.\r\n * @param footerSection - The footer section of modal.\r\n * @param toggleModal - The toggle modal callback function.\r\n * @returns The JSX Element.\r\n */\r\nconst renderModal = (className: string, isModalOpen: boolean, headingSection: React.ReactNode, bodySection: React.ReactNode, footerSection: React.ReactNode,\r\n toggleModal?: () => void) => {\r\n return (\r\n \r\n \r\n {headingSection}\r\n \r\n \r\n {bodySection}\r\n \r\n \r\n {footerSection}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Business User Form component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessUserFormComponent: React.FC = (props: IFormViewProps) => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { modalClassName, FormWrapper, modalHeading, modalDescription, inputs, buttons, errorMessage, toggle } = props;\r\n\r\n const modalBody = (\r\n <>\r\n {modalDescription}\r\n \r\n {inputs && inputs.map((item: IBusinessFormItem) => {\r\n return (\r\n\r\n \r\n );\r\n })}\r\n {errorMessage?.map((error: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {error}\r\n \r\n );\r\n })}\r\n \r\n \r\n\r\n );\r\n\r\n const modalFooter = buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n });\r\n\r\n return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\r\n};\r\n\r\n/**\r\n * Selected user interface.\r\n */\r\ninterface ISelectedUser {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n FirstName?: string;\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n LastName?: string;\r\n}\r\n\r\n/**\r\n * Business User Details component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessUserDetailsComponent: React.FC = (props: IFormViewProps) => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { modalClassName, FormWrapper, modalHeading, modalDescription, buttons, errorMessage, resources, toggle } = props;\r\n let modalBody = null;\r\n const selectedUser = props.selectedUser as ISelectedUser | string;\r\n\r\n if (!selectedUser) {\r\n modalBody = errorMessage;\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { FirstName, LastName } = selectedUser as ISelectedUser;\r\n const userFullName = `${FirstName as string} ${LastName as string}`;\r\n\r\n modalBody = (\r\n <>\r\n { modalDescription }\r\n \r\n \r\n {userFullName}\r\n \r\n { Object.keys(selectedUser).map((data, index) => {\r\n if (data === InputID.FirstName || data === InputID.LastName) {\r\n return null;\r\n }\r\n const label = resources[`table${data}HeadingText`] as string || data;\r\n return (\r\n {label}\r\n {': '}\r\n {selectedUser[data]}\r\n );\r\n\r\n })}\r\n \r\n \r\n );\r\n }\r\n\r\n const modalFooter = buttons && buttons.map((button: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {button}\r\n \r\n );\r\n });\r\n\r\n return renderModal(modalClassName, true, modalHeading, modalBody, modalFooter, toggle);\r\n};\r\n\r\n/**\r\n * To get form.\r\n * @param type - The type of form.\r\n * @param formProps - The form props.\r\n * @param toggleModal - The toggle modal callback function.\r\n * @returns The JSX Element.\r\n */\r\nconst getForm = (type: string, formProps: IFormViewProps, toggleModal?: () => void) => {\r\n switch (type) {\r\n case 'ADD':\r\n case 'EDIT':\r\n return ;\r\n case 'VIEW':\r\n case 'REMOVE':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Business Organization List component.\r\n * @param props - View props.\r\n * @returns The JSX Element.\r\n */\r\nconst BusinessOrganizationListComponent: React.FC> = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\r\n const { OrganizationUserList, moduleContainer, heading, noUsersText, addUserButton, organizationListTable, form, formType,\r\n toggleModal, requestAccountStatementButton, requestStatementModal } = props;\r\n\r\n const buttonList: React.ReactNode =\r\n (\r\n \r\n {addUserButton}\r\n {requestAccountStatementButton}\r\n \r\n );\r\n\r\n if (noUsersText) {\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n \r\n {props.resources.headingForEmptyUserOrganizationList}\r\n \r\n \r\n {props.resources.textForEmptyUserOrganizationList}\r\n \r\n {buttonList}\r\n \r\n {requestStatementModal}\r\n {noUsersText}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {buttonList}\r\n {requestStatementModal}\r\n {organizationListTable}\r\n \r\n { form && getForm(formType, form, toggleModal) }\r\n \r\n );\r\n};\r\n\r\nexport default BusinessOrganizationListComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartIconData: Interface for Cart Icon Data.\r\n */\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\n/**\r\n * ICartIconComponentProps: Interface for Cart Icon component props.\r\n */\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\n/**\r\n * ICartIconComponent: Interface for Cart Icon component.\r\n */\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\r\n const defaultCartItemCount: number = 0;\r\n const invoiceItemCount: number = 1;\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n let cartItem = defaultCartItemCount;\r\n\r\n if (cart) {\r\n cartItem = cart.hasInvoiceLine ? invoiceItemCount : cart.totalItemsInCart;\r\n }\r\n\r\n let qtyLabel: string = '';\r\n const cartMaxQuantity: number = 99;\r\n const maxQuantityLabel: string = '99+';\r\n if (cartItem > cartMaxQuantity) {\r\n qtyLabel = maxQuantityLabel;\r\n } else {\r\n qtyLabel = format(cartQtyLabel, cartItem);\r\n }\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {qtyLabel}\r\n
\r\n \r\n );\r\n});\r\n\r\n// @ts-expect-error -- Compatible issue with the component override.\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\r\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, StringExtensions } 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.cart?.hasInvoiceLine || 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, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\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: !this.props.context.request.params.isEditor && 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 { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\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 { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\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 * 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","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IAdvancedNotesViewProps } from './advanced-notes';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\n\r\nexport default (props: IAdvancedNotesViewProps) => {\r\n const { staticDisplay, advancedNotesModuleProps } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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 { 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 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 statementRequestMaxDateString?: string;\n businessUserActionRetailErrorMsg: string;\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 statementRequestMaxDateString: new Date().toISOString().split('T')[0],\n businessUserActionRetailErrorMsg: ''\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 statementRequestMaxDateString\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 businessUserActionRetailErrorMsg: error.message\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, businessUserActionRetailErrorMsg } = 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 { Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceActions {\n className?: string;\n requestStatementButtonLabel: string;\n onRequestStatement(): void;\n}\n\ninterface IAdminRequestStatementProps {\n className?: string;\n requestStatementButtonLabel: string;\n myUserAccountLabel: string;\n fullOrganizationLabel: string;\n isDropdownShowing: boolean;\n buttonReference?: React.RefObject;\n onToggleDropdown(): void;\n onRequestStatement(isFullOrg: boolean): void;\n}\n\nexport const ActionBar: React.FC = ({ className, onRequestStatement, requestStatementButtonLabel }) => {\n return (\n
\n \n
\n );\n};\n\nexport const AdminRequestStatementButton: React.FC = ({\n className,\n onRequestStatement,\n requestStatementButtonLabel,\n onToggleDropdown,\n myUserAccountLabel,\n fullOrganizationLabel,\n isDropdownShowing,\n buttonReference\n}) => {\n const onSelectCustomerAccount = React.useCallback(() => {\n onRequestStatement(false);\n }, [onRequestStatement]);\n\n const onSelectFullOrg = React.useCallback(() => {\n onRequestStatement(true);\n }, [onRequestStatement]);\n\n const popoverReference = buttonReference !== undefined ? buttonReference : React.createRef();\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n return (\n
\n \n {requestStatementButtonLabel}\n \n \n \n {myUserAccountLabel}\n \n \n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * The interface for the props for the account statement request modal.\n */\ninterface IAccountStatementRequestModalProps {\n email: string;\n isModalOpen: boolean;\n fromDateString: string;\n toDateString: string;\n canSubmitRequest: boolean;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n fromDateLabel: string;\n toDateLabel: string;\n submitRequestLabel: string;\n cancelLabel: string;\n className: string;\n selectedUser: string;\n selectedUserLabel: string;\n toggle(): void;\n onChangeFromDate(newFromDate: string): void;\n onChangeToDate(newToDate: string): void;\n onSubmitRequest(): void;\n modalAriaLabel?: string;\n maxDateString?: string;\n}\n\nexport const RequestStatementModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n fromDateString,\n toDateString,\n onChangeFromDate,\n onChangeToDate,\n canSubmitRequest,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n selectedUser,\n selectedUserLabel,\n modalAriaLabel,\n maxDateString\n}) => {\n const onChangeFromDateEvent = React.useCallback(\n (event: React.ChangeEvent) => {\n const value = event.target.value;\n\n onChangeFromDate(value);\n },\n [onChangeFromDate]\n );\n\n const onChangeToDateEvent = React.useCallback(\n (event: React.ChangeEvent) => {\n const value = event.target.value;\n\n onChangeToDate(value);\n },\n [onChangeToDate]\n );\n\n /**\n * If the onBlur is called on the fromDate and the date has been changed, reset focus on it.\n * @param event - The event that is triggering onBlur.\n */\n const onBlurFromDate = React.useCallback(\n (event: React.ChangeEvent) => {\n if (ObjectExtensions.isFunction(event.target.focus) && event.target.value !== fromDateString) {\n event.target.focus();\n }\n },\n [fromDateString]\n );\n\n /**\n * If the onBlur is called on the toDate and the date has been changed, reset focus on it.\n * @param event - The event that is triggering onBlur.\n */\n const onBlurToDate = React.useCallback(\n (event: React.ChangeEvent) => {\n if (ObjectExtensions.isFunction(event.target.focus) && event.target.value !== toDateString) {\n event.target.focus();\n }\n },\n [toDateString]\n );\n\n return (\n \n {modalHeaderLabel}\n \n {selectedUser && (\n
\n \n
\n
{selectedUser}
\n
\n )}\n \n
\n {email}\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n \n \n {submitRequestLabel}\n \n {` `}\n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { AdminRequestStatementButton } from './account-actions';\nimport { RequestStatementModal } from './account-statement-request-modal';\n\nexport * from './account-actions';\nexport * from './account-statement-request-modal';\n\ninterface IAccountLabel {\n name: string;\n accountNumber: string;\n createdOn: string;\n customerSincePrefix: string;\n}\n\ninterface IAccountValues {\n availableCredit: string;\n availableCreditLabel: string;\n}\n\n/**\n * Prop for Available credit component.\n */\ninterface ICreditSummaryAvailableCredit {\n availableCreditLabel: string;\n availableCredit: string;\n}\n\n/**\n * Prop for Balanced owed component.\n */\ninterface ICreditSummaryBalanceOwed {\n balanceOwedLabel: string;\n balanceOwed: string;\n}\n\n/**\n * Prop for credit excess component.\n */\ninterface ICreditSummaryCreditExcess {\n creditExcessLabel: string | null;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryLabel {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface ICreditSummaryValues {\n availableCredit: string;\n balanceOwed: string;\n creditExcess: string | null;\n}\n\ninterface IBackButton {\n link: string;\n label: string;\n telemetryContent?: ITelemetryContent;\n}\n\nexport const AccountLabels: React.FC = ({ name, accountNumber, customerSincePrefix, createdOn }) => (\n
\n

{name}

\n
#{accountNumber}
\n
\n {customerSincePrefix} {createdOn}\n
\n
\n);\n\nexport const AccountValues: React.FC = ({ availableCredit, availableCreditLabel }) => (\n
\n
{availableCreditLabel}
\n
{availableCredit}
\n
\n);\n\nexport const CreditSummaryLabels: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n
{creditExcess}
\n
\n);\n\nexport const CreditSummaryValues: React.FC = ({ availableCredit, balanceOwed, creditExcess }) => (\n
\n
{availableCredit}
\n
{balanceOwed}
\n {creditExcess &&
{creditExcess}
}\n
\n);\n\n/**\n * Available credit component.\n * @param props - ICreditSummaryAvailableCredit.\n * @param props.availableCreditLabel - Available credit label.\n * @param props.availableCredit - Available credit value.\n * @returns - React Node for available credit component.\n */\nexport const AvailableCreditComponent: React.FC = ({ availableCreditLabel, availableCredit }) => (\n
\n
\n
{availableCreditLabel}
\n
\n
\n
{availableCredit}
\n
\n
\n);\n\n/**\n * Balance Owed Component.\n * @param props - ICreditSummaryBalanceOwed.\n * @param props.balanceOwedLabel - Balance Owed label.\n * @param props.balanceOwed - Balance Owed value.\n * @returns - React Node for balance owed component.\n */\nexport const BalanceOwedComponent: React.FC = ({ balanceOwedLabel, balanceOwed }) => (\n
\n
\n
{balanceOwedLabel}
\n
\n
\n
{balanceOwed}
\n
\n
\n);\n\n/**\n * Credit Excess Component.\n * @param props - ICreditSummaryCreditExcess.\n * @param props.creditExcessLabel - Credit excess label.\n * @param props.creditExcess - Credit excess value.\n * @returns - React Node for credit excess component.\n */\nexport const CreditExcessComponent: React.FC = ({ creditExcessLabel, creditExcess }) => (\n
\n {creditExcess && (\n
\n
{creditExcessLabel}
\n
\n )}\n
\n {creditExcess &&
{creditExcess}
}\n
\n
\n);\nexport const BackButton: React.FC = ({ link, label, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.BackToShopping);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {label}\n \n );\n};\n\nexport { AdminRequestStatementButton, RequestStatementModal };\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 { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\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 {\n IBusinessFormItem,\n IBusinessOrganizationListViewProps,\n IFormViewProps,\n InputID\n} from '@msdyn365-commerce-modules/business-organization-list';\nimport { Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBusinessOrganizationListProps,\n IBusinessOrganizationListResources\n} from '../definition-extensions/business-organization-list.ext.props.autogenerated';\n\n/**\n * Business Form Item component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessFormItemComponent: React.FC = (props: IBusinessFormItem) => {\n const { wrapper, label, errorMessage, input } = props;\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\n/**\n * To render modal.\n * @param className - The modal classname.\n * @param isModalOpen - The boolean for modal open status.\n * @param headingSection - The heading section of modal.\n * @param bodySection - The body section of modal.\n * @param footerSection - The footer section of modal.\n * @param toggleModal - The toggle modal callback function.\n * @returns The JSX Element.\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\n/**\n * Business User Form component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessUserFormComponent: React.FC = (props: IFormViewProps) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\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?.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\n/**\n * Selected user interface.\n */\ninterface ISelectedUser {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n FirstName?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n LastName?: string;\n}\n\n/**\n * Business User Details component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessUserDetailsComponent: React.FC = (props: IFormViewProps) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n const { modalClassName, FormWrapper, modalHeading, modalDescription, buttons, errorMessage, resources, toggle } = props;\n let modalBody = null;\n const selectedUser = props.selectedUser as ISelectedUser | string;\n\n if (!selectedUser) {\n modalBody = errorMessage;\n } else {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\n const { FirstName, LastName } = selectedUser as ISelectedUser;\n const userFullName = `${FirstName as string} ${LastName as string}`;\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`] as string) || 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\n/**\n * To get form.\n * @param type - The type of form.\n * @param formProps - The form props.\n * @param toggleModal - The toggle modal callback function.\n * @returns The JSX Element.\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\n/**\n * Business Organization List component.\n * @param props - View props.\n * @returns The JSX Element.\n */\nconst BusinessOrganizationListComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\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 \n \n {props.resources.headingForEmptyUserOrganizationList}\n \n \n {props.resources.textForEmptyUserOrganizationList}\n \n {buttonList}\n \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 BusinessOrganizationListComponent;\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 { 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","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './eve-business-sign-up';\r\n\r\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\r\n // Hide label and error message if rendering address section\r\n return (\r\n \r\n {!isAddressInput && label}\r\n {input}\r\n {!isAddressInput && errorMessage}\r\n \r\n );\r\n};\r\n\r\nconst BusinesSignUpView: React.FC = props => {\r\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\r\n\r\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {items &&\r\n items.map((item: IBusinessSignUpItem) => {\r\n return ;\r\n })}\r\n {errorMessage &&\r\n errorMessage.map((error: React.ReactNode, index: number) => {\r\n return {error};\r\n })}\r\n {buttons &&\r\n buttons.map((button: React.ReactNode, index: number) => {\r\n return {button};\r\n })}\r\n {disclaimer}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default BusinesSignUpView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\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.\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 private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\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 !this.isEditAsyncCustomerFeatureEnabled;\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 {\n ArrayExtensions,\n updateCustomerPersonalization,\n updateCustomerPersonalizationInput\n} 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\n private readonly telemetryContent?: ITelemetryContent;\n private readonly payLoad: IPayLoad;\n private readonly editAsyncCustomerFeatureName: string = 'Dynamics.AX.Application.RetailEnableAsyncCustomerEditFeature';\n\n private isEditAsyncCustomerFeatureEnabled: boolean = false;\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 this.isEditAsyncCustomerFeatureEnabled =\n data.featureState?.result?.find(feature => feature.Name === this.editAsyncCustomerFeatureName)?.IsEnabled || false;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false) &&\n !this.isEditAsyncCustomerFeatureEnabled;\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 this.getDescription(customerInformation),\n Msdyn365.isOboRequest(this.props.context.request) ? undefined : [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 getDescription(customerInformation: Customer | undefined): string {\n let description = '';\n if (customerInformation !== undefined) {\n if (customerInformation.FirstName) {\n description += customerInformation.FirstName;\n }\n if (customerInformation.LastName) {\n description += customerInformation.FirstName ? ` ${customerInformation.LastName}` : customerInformation.LastName;\n }\n }\n return description;\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 && heading.text && (\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 if (!ArrayExtensions.hasElements(links)) {\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n description: description && (\n \n )\n };\n }\n return {\n AccountProfileItem: {\n className\n },\n heading: heading && (\n \n ),\n links: (\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 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 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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\n };\n};\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 { getUrlSync } from '@msdyn365-commerce/core';\nimport { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): 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, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\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(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\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 private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUsersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n AccountStatementRequest,\n BusinessPartnerOperationDeliveryType,\n CustomerBalances\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getTelemetryObject, Heading, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceData } from './account-customer-balance.data';\nimport { HeadingTag, IAccountCustomerBalanceProps } from './account-customer-balance.props.autogenerated';\nimport {\n AccountLabels,\n AccountValues,\n ActionBar,\n AdminRequestStatementButton,\n AvailableCreditComponent,\n BackButton,\n BalanceOwedComponent,\n CreditExcessComponent,\n RequestStatementModal\n} from './components';\n\nexport interface IAccountCustomerBalanceViewProps extends IAccountCustomerBalanceProps {\n heading: string;\n homeButton: React.ReactNode;\n accountSectionHeading: React.ReactNode;\n accountLabels: React.ReactNode;\n accountValues: React.ReactNode;\n creditSummarySectionHeading: React.ReactNode;\n creditSummaryLabels?: React.ReactNode;\n creditSummaryValues?: React.ReactNode;\n actions: React.ReactNode;\n requestStatementModal: React.ReactNode;\n availableCredit?: React.ReactNode;\n balanceOwed?: React.ReactNode;\n creditExcess?: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceState {\n isStatementRequestModalOpen: boolean;\n statementRequestFromDateString: string;\n statementRequestToDateString: string;\n isStatementRequestAdminDropdownOpen: boolean;\n statementRequestFullOrg: boolean;\n statementRequestMaxDateString?: string;\n}\n\n/**\n *\n * AccountCustomerBalance component.\n * @extends {React.PureComponent>}\n */\nclass AccountCustomerBalance extends React.PureComponent<\n IAccountCustomerBalanceProps,\n IAccountCustomerBalanceState\n> {\n private readonly telemetryContent?: ITelemetryContent;\n\n @computed get canSubmitStatementRequest(): boolean {\n return this.state.statementRequestFromDateString !== '' && this.state.statementRequestToDateString !== '';\n }\n\n constructor(props: IAccountCustomerBalanceProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isStatementRequestModalOpen: false,\n statementRequestFromDateString: '',\n statementRequestToDateString: '',\n isStatementRequestAdminDropdownOpen: false,\n statementRequestFullOrg: false,\n statementRequestMaxDateString: new Date().toISOString().split('T')[0]\n };\n }\n\n public render(): JSX.Element | null {\n const customer = get(this.props, 'data.customerInformation.result');\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n if ([customer, account].includes(undefined)) {\n this.props.context.telemetry.error('Customer data is unavailable, module will not render');\n return null;\n }\n\n const { config, resources, context } = this.props;\n const { heading } = config;\n const {\n creditSummarySectionHeading,\n accountSectionHeading,\n backToShoppingText,\n customerSincePrefix,\n availableCreditLabel,\n balanceOwedLabel,\n creditExcessLabel,\n requestStatementButtonLabel,\n modalHeaderLabel,\n sendToEmailLabel,\n fromDateLabel,\n toDateLabel,\n submitRequestLabel,\n cancelLabel,\n myAccountStatementLabel,\n fullOrganizationLabel,\n modalAriaLabel\n } = resources;\n\n const {\n isStatementRequestModalOpen,\n statementRequestFromDateString,\n statementRequestToDateString,\n statementRequestMaxDateString\n } = this.state;\n\n const accountNumber = customer.AccountNumber;\n const createdOn = this._formatJoinDate(new Date(customer.CreatedDateTime));\n const name = `${customer.FirstName} ${customer.LastName}`;\n let customerCredit = 0;\n let customerAccountBalance = 0;\n let excess = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n customerAccountBalance = account.Balance;\n excess = account.Balance - account.CreditLimit;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n customerAccountBalance = account.InvoiceAccountBalance;\n excess = account.InvoiceAccountBalance - account.InvoiceAccountCreditLimit;\n }\n\n const creditExcess = excess > 0 ? this._formatCurrency(excess) : null;\n const availableCredit = this._formatCurrency(customerCredit);\n const balanceOwed = this._formatCurrency(customerAccountBalance);\n const backLink = Msdyn365.getUrlSync('home', context.actionContext) || '';\n const emailAddress = customer.Email;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const isB2BAdmin = isB2BSite && customer.IsB2bAdmin;\n\n const actionBar = isB2BAdmin ? (\n \n ) : (\n isB2BSite && (\n \n )\n );\n\n const viewProps = {\n ...this.props,\n heading: ,\n accountSectionHeading: (\n \n ),\n accountLabels: (\n \n ),\n accountValues: ,\n creditSummarySectionHeading: (\n \n ),\n availableCredit: ,\n balanceOwed: ,\n creditExcess: ,\n homeButton: ,\n actions: actionBar,\n requestStatementModal: isB2BSite && (\n \n )\n };\n\n return this.props.renderView(viewProps);\n }\n\n private _formatCurrency(currency: number): string {\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n\n return `${formatCurrency(currency.toFixed(2), currencyCode)}`;\n }\n\n private _formatJoinDate(date: Date): string {\n const i14nDate = new Intl.DateTimeFormat(this.props.context.actionContext.requestContext.locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n });\n\n return i14nDate.format(date);\n }\n\n private readonly _showRequestStatementModal = (): void => {\n if (!this.state.isStatementRequestModalOpen) {\n this.setState({\n isStatementRequestModalOpen: true\n });\n }\n };\n\n private readonly _toggleModal = (): void => {\n this.setState({\n isStatementRequestModalOpen: false\n });\n };\n\n private readonly _toggleDropdown = (): 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 _adminShowRequestStatementModal = (isFullOrg: boolean) => {\n this.setState({\n statementRequestFullOrg: isFullOrg,\n isStatementRequestAdminDropdownOpen: false\n });\n\n this._showRequestStatementModal();\n };\n\n private readonly _requestStatement = () => {\n const customer = this.props.data.customerInformation.result!;\n const B2BUserId = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\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\n };\n\n const context = { callerContext: this.props.context.actionContext };\n\n BusinessPartnerUsersDataActions.requestAccountStatementAsync(context, B2BUserId, statementRequest);\n\n this.setState({\n isStatementRequestModalOpen: false\n });\n };\n}\n\nexport default AccountCustomerBalance;\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 { 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 ? config.heading.text : ''} ${\n accountInfo && accountInfo.FirstName ? accountInfo.FirstName : ''\n }`\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\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 { isChannelTypeB2B } 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\n if (!this.props.context.request.params.isEditor && !isChannelTypeB2B(this.props.context.request)) {\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 { IB2bRequestsTileViewProps } from './b2b-requests-tile';\n\nconst B2bRequestsTileView: React.FC = props => {\n const { b2bRequestsTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default B2bRequestsTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\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 * 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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpButtonProps {\r\n id?: string;\r\n className: string;\r\n text: string;\r\n ariaLabel: string;\r\n disabled?: boolean;\r\n link?: string;\r\n telemetryContent: ITelemetryContent;\r\n onClick?(event: React.MouseEvent): void;\r\n}\r\n\r\nexport const SignUpButton: React.FC = ({\r\n id,\r\n className,\r\n text,\r\n ariaLabel,\r\n telemetryContent,\r\n disabled,\r\n link,\r\n onClick\r\n}) => {\r\n const payLoad = getPayloadObject('click', telemetryContent, text);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n\r\nexport default SignUpButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nexport interface IBusinessSignUpErrorProps {\r\n id?: string;\r\n className: string;\r\n type?: string;\r\n message?: string;\r\n}\r\n\r\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\r\n const errorClassName = `${className}__${type}-error`;\r\n\r\n return (\r\n
;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\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 { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n IMediaGalleryThumbnailItemViewProps,\n IMediaGalleryThumbnailsViewProps,\n IMediaGalleryViewProps\n} from '@msdyn365-commerce-modules/media-gallery';\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Render the thumbnail item images.\n * @param thumbnail - The carousel thumbnail line props.\n * @returns Return HTML having thumnailcontainer props with image.\n */\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\n/**\n * Gets the thumbnail item to display media gallery images.\n * @param image - The media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param imageId - Image id.\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render images.\n */\nconst GetThumbnailItemComponent = (\n image: IImageData,\n imageSettings: IImageSettings,\n imageId: number,\n modifiedActiveIndex: number,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(\n props.data.product.result.ItemId,\n props.context.request.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n\n /**\n * OnClick method of media gallery item.\n */\n const onClick = () => {\n props.callbackToggle?.();\n props.callbackThumbnailClick?.(imageId);\n props.state.activeIndex = imageId;\n };\n\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n /**\n * Keydown event of media gallery item.\n * @param event - React.KeyboardEvent.\n */\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCodes.Enter) {\n event.preventDefault();\n onClick();\n }\n };\n const defaultIndex = 0;\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'presentation',\n key: imageId\n },\n Picture: (\n \n \n \n \n \n \n \n \n )\n };\n};\n\n/**\n * Gets the empty thumbnail item to display media gallery images.\n * @param imageSettings - Image settings for the image gallery items.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render empty images.\n */\nconst GetEmptyThumbnailItemComponent = (\n imageSettings: IImageSettings,\n props: IMediaGalleryViewProps\n): IMediaGalleryThumbnailItemViewProps => {\n let fallbackImage: string | undefined = '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = props.context.app.config?.placeholderImageName as string;\n if (props.data.product.result) {\n fallbackImage = getFallbackImageUrl(\n props.data.product.result.ItemId,\n props.context.request.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n }\n if (emptyPlaceHolderImage && fallbackImage) {\n fallbackImage = `${fallbackImage},${emptyPlaceHolderImage}`;\n }\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: 'ms-media-gallery__thumbnail-item',\n role: 'tab',\n tabIndex: 0,\n key: 0,\n 'aria-label': '',\n 'aria-selected': true\n },\n Picture: (\n \n )\n };\n};\n\n/**\n * Update media gallery items method.\n * @param items - The media gallery thumbnail item view props.\n * @returns The IImageData array.\n */\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\n return items?.map(item => {\n return {\n altText: item.Picture.props.altText,\n src: item.Picture.props.src\n };\n });\n};\n\nconst defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Render the Media gallery thumbnails to represent images in grid view.\n * @param thumbnails - The thumbnail view props.\n * @param props - The media gallery view props.\n * @returns - The single slide carousel component to render as media gallery image.\n */\nconst renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps, props: IMediaGalleryViewProps): JSX.Element => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\n const { state, Thumbnails } = props;\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\n\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty'\n ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)]\n : // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\n mediaGalleryItems?.map((item: IImageData, id: number) =>\n GetThumbnailItemComponent(item, defaultThumbnailImageSettings, id, state.activeIndex, props)\n );\n\n return (\n \n {items?.map(renderThumbnailItem)}\n \n );\n};\n\n/**\n * Render the Media gallery items using viewprops.\n * @param props - The media gallery view props.\n * @returns The media gallery module wrapping up images node.\n */\nconst mediaGalleryView: React.FC = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n return (\n \n \n {Modal}\n {renderThumbnails(Thumbnails, props)}\n \n );\n};\n\nexport default mediaGalleryView;\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 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":""}