{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///src/modules/business-sign-up/components/sign-up-button.tsx?37a3","webpack:///src/modules/business-sign-up/components/sign-up-error.tsx?fbb9","webpack:///src/modules/business-sign-up/components/sign-up-input.tsx?4011","webpack:///src/modules/business-sign-up/components/sign-up-label.tsx?2025","webpack:///src/modules/business-sign-up/components/sign-up-radio-button.tsx?43d4","webpack:///src/modules/business-sign-up/business-sign-up.tsx?df21","webpack:///src/modules/password-reset-verification/components/password-reset-verification-loading-message.tsx?97ae","webpack:///src/modules/country-picker/country-picker.tsx?051f","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///src/index.ts?c6ae","webpack:///./src/modules/pdp-specs/pdp-specs.view.tsx?5f4e","webpack:///./src/utilities/CheckoutContext.ts?ba40","webpack:///src/modules/password-reset-verification/components/password-reset-verification-button.tsx?d3bb","webpack:///src/modules/adventureworks/views/components/promocode.component.tsx?6e07","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///./src/modules/pdp-specs/components/pdp-specs-table-stucture.tsx?a54a","webpack:///./src/modules/pdp-specs/pdp-specs.props.autogenerated.ts?139c","webpack:///./src/modules/pdp-specs/pdp-specs.tsx?7d06","webpack:///src/modules/subscribe/subscribe.view.tsx?c40a","webpack:///./src/modules/eve-site-picker/eve-site-picker.tsx?bd5c","webpack:///src/modules/password-reset-verification/components/password-reset-verification-error.tsx?5cfd","webpack:///src/modules/password-reset-verification/components/password-reset-verification-success.tsx?8c35","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/business-partner-promotion/business-partner-promotion.view.tsx?2b9d","webpack:///src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?9734","webpack:///src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?8952","webpack:///src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?083d","webpack:///src/modules/adventureworks/views/navigation-menu.view.tsx?c096","webpack:///src/modules/fabrikam/views/search-result-container.view.tsx?f8ea","webpack:///./src/modules/eve-site-picker/eve-site-picker.view.tsx?a487","webpack:///src/modules/account-generic-tile/account-generic-tile.tsx?4504","webpack:///src/modules/business-sign-up/business-sign-up.view.tsx?578b","webpack:///src/modules/business-partners/business-partners.view.tsx?677a","webpack:///src/modules/password-reset-verification/components/password-reset-verification-label.tsx?70a3","webpack:///src/modules/subscribe/subscribe.tsx?0278","webpack:///src/modules/account-generic-tile/account-generic-tile.view.tsx?bca1","webpack:///src/modules/password-reset-verification/components/password-reset-verification-loading-icon.tsx?7944","webpack:///src/modules/navigation-menu/navigation-menu.data.ts?a9f0","webpack:///src/modules/navigation-menu/navigation-menu.tsx?390c","webpack:///src/modules/password-reset-verification/password-reset-verification.tsx?9795","webpack:///./src/themes/nile-theme/views/cart.view.tsx?d9be","webpack:///src/modules/country-picker/country-picker.view.tsx?825b","webpack:///./src/themes/nile-theme/views/checkout-section-container.view.tsx?3b69","webpack:///src/modules/account-generic-tile/components/account-generic-tile-links.tsx?e4df","webpack:///src/modules/business-partners/components/search-bar.tsx?cefc","webpack:///src/modules/business-partners/components/data-grid.tsx?933a","webpack:///src/modules/business-partners/components/business-partner-users-table.tsx?5b50","webpack:///src/modules/business-partners/components/business-partners-table.tsx?108c","webpack:///src/modules/business-partners/business-partners.tsx?9aa8","webpack:///src/modules/password-reset-verification/components/password-reset-verification-input.tsx?6596","webpack:///src/modules/navigation-menu/navigation-menu.view.tsx?df40","webpack:///./src/utilities/CheckoutCookieManager.ts?0794","webpack:///src/modules/password-reset-verification/password-reset-verification.view.tsx?9e1f","webpack:///src/modules/business-partner-promotion/components/terms-paragraph.tsx?6a55","webpack:///src/modules/business-partner-promotion/business-partner-promotion.tsx?821e"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","SignUpButton","id","text","ariaLabel","telemetryContent","disabled","link","onClick","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","Object","assign","role","href","SignUpError","type","message","errorClassName","classnames","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","value","pattern","isRequired","onChange","fieldReference","InputType","TextArea","name","undefined","ref","SignUpLabel","forId","htmlFor","BusinessSignUpRadioButtonOption","props","label","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","map","element","index","maxChars","customClass","radioButtonOptions","radioButtonGroupClass","baseSignUpItem","wrapper","errorMessage","Address","isAddressInput","input","updateForm","hasError","resetAddress","splice","RadioButton","key","BusinessSignUp","constructor","_this","super","this","moduleClassName","prospectRadioButtonName","BusinessSignUpDefaultInputs","ProspectType","resources","prospectTypeLabel","prospectTypeBuyerLabel","_onInputChange","bind","prospectTypeSellerLabel","FirstName","Text","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","defaultRegex","source","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","needsToReset","handleHeadingChange","event","config","heading","target","_onAddressChange","errors","currentAddress","newForm","state","formItems","addressItem","find","item","address","setState","addressHasErrors","showAddressErrors","isReady","_isFormReady","currentInput","match","_onSubmit","preventDefault","context","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","prospectType","newPartner","CompanySize","Comments","ProspectTypeValue","createProspectAsync","callerContext","actionContext","then","successPageURL","confirmationLink","linkUrl","destinationUrl","getUrlSync","window","location","catch","hasSubmitErrors","_onCancel","cleanForm","forEach","isAddress","arguments","length","_addedReference","getTelemetryObject","request","telemetryPageName","friendlyName","telemetry","componentDidMount","_this$formChildRefere","current","focus","shouldComponentUpdate","nextProps","nextState","data","render","viewProps","_objectSpread","businessSignUp","moduleProps","ContainerWrapper","editProps","onEdit","requestContext","businessSignUpForm","_renderForm","renderView","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","form","FormWrapper","items","buttons","disclaimer","RichTextComponent","newFormFields","PasswordResetVerificationLoadingMessage","CountryPicker","_telemetryContent","_preferredSiteStorageKey","_cookieExpirationTime","closeModal","isModalOpen","_handleStayOnSiteButtonClick","_this$props$context$r","currentBaseUrl","marketSettings","urlToStore","_appendProtocolToUrl","_writeToCookie","_handleClick","storageKey","storageValue","cookieOptions","secure","sameSite","maxAge","cookies","set","baseUrl","includes","isCookieValueSet","get","_heading$tag","subheading","countryList","actionLink","isConsentGiven","countryPickerHeading","MsDyn365","tag","handleTextChange","countryPickerSubHeading","handleParagraphChange","countryPickerActionLink","createLink","currentSiteButton","tabIndex","stayOnCurrentSiteButtonText","viewprops","modalContainer","Modal","isOpen","toggle","modalTransition","timeout","shouldUpdateFocusToFirstElement","modalHeaderContainer","ModalHeader","closeButtonTabIndex","modalFooterContainer","ModalFooter","modalBodyContainer","ModalBody","renderCountryList","stayOnCurrentSiteButton","handleLinkTextChange","_this$props$config$ac","linkText","StringExtensions","isNullOrEmpty","_link$linkText","editableLink","openInNewTab","additionalProperties","onTelemetryClick","onTextChange","localeItems","renderCountry","localeItem","_image$imageSettings","_image$src","localeBaseUrl","matchedCountryItem","url","imageSize","q","w","h","defaultImageSettings","viewports","xs","lg","xl","lazyload","image","imageProps","gridSettings","imageSettings","displayString","src","altText","loadFailureBehavior","shouldSkipToMainImage","displaySubString","ProductSpecification","_toggle","drawerListId","isDrawerOpen","isAdditionalMediaDrawerOpen","catalogId","Msdyn365","validateCatalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","apiSettings","channelId","getAttributesForSelectedVariant","error","debug","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","title","productSpecificationResult","_createDrawerBody","_createTableBody","content","_this$props$data$addi","tableRows","_renderProductCell","Name","app","OmniChannelMedia","additionalMediaLocations","push","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Module","Drawer","collapseProps","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","additionalDownloadsText","prevState","mediaLocation","Uri","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","__decorate","observer","ProductSpecificationView","addEventListener","ecoMatAttr","getNamedItem","ecoMat","nodeValue","openModal","modal","rowdata","ArrayExtensions","hasElements","filter","row","ObjectExtensions","isNullOrUndefined","Node","CheckoutContext","createContext","placeOrderButton","cartHasBalance","mailChimp","termsAndConditions","Consumer","CheckoutConsumer","Provider","CheckoutProvider","PasswordResetVerificationButton","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","promoPlaceholderText","promoCodeApplyButtonText","onSubmit","placeholder","_removePromotion","_event$currentTarget$","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","Code","TelemetryConstant","ApplyPromoCode","promoCodeHeadingText","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","_getCategoryImage","categoryImageUrl","generateImageUrl","sm","md","_categoryImage$imageS","ImageData","Image","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","isBrowser","document","body","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","colProps","toggleButtonProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","onFocus","hoverEffect","isParent","Link","imagesource","contentAction","etext","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","HeadingTag","MODEL_SIZE_ATTRIBUTE_NAME","DESCRIPTION_ATTRIBUTE_NAME","toggleModal","ecoMaterials","header","linkId","paragraph","modalHeader","modalBody","renderModal","headerContainer","openDrawerList","drawerList","slice","indexOf","v","attFresh","descFresh","accordion","_content$productSpeci","detailsAccordionText","simpleProduct","productContent","sort","a","b","tempOpenDrawerList","rows","_this$props$data$prod","isSpecifiedType","itemId","ItemId","_product$RecordId","articleLabel","MaterialSlot","materialBlocks","unshift","MasterProductId","Description","_simpleProduct$Master","_this$props$config$su","descCellData","_renderDescriptionCell","descriptionAccordion","sustainAccordionText","pdpspecsDescriptionLabel","updatedDescription","replace","subscribeView","_subscribeForm$classN","_emailInput$className","_submitButton$classNa","subscribe","subscribeContainer","subscribeForm","emailInput","submitButton","submitButtonLabelText","SitePicker","PureComponent","_cookieName","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","createRef","_renderSiteOptions","_updateViewport","viewport","device","Type","isMobile","_document","_document2","resizeThrottledEventHandler","addThrottledEvent","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","e","cookieConfig","cookieLifetime","goToString","_stripTrailingSlashes","stripLocale","requestUrl","pathname","search","path","siteOptions","_item$siteRedirectUrl","siteImage","createElement","siteRedirectUrl","siteName","_getViewport","innerWidth","observable","computed","PasswordResetVerificationError","PasswordResetVerificationSuccess","successClassName","businessPartnersView","businessPartnerPromotionProps","notificationMessage","sellerDescriptions","termsOfServiceCheckbox","termsOfServiceModal","NavMenuConstants","getCategoryImage","alttext","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","categoryImageSource","isOnlyMobile","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","_closeNavMenu","_this$menuNode$curren","children","_this$menuNode$curren2","_customUpdateViewport","menuItemRef","variant","VariantType","Browser","customResizeThrottledEventHandler","componentDidUpdate","_this$menuItemRef$cur","hamburgerAriaLabel","_renderCollapseMenu","Collapse","MobileBackButton","MobileDescriptionContainer","MobileDescriptionLabel","isNullOrWhitespace","entries","parentMenuId","menu","one","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","MenuTypeIndexId","Retail","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","allCategoryMenuText","menuSource","MenuSource","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","navigationMenuView","enabletopMenu","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","modalFooter","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","SearchResultContainerView","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","query","recommendation","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView","AccountGenericTile","linkIndex","links","LinksComponent","BusinessSignUpItem","BusinesSignUpView","button","selectedBusinessPartnerUser","businessPartnersProps","businessPartnersHeading","catalogLoadingIndicator","catalogLoadingErrorMessage","cookieConsentNotGivenErrorMessage","backToBusinessPartnersLink","businessPartnerUsersHeading","businessPartnersTable","businessPartnerUsersTable","PasswordResetVerificationLabel","Subscribe","_emailAddressInputRef","subscribeParagraph","subscribeHeading","subscribeFormAriaLabel","autoComplete","subscribeFormEmailAriaLabel","subscribeEmailPlaceholderText","subscribeFormSubmitAriaLabel","subscribeButtonLabel","AccountGenericTileView","PasswordResetVerificationLoadingIcon","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","navigationMenuSource","locale","nameTranslations","nameTranslation","Language","toLowerCase","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","displayCategoryImage","displayPromotionalImage","ImageContainer","backButtonAriaLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","imageSourceUrl","nestedChildren","Children","getCategoryUrl","PasswordResetVerification","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","getValue","v1Value","v2Value","templateVersion","emailRegex","viewState","isShowLoading","passwordResetVerification","loading","icon","PasswordResetVerificationLoadingIconComponent","PasswordResetVerificationLoadingMessageComponent","loadingMessage","defaultAADConainer","style","display","aadConainer","passwordResetVerificationLocalAccount","_renderLocalAccount","obj","ID","PAT","verifying_blurb","localAccount","verificationControlWrapper","_renderInput","emailAddressLabelText","verificationCodeLabelText","successMessage","PasswordResetVerificationSuccessComponent","verificationCodeSendSuccess","emailAddressVerifiedSuccess","PasswordResetVerificationErrorComponent","retryError","retryNotAllowedError","throttledError","codeExpiredError","serverError","invalidEmailError","verificationButtonsWrapper","verificationButtons","PasswordResetVerificationButtonComponent","sendCodeButtonAriaLabel","sendCodeButtonText","verifyCodeButtonAriaLabel","verifyCodeButtonText","resendCodeButtonAriaLabel","resendCodeButtonText","changeEmailButtonAriaLabel","changeEmailButtonText","buttonsWrapper","continueButtonAriaLabel","continueButtonText","cancelButtonAriaLabel","verificationSuccessModal","verificationSuccessModalMessage","labelText","cssClassName","PasswordResetVerificationLabelComponent","PasswordResetVerificationInputComponent","_renderPromotions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","_renderCartlines","cartLines","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","mulitplePickUp","emailDeliveryModeCode","emptyCartText","header_content","productHeading","quantityHeading","priceHeading","cart_line","cartLine","_cartLine$data","_cartLine$data2","_cartLine$data3","cartline","_renderBOPISBlock","_renderGroupBOPISBlock","addToOrderTemplate","addToWishlist","remove","onToggleBopisHandler","isBopisSelected","pickUpInStore","callbacks","toggleBopis","onChangeStoreHandler","_cartLine$data4","DeliveryMode","shipInsteadDisplayText","shipToAddressDisplayText","pickItUpDisplayText","pickUpAtStoreWithLocationText","changeStoreDisplayText","PickupInStore","puckUpinStoreAttribute","ContainerProps","orgUnitName","_renderErrorBlock","errorData","Wrapper","_renderOrderSummarylines","orderSummaryLines","OrderSummaryItems","_props$data$cart$resu","subtotal","price","NetPrice","shipping","otherCharge","tax","totalDiscounts","orderTotal","_renderInvoiceSummarylines","invoiceSummaryLines","invoices","giftCard","loyalty","_renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action2","_props$context$action3","_renderCartLinesGroupHeader","_countItems","channel","EmailDeliveryModeCode","multiplePickUpEnabled","count","_cartLine$pickUpInSto","pickUpText","shippingText","emailshippingText","groupTitle","_renderCartLinesGroupTitle","_cartLine$data5","_cartLine$data6","_cartLine$data7","countItem","reduce","_item$data","Quantity","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","itemLabel","itemsLabel","suffix","deliveryOption","CartView","_props$cart","checkoutChanged","setCheckoutChanged","useState","useEffect","doc","getElementsByClassName","user","isAuthenticated","innerHTML","loggedOutCheckoutButtonText","renderModuleAttributes","promotionOptions","CartlinesWrapper","orderSummaryHeading","OrderSummaryWrapper","hasInvoiceLine","invoiceSummaryLineitems","orderSummaryLineitems","OrderSummaryErrors","checkoutAsSignInUserButton","checkoutAsGuestButton","createTemplateFromCartButton","countryPickerView","country","ItemComponent","itemProps","CheckoutSectionContainerView","checkoutPlainContainerProps","checkout","loyaltyTimeout","checkoutContext","itemsToRender","acc","getAccordionAndNonAccordionSplit","invokeKlarnaButtonClick","loyaltyAmount","giftCardExtends","checkoutCart","Id","cartId","setLoyaltyCookie","setGiftCardCookie","frame","querySelector","_frame$contentWindow","contentWindow","redirect","getPlaceOrderButton","_get","isKlarnaConnector","placeOrder","nonAccordionItems","accordionItems","Accordion","allowZeroExpanded","AccordionItem","AccordionItemHeading","AccordionItemButton","getAccordionHeading","AccordionItemPanel","shouldRenderPaymentSection","_mapEditableLinks","linkdata","editableLinks","AccountGenericTileLinks","SearchBar","Component","onSearchTextChange","ev","searchText","onSearch","handleKeyUp","Enter","searchPlaceholderLabel","onKeyUp","DataGrid","renderGridHeader","rowClassName","columns","column","reactKey","renderGridRow","cell","Fragment","onRender","fieldName","_column$onClick","call","loadDataInternal","async","loadData","isLoading","_e$data","LocalizedMessage","genericErrorMessage","paging","loadMore","sortData","sorting","ascending","item1","item2","value1","value2","compareResult","filterData","c","isSearchable","columnValue","getDataToDisplay","itemsCount","pageSize","hasMore","defaultSorting","Alert","color","loadingLabel","businessPartnerLoadMore","noDataMessage","BusinessPartnerUsersTable","getColumns","isMobileDevice","Viewport","businessUserTableNameHeadingText","onSelect","businessUserTableEmailHeadingText","businessUserTableSpendingLimitHeadingText","getBusinessPartnerUsers","BusinessPartnersDataActions","getUsersAsync","bypassCache","queryResultSettings","businessPartner","BusinessPartnerId","StatusValue","spendingLimit","SpendingLimit","cultureFormatter","formatCurrency","businessUserTableSpendingLimitZeroHoverText","businessPartnerSearchCustomer","BusinessPartnersTable","businessPartnerName","getBusinessPartners","getManagedBusinessPartnersAsync","businessPartnerSearchCompany","BusinessPartners","onSelectBusinessPartner","selectedBusinessPartner","onSelectBusinessPartnerUser","businessPartnerUser","AccountNumber","setAccountSelectionCookie","getCustomerDefaultCatalogId","homeUrl","fullUrl","URL","searchParams","removeAccountSelectionCookie","isLoadingCatalog","_productCatalogs$","productCatalogs","CatalogsDataActions","getCatalogsAsync","loadCatalogErrorMessage","classname","cookieConsentRequiredMessage","PasswordResetVerificationInput","cookieExpirationTimeInMinutes","cookieExpiryTime","Date","setMinutes","getMinutes","loyaltyAmt","savedDate","giftCards","getAppliedLoyaltyPoints","amtToReturn","loyaltyCookie","loyaltyAmountSaved","getAppliedGiftCards","giftCardsToReturn","giftCookie","savedGiftCards","PasswordResetVerificationItem","PasswordResetVerificationLoading","_ref3","PasswordResetVerificationView","_ref2","LocalAccount","BusinessPartnerPromotionTermsParagraph","description","titleClassName","BusinessPartnerPromotion","onCheckBoxChange","termsOfServiceChecked","checked","onToggleTermOfServiceModal","termsOfServiceModalOpened","_data$b2bUserInformat","_data$b2bUserInformat2","errorMessageText","promoteToSellerSubmitSuccessMessage","businessPartnerId","b2bUserInformation","promoteToSellerAsync","showSubmitButton","showTermsOfService","_unused","termsOfService","authorizationErrorMessage","canSubmit","isAdminUser","btnEnabled","renderNotificationBar","renderSellerDescriptions","termsOfServiceLinkText","termsOfServiceAgreementText","horizontalPosition","verticalPosition","autoFocus","fade","termsOfServiceModalHeading","submitRequestLabel","notificationBar","results","idx1","_description$bulletPo","bulletPoints","bulletPoint","idx2","IsAdmin"],"mappings":"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","file":"static/js/12.5220fe003db9afa21870.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 { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpButtonProps {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n link?: string;\n telemetryContent: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const SignUpButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n link,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent, text);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n

{message}

\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InputType } from '../business-sign-up';\n\nexport interface IBusinessSignUpInputProps {\n id?: string;\n type: InputType;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IBusinessSignUpInput {\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\nexport const SignUpInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n onChange,\n fieldReference\n}) => {\n if (type === InputType.TextArea) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default SignUpInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessSignUpLabelProps {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessSignUpRadioButtonProps {\n id: string;\n isRequired: boolean;\n options: IBusinessSignUpRadioButtonOptionProps[];\n}\n\nexport interface IBusinessSignUpRadioButtonOptionProps {\n id: string;\n name: string;\n value: string;\n label: string;\n className: string;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const BusinessSignUpRadioButtonOption: React.FC = props => {\n const { id, name, value, label, className, onChange } = props;\n return (\n
\n \n \n
\n );\n};\n\nexport default BusinessSignUpRadioButtonOption;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\nimport { Address, BusinessPartnerProspect } from '@msdyn365-commerce/retail-proxy';\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { EmailRegex } 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 { IBusinessSignUpConfig, IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\nimport { IBusinessSignUpRadioButtonOptionProps, BusinessSignUpRadioButtonOption } from './components/sign-up-radio-button';\n\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\n formItems?: IFormItem[];\n}\n\nexport interface IBusinessSignUpItem {\n wrapper: INodeProps;\n isAddressInput?: boolean;\n id: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input?: React.ReactNode;\n}\n\nexport interface IBusinessState {\n isReady: boolean;\n formItems: IFormItem[];\n addressHasErrors: boolean;\n showAddressErrors: boolean;\n hasSubmitErrors: boolean;\n}\n\nexport interface IBusinessSignUpLocalAccount {\n FormWrapper: INodeProps;\n items: IBusinessSignUpItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface IBusinessSignUpViewProps {\n className: string;\n businessSignUp: IModuleProps;\n ContainerWrapper: INodeProps;\n heading: React.ReactNode;\n businessSignUpForm: IBusinessSignUpLocalAccount;\n formItems: IFormItem[];\n}\n\nexport interface IFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n address?: Address;\n customClass?: string;\n fieldReference?: React.RefObject;\n radioButtonOptions?: IBusinessSignUpRadioButtonOptionProps[];\n radioButtonGroupClass?: string;\n}\n\nexport enum InputType {\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\n Text = 'text',\n Address = 'address',\n Email = 'email',\n TextArea = 'textarea',\n RadioButton = 'radiobutton'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n Email = 'CompanyEmail',\n CompanyName = 'CompanyName',\n Address = 'CompanyAddress',\n JobTitle = 'JobTitle',\n Size = 'CompanySize',\n Department = 'Department',\n Comment = 'Comment',\n ProspectType = 'ProspectType'\n}\n\nexport const renderInputSection = (\n inputs: IFormItem[],\n className: string,\n needToReset: boolean,\n onInputChange: (event: React.ChangeEvent) => void,\n showErrors: boolean,\n addressForm?: React.ReactNode,\n updateAddress?: (errors: boolean, currAddress?: Address) => void\n): IBusinessSignUpItem[] => {\n return inputs.map((element, index) => {\n const {\n id,\n type,\n label,\n maxChars,\n isRequired,\n pattern,\n customClass,\n value,\n fieldReference,\n radioButtonOptions,\n radioButtonGroupClass\n } = element;\n\n const baseSignUpItem: IBusinessSignUpItem = {\n wrapper: {\n className: classnames(className, `${className}-${id}`, customClass)\n },\n id,\n label: ,\n errorMessage: \n };\n\n if (type === InputType.Address) {\n if (addressForm) {\n baseSignUpItem.isAddressInput = true;\n baseSignUpItem.input = (\n <>\n {React.cloneElement(addressForm as React.ReactElement, {\n updateForm: updateAddress,\n hasError: showErrors,\n isRequired: isRequired === undefined ? false : isRequired,\n resetAddress: needToReset\n })}\n \n );\n } else {\n // If the address slot is not filled, remove this input from the form\n inputs.splice(index, 1);\n }\n } else if (type === InputType.RadioButton) {\n baseSignUpItem.input = (\n
\n {radioButtonOptions &&\n radioButtonOptions.map((element, index) => {\n return ;\n })}\n
\n );\n } else {\n baseSignUpItem.input = (\n \n );\n }\n\n return baseSignUpItem;\n });\n};\n\n/**\n *\n * Business Request Form Modules\n * Form that a business can use to submit a request to become a partner with Microsoft.\n * @extends {React.Component>}\n */\nclass BusinessSignUp extends React.Component {\n private readonly moduleClassName: string = 'ms-business-sign-up';\n private readonly prospectRadioButtonName: string = 'business-sign-up-radio-button';\n\n // Used as default data\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.ProspectType,\n type: InputType.RadioButton,\n label: this.props.resources.prospectTypeLabel,\n value: '',\n isRequired: true,\n customClass: 'width-100',\n radioButtonGroupClass: 'radio-option-container',\n radioButtonOptions: [\n {\n id: `${InputID.ProspectType}-buyer`,\n name: this.prospectRadioButtonName,\n value: '1', // Buyer\n label: this.props.resources.prospectTypeBuyerLabel,\n className: `${this.moduleClassName}__form-item-radio-button-option`,\n onChange: this._onInputChange.bind(this)\n },\n {\n id: `${InputID.ProspectType}-seller`,\n name: this.prospectRadioButtonName,\n value: '2', // Seller\n className: `${this.moduleClassName}__form-item-radio-button-option`,\n label: this.props.resources.prospectTypeSellerLabel,\n onChange: this._onInputChange.bind(this)\n }\n ]\n },\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.firstNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.lastNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.emailAddressLabel,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-50'\n },\n {\n id: InputID.CompanyName,\n type: InputType.Text,\n label: this.props.resources.companyLabel,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Department,\n type: InputType.Text,\n label: this.props.resources.departmentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.JobTitle,\n type: InputType.Text,\n label: this.props.resources.jobTitleLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Size,\n type: InputType.Text,\n label: this.props.resources.companySizeLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Address,\n type: InputType.Address,\n label: this.props.resources.companyAddressLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n },\n {\n id: InputID.Comment,\n type: InputType.TextArea,\n label: this.props.resources.commentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n }\n ];\n\n private readonly formChildReference: React.RefObject = React.createRef();\n\n private needsToReset: boolean = false;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IBusinessSignUpExtendedProps) {\n super(props);\n\n this.state = {\n isReady: false,\n formItems: this.props.formItems || this._addedReference(),\n addressHasErrors: false,\n showAddressErrors: false,\n hasSubmitErrors: false\n };\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.formChildReference.current?.focus();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessSignUpExtendedProps, nextState: IBusinessState): 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 } = this.props;\n const { formItems } = this.state;\n const { className, heading } = config;\n\n const viewProps = {\n ...this.props,\n businessSignUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n ContainerWrapper: {\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n businessSignUpForm: this._renderForm(),\n formItems\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle the heading change event.\n * @param event - Content Editable Event.\n */\n public handleHeadingChange = (event: ContentEditableEvent): void => {\n this.props.config.heading.text = event.target.value;\n };\n\n private _renderForm(): IBusinessSignUpLocalAccount {\n const { config, resources, slots } = this.props;\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\n const {\n signUpButtonArialabel,\n signUpButtonText,\n cancelButtonArialabel,\n cancelButtonText,\n errorMessage,\n partialAddressErrorMessage\n } = resources;\n const addressForm = (slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0]) || undefined;\n\n const form = {\n FormWrapper: {\n className: `${this.moduleClassName}__form `\n },\n items: renderInputSection(\n formItems,\n `${this.moduleClassName}__form-item`,\n this.needsToReset,\n this._onInputChange.bind(this),\n showAddressErrors,\n addressForm,\n this._onAddressChange\n ),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasSubmitErrors && ,\n showAddressErrors && (\n \n )\n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n\n if (this.needsToReset) {\n this.needsToReset = false;\n }\n\n return form;\n }\n\n private _onInputChange(event: React.ChangeEvent): void {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.type === InputType.RadioButton && event.target.name === this.prospectRadioButtonName) {\n item.value = event.target.value;\n } else if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n hasSubmitErrors: false\n });\n }\n\n private _addedReference(): IFormItem[] {\n const newFormFields = this.BusinessSignUpDefaultInputs;\n newFormFields[0].fieldReference = this.formChildReference;\n return newFormFields;\n }\n\n private readonly _onAddressChange = (errors: boolean, currentAddress?: Address): void => {\n // Find address item\n const newForm = this.state.formItems;\n const addressItem = newForm.find(item => {\n return item.type === InputType.Address;\n });\n\n // If found --> set to currentAddress\n if (addressItem) {\n addressItem.address = currentAddress;\n\n // Update state with new values and set errors to false if address is not required field\n this.setState(\n {\n formItems: newForm,\n addressHasErrors: errors,\n showAddressErrors: false\n },\n () => {\n this.setState({ isReady: this._isFormReady() });\n }\n );\n }\n };\n\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const currentInput of formItems) {\n // Will return FALSE if:\n // - input field is required\n // IF is address AND addressHasErrors === true\n // ELSE value is undefined OR empty\n // OR\n // - pattern provided and value does not match pattern\n\n if (currentInput.isRequired) {\n if (currentInput.type === InputType.Address) {\n if (this.state.addressHasErrors) {\n return false;\n }\n } else if (currentInput.value === undefined || currentInput.value === '') {\n return false;\n }\n }\n if (currentInput.pattern !== undefined && currentInput.value.match(currentInput.pattern) === null) {\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _onSubmit = (event: React.MouseEvent) => {\n if (this.state.addressHasErrors) {\n this.setState({\n showAddressErrors: true\n });\n\n event.preventDefault();\n return;\n }\n\n const { config, context } = this.props;\n\n // Check for matching id and if not empty\n const firstName = this._getItem(InputID.FirstName);\n const lastName = this._getItem(InputID.LastName);\n const companyName = this._getItem(InputID.CompanyName);\n const companyEmail = this._getItem(InputID.Email);\n const companyAddress = this._getItem(InputID.Address, true);\n const jobTitle = this._getItem(InputID.JobTitle);\n const department = this._getItem(InputID.Department);\n const companySize = this._getItem(InputID.Size);\n const comments = this._getItem(InputID.Comment);\n const prospectType = this._getItem(InputID.ProspectType);\n\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\n companyAddress.address.Email = companyEmail.value;\n }\n\n const newPartner: BusinessPartnerProspect = {\n FirstName: firstName && firstName.value,\n LastName: lastName && lastName.value,\n CompanyName: companyName && companyName.value,\n Address: companyAddress && companyAddress.address && companyAddress.address,\n JobTitle: jobTitle && jobTitle.value,\n Department: department && department.value,\n CompanySize: (companySize && Number.parseInt(companySize.value, 10)) || 0,\n Comments: comments && comments.value,\n ProspectTypeValue: (prospectType && Number.parseInt(prospectType.value, 10)) || 0\n };\n\n this.setState({\n isReady: false\n });\n\n // Create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner)\n .then(() => {\n const successPageURL =\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\n getUrlSync('home', this.props.context.actionContext) ||\n '';\n window.location.href = successPageURL;\n })\n .catch(() => {\n this.setState({\n hasSubmitErrors: true\n });\n });\n };\n\n private readonly _onCancel = () => {\n // Reset values of the form\n const cleanForm = this.state.formItems;\n cleanForm.forEach(input => {\n input.value = '';\n });\n\n // Set reset flag so address input will get reset on next renderInputSection() call\n this.needsToReset = true;\n\n this.setState({\n isReady: false,\n formItems: cleanForm,\n addressHasErrors: true,\n showAddressErrors: false,\n hasSubmitErrors: false\n });\n };\n\n private readonly _getItem = (id: string, isAddress: boolean = false) => {\n if (isAddress) {\n return this.state.formItems.find(item => {\n return item.id === id && item.address;\n });\n }\n return this.state.formItems.find(item => {\n return item.id === id && item.value !== '';\n });\n };\n}\n\nexport default BusinessSignUp;\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 IPasswordResetVerificationLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetVerificationLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetVerificationLoadingMessage;\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 { ICookieSetOptions, IImageDimension, ILocaleItems } from '@msdyn365-commerce/core-internal';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICountryPickerData } from './country-picker.data';\nimport { IActionLinkData, ICountryPickerProps } from './country-picker.props.autogenerated';\n\n/**\n * CountryPicker view props interface.\n */\nexport interface ICountryPickerViewProps extends ICountryPickerProps {\n modalContainer: IModuleProps;\n modalHeaderContainer: INodeProps;\n modalFooterContainer: INodeProps;\n modalBodyContainer: INodeProps;\n heading?: React.ReactNode;\n subheading?: React.ReactNode;\n link?: React.ReactNode;\n countryList?: React.ReactNode[];\n isModalOpen?: boolean;\n state?: ICountryPickerState;\n stayOnCurrentSiteButton?: React.ReactNode;\n}\n\n/**\n * ICountryPickerState: Interface for Country picker State.\n */\nexport interface ICountryPickerState {\n isModalOpen: boolean;\n}\n\n/**\n *\n * CountryPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CountryPicker extends React.PureComponent, ICountryPickerState> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly _preferredSiteStorageKey: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationTime = 5_184_000;\n\n public constructor(props: ICountryPickerProps) {\n super(props);\n let isCookieValueSet: boolean = false;\n if (props.context.request.cookies.get(this._preferredSiteStorageKey).value) {\n isCookieValueSet = true;\n }\n this.state = {\n isModalOpen: !isCookieValueSet && this.props.context.request.marketSettings !== undefined\n };\n }\n\n public render(): JSX.Element | null {\n const { heading, subheading, countryList, actionLink } = this.props.config;\n\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven) {\n return null;\n }\n\n const countryPickerHeading = heading && (\n \n );\n\n const countryPickerSubHeading = subheading && (\n \n );\n\n const countryPickerActionLink = actionLink && this.createLink(actionLink);\n const currentSiteButton = (\n \n );\n\n const viewprops: ICountryPickerViewProps = {\n ...this.props,\n state: this.state,\n isModalOpen: this.state.isModalOpen,\n modalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-country-picker__dialog',\n isOpen: true,\n 'aria-label': 'country-picker',\n toggle: this.closeModal,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: true\n },\n modalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-country-picker__modal-header',\n toggle: this.closeModal,\n closeButtonTabIndex: 1\n },\n modalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-countryPicker__modal-footer'\n },\n modalBodyContainer: {\n tag: ModalBody,\n className: 'ms-counrtyPicker__modal-body'\n },\n heading: countryPickerHeading,\n subheading: countryPickerSubHeading,\n link: countryPickerActionLink,\n countryList: countryList && this.renderCountryList(),\n stayOnCurrentSiteButton: currentSiteButton\n };\n\n return this.props.renderView(viewprops);\n }\n\n /**\n * Initiate close modal.\n */\n public readonly closeModal = (): void => {\n this.setState({\n isModalOpen: false\n });\n };\n\n public handleParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.subheading = event.target.value;\n }\n\n public handleTextChange(event: MsDyn365.ContentEditableEvent): void {\n this.props.config.heading!.text = event.target.value;\n }\n\n public handleLinkTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.actionLink?.linkText) {\n this.props.config.actionLink.linkText = event.target.value;\n }\n }\n\n public createLink(link?: IActionLinkData): React.ReactNode | null {\n if (!StringExtensions.isNullOrEmpty(link?.linkUrl.destinationUrl)) {\n const linkText = link?.linkText ?? '';\n const payLoad = getPayloadObject('click', this._telemetryContent, '', '');\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: link?.ariaLabel,\n className: 'ms-countryPicker__link',\n linkText,\n linkUrl: link?.linkUrl.destinationUrl,\n openInNewTab: link?.openInNewTab,\n role: 'link',\n additionalProperties: attributes!,\n onClick: onTelemetryClick(this._telemetryContent, payLoad, linkText)\n };\n return (\n \n );\n }\n return null;\n }\n\n public renderCountryList(): React.ReactNode[] | undefined {\n const marketSettings = this.props.context.request.marketSettings;\n if (!marketSettings) {\n return undefined;\n }\n const localeItems = marketSettings.localeItems;\n const countryLinks = localeItems.map((value: ILocaleItems) => {\n return this.renderCountry(value);\n });\n\n return countryLinks;\n }\n\n public renderCountry(localeItem: ILocaleItems): React.ReactNode | null {\n const countryList = this.props.config.countryList;\n let baseUrl = localeItem.localeBaseUrl;\n baseUrl = this._appendProtocolToUrl(baseUrl);\n const matchedCountryItem = countryList?.find(item => item.url === baseUrl);\n if (!matchedCountryItem) {\n return null;\n }\n const imageSize: IImageDimension = { q: 'w=48&h=48&m=6', w: 0, h: 0 };\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: imageSize,\n lg: imageSize,\n xl: imageSize\n },\n lazyload: true\n };\n const image = matchedCountryItem.image;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings ?? defaultImageSettings\n };\n return (\n \n {image && (\n \n )}\n
\n {matchedCountryItem.displayString}\n {matchedCountryItem.displaySubString}\n
\n \n );\n }\n\n /**\n * Writes the current site base url to cookie and closes the country picker modal dialog.\n */\n private readonly _handleStayOnSiteButtonClick = (): void => {\n const currentBaseUrl = this.props.context.request.marketSettings?.currentBaseUrl;\n if (currentBaseUrl) {\n const urlToStore = this._appendProtocolToUrl(currentBaseUrl);\n this._writeToCookie(this._preferredSiteStorageKey, urlToStore);\n }\n this.closeModal();\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n * @returns - This method just writes the cookie to the browser.\n */\n private readonly _handleClick = (storageKey?: string, storageValue?: string) => () => {\n this._writeToCookie(storageKey, storageValue);\n };\n\n /**\n * Handles click event of country selection.\n * @param storageKey - Cookie storage key.\n * @param storageValue - Preffered site url.\n */\n private readonly _writeToCookie = (storageKey?: string, storageValue?: string): void => {\n if (!storageKey || !storageValue) {\n return;\n }\n const cookieOptions: ICookieSetOptions = { secure: true, sameSite: 'none' };\n cookieOptions.maxAge = this._cookieExpirationTime;\n this.props.context.request.cookies.set(storageKey, storageValue, cookieOptions);\n };\n\n /**\n * Appends protocol to an url.\n * @param baseUrl - Url to be formatted.\n * @returns - URL after appending protocol.\n */\n private readonly _appendProtocolToUrl = (baseUrl: string): string => {\n return !baseUrl.includes('https://') ? `https://${baseUrl}` : baseUrl;\n };\n}\n\nexport default CountryPicker;\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 getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from './dataActions/get-attributes-for-selected-variant';\nimport ProductSpecification from './modules/product-specification/product-specification';\nimport ProductSpecificationView from './modules/product-specification/product-specification.view';\n\nexport * from './modules/product-specification/components/product-specification-table-stucture';\nexport * from './modules/product-specification/product-specification';\nexport * from './modules/product-specification/product-specification.data';\nexport * from './modules/product-specification/product-specification.props.autogenerated';\nexport * from './modules/product-specification/product-specification.view';\nexport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant, ProductSpecification, ProductSpecificationView };\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 { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from './pdp-specs';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n const ECO_MATERIALS_ATTRIBUTE_NAME = 'data-eco-materials';\r\n\r\n React.useEffect(() => {\r\n window.addEventListener('click', function(event) {\r\n const el = event.target as HTMLAnchorElement;\r\n const ecoMatAttr = el.attributes.getNamedItem(ECO_MATERIALS_ATTRIBUTE_NAME);\r\n if (ecoMatAttr) {\r\n event.preventDefault();\r\n const ecoMat = ecoMatAttr ? ecoMatAttr.nodeValue : '';\r\n if (ecoMat) {\r\n props.openModal(ecoMat);\r\n }\r\n }\r\n });\r\n }, []);\r\n\r\n const {\r\n ProductSpecification,\r\n ProductSpecificationTableProps,\r\n ProductSpecificationTableBodyProps,\r\n productSpecificationResult,\r\n modal\r\n } = props;\r\n const rowdata =\r\n productSpecificationResult &&\r\n ArrayExtensions.hasElements(productSpecificationResult) &&\r\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\r\n\r\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n \r\n {props.title}\r\n \r\n {rowdata}\r\n \r\n {modal}\r\n \r\n ) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","import { createContext, ReactNode } from 'react';\r\n\r\nexport interface ICheckoutContext {\r\n placeOrderButton: ReactNode | null;\r\n cartHasBalance: boolean;\r\n mailChimp: ReactNode | null;\r\n termsAndConditions: ReactNode | null;\r\n}\r\n\r\nexport const CheckoutContext = createContext({\r\n placeOrderButton: null,\r\n cartHasBalance: true,\r\n mailChimp: null,\r\n termsAndConditions: null\r\n});\r\n\r\nconst { Consumer: CheckoutConsumer, Provider: CheckoutProvider } = CheckoutContext;\r\n\r\nexport { CheckoutConsumer, CheckoutProvider };\r\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 IPasswordResetVerificationButton {\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 PasswordResetVerificationButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetVerificationButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {'Code '}\n {coupon.Code}\n {'Applied '}\n
\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\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._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\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 { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Product specification table row.\r\n */\r\nexport interface IProductSpecificationTableRow {\r\n productName?: string;\r\n cellData?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Product specification table row component.\r\n * @param props - For product specification table row.\r\n * @param props.productName - Product name.\r\n * @param props.cellData - Cell data.\r\n * @param props.className - Class name.\r\n * @returns - Returns JSX element.\r\n */\r\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\r\n \r\n \r\n \r\n \r\n {cellData}\r\n \r\n);\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IPdpSpecs containerModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport const enum displayStyle {\r\n accordion = 'accordion',\r\n table = 'table'\r\n}\r\n\r\nexport interface IPdpSpecsConfig extends Msdyn365.IModuleConfig {\r\n heading?: IHeadingData;\r\n displayStyle?: displayStyle;\r\n className?: string;\r\n detailsAccordionText?: string;\r\n sustainAccordionText?: string;\r\n ecoMaterials?: IEcoMaterialTypeData[];\r\n}\r\n\r\nexport interface IPdpSpecsResources {\r\n trueValueText: string;\r\n falseValueText: string;\r\n articleLabel: string;\r\n sustainabilityHeadingLabel: string;\r\n detailsHeadingLabel: string;\r\n pdpspecsDescriptionLabel: string;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface IPdpSpecsProps extends Msdyn365.IModule {\r\n resources: IPdpSpecsResources;\r\n config: IPdpSpecsConfig;\r\n slots: {\r\n materialBlocks: React.ReactNode[];\r\n };\r\n}\r\n\r\nexport interface IEcoMaterialTypeData {\r\n name?: string;\r\n header?: string;\r\n paragraph?: Msdyn365.RichText;\r\n linkId?: string;\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Drawer, IModuleProps, INodeProps, Module, Modal, ModalBody, ModalHeader, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '@msdyn365-commerce-modules/product-specification';\r\nimport { ProductSpecificationTableRow } from './components/pdp-specs-table-stucture';\r\nimport { IPdpSpecsData } from './pdp-specs.data';\r\nimport { displayStyle, IPdpSpecsProps } from './pdp-specs.props.autogenerated';\r\n\r\n/**\r\n * Maintain Drawer State.\r\n */\r\nexport interface IProductSpecificationState {\r\n isDrawerOpen: boolean;\r\n drawerListId: number | undefined;\r\n openDrawerList: number[];\r\n attFresh: true | false;\r\n descFresh: true | false;\r\n isModalOpen?: boolean;\r\n modalHeader: string;\r\n modalBody: Msdyn365.RichText | undefined;\r\n}\r\n\r\n/**\r\n * Product specification view props.\r\n */\r\nexport interface IProductSpecificationViewProps extends IPdpSpecsProps<{}> {\r\n ProductSpecification: IModuleProps;\r\n ProductSpecificationTableProps: INodeProps;\r\n ProductSpecificationTableBodyProps: INodeProps;\r\n productSpecificationResult?: (JSX.Element | null)[];\r\n title?: React.ReactNode;\r\n isAccrodion?: boolean;\r\n handleText?(event: Msdyn365.ContentEditableEvent): void;\r\n modal: React.ReactNode;\r\n openModal: (option: string) => void;\r\n}\r\n\r\n/**\r\n * Check for display style either accordion or table.\r\n */\r\nexport interface IProductSpecificationExtentedProps extends IPdpSpecsProps {\r\n displayStyle?: displayStyle;\r\n}\r\n\r\n/**\r\n *\r\n * ProductSpecification component.\r\n * @extends {React.Component>}\r\n */\r\n@observer\r\nclass ProductSpecification extends React.Component {\r\n private readonly MODEL_SIZE_ATTRIBUTE_NAME = 'ModelSize';\r\n private readonly DESCRIPTION_ATTRIBUTE_NAME = 'Description';\r\n\r\n public constructor(props: IProductSpecificationExtentedProps) {\r\n super(props);\r\n this.state = {\r\n openDrawerList: [],\r\n drawerListId: undefined,\r\n isDrawerOpen: false,\r\n attFresh: true,\r\n descFresh: true,\r\n isModalOpen: false,\r\n modalHeader: '',\r\n modalBody: undefined\r\n };\r\n\r\n this.toggleModal = this.toggleModal.bind(this);\r\n this.openModal = this.openModal.bind(this);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const { context, data, telemetry } = this.props;\r\n reaction(\r\n () => (data.product.result ? data.product.result.RecordId : null),\r\n () => {\r\n if (context && data.product.result) {\r\n const actionInput = new AttributesForSelectedVariantInput(\r\n data.product.result.RecordId,\r\n\r\n +context.actionContext.requestContext.apiSettings.channelId,\r\n data.product.result\r\n );\r\n\r\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to update attributes for Product');\r\n telemetry.error(error.message);\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Toggles modal open state.\r\n */\r\n public readonly toggleModal = (): void => {\r\n this.setState({\r\n isModalOpen: !this.state.isModalOpen\r\n });\r\n };\r\n\r\n public openModal = (option: string): void => {\r\n const {\r\n config: { ecoMaterials }\r\n } = this.props;\r\n let header = '';\r\n let body: Msdyn365.RichText | undefined;\r\n if (ecoMaterials && ecoMaterials.length > 0) {\r\n ecoMaterials.map(ecoMat => {\r\n if (ecoMat.linkId === option) {\r\n header = ecoMat.header || '';\r\n body = ecoMat.paragraph;\r\n }\r\n });\r\n }\r\n if (header && body) {\r\n this.toggleModal();\r\n this.setState({\r\n modalHeader: header,\r\n modalBody: body\r\n });\r\n }\r\n };\r\n\r\n public renderModal = (): React.ReactNode => {\r\n const { isModalOpen, modalBody, modalHeader } = this.state;\r\n const headerContainer: INodeProps = {\r\n tag: ModalHeader,\r\n className: 'pdp-specs-modal__header',\r\n toggle: this.toggleModal\r\n };\r\n return (\r\n \r\n \r\n {modalHeader}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n public render(): JSX.Element | null {\r\n let data: IPdpSpecsData;\r\n try {\r\n data = this.props.data;\r\n } catch (error) {\r\n this.props.telemetry.error(`Something went wrong ------${error}`);\r\n return null;\r\n }\r\n\r\n const { heading, className } = this.props.config;\r\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\r\n const viewProps = {\r\n ...this.props,\r\n handleText: this.handleHeadingChange,\r\n ProductSpecification: {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification', className)\r\n },\r\n ProductSpecificationTableProps: isAccrodion\r\n ? {\r\n moduleProps: this.props,\r\n className: classnames('ms-product-specification__accordion', className)\r\n }\r\n : {\r\n className: classnames('ms-product-specification__table table-striped table-bordered'),\r\n tag: 'table'\r\n },\r\n isAccrodion,\r\n ProductSpecificationTableBodyProps: isAccrodion\r\n ? {}\r\n : {\r\n className: '',\r\n tag: 'tbody'\r\n },\r\n title: heading?.text && (\r\n \r\n ),\r\n productSpecificationResult: isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data),\r\n modal: this.renderModal(),\r\n openModal: this.openModal\r\n } as IProductSpecificationViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle Heading Text Change.\r\n * @param event - Current event.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\r\n this.props.config.heading!.text = event.target.value;\r\n };\r\n\r\n private _createTableBody(content: IPdpSpecsData): (JSX.Element | null)[] {\r\n return content.productSpecificationData.result!.map((product, index) => {\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n\r\n if (!cellData) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n });\r\n }\r\n\r\n private _createDrawerBody(content: IPdpSpecsData): (JSX.Element | null)[] {\r\n const {\r\n config: { detailsAccordionText }\r\n } = this.props;\r\n\r\n const accordionItemContainer: IModuleProps = {\r\n moduleProps: this.props,\r\n className: 'ms-product-specification-title'\r\n };\r\n const simpleProduct = content.product.result;\r\n\r\n if (!simpleProduct) {\r\n return [null];\r\n }\r\n\r\n const productContent = content.productSpecificationData.result?.sort((a, b) => (a.Name! < b.Name! ? 1 : -1)) || [];\r\n const tempOpenDrawerList: number[] = [];\r\n const rows = productContent.map(product => {\r\n const cellData: JSX.Element | null = this._renderProductCell(product);\r\n // const isSpecifiedType: boolean = [this.MODEL_SIZE_ATTRIBUTE_NAME].indexOf(product.Name ?? '') > -1;\r\n const isSpecifiedType: boolean =\r\n [this.MODEL_SIZE_ATTRIBUTE_NAME, this.DESCRIPTION_ATTRIBUTE_NAME].indexOf(product.Name ?? '') > -1;\r\n if (!isSpecifiedType || !cellData) {\r\n return null;\r\n }\r\n tempOpenDrawerList.push(product.RecordId!);\r\n const itemId = this.props.data.product.result?.ItemId;\r\n if (itemId && this.state.attFresh === true) {\r\n tempOpenDrawerList.push(product.RecordId!);\r\n this.setState({ openDrawerList: tempOpenDrawerList, attFresh: false });\r\n }\r\n\r\n if (product.Name === this.MODEL_SIZE_ATTRIBUTE_NAME) {\r\n return (\r\n \r\n -1 ? true : false\r\n }}\r\n className='ms-product-specification__drawer'\r\n openGlyph='ms-product-specification__drawer-open'\r\n closeGlyph='ms-product-specification__drawer-close'\r\n glyphPlacement='end'\r\n toggleButtonText={detailsAccordionText || ''}\r\n onToggle={this._toggle(product.RecordId)}\r\n >\r\n
\r\n {isSpecifiedType && `${this.props.resources.articleLabel}:`}\r\n  \r\n {isSpecifiedType && `${itemId}`}\r\n \r\n
\r\n {cellData}\r\n
\r\n
\r\n \r\n
\r\n );\r\n // } else if (product.Name === this.DESCRIPTION_ATTRIBUTE_NAME) {\r\n // const descCellData = this._renderDescriptionCell(simpleProduct);\r\n // return (\r\n // \r\n // -1 ? true : false\r\n // }}\r\n // className='ms-product-specification__drawer'\r\n // openGlyph='ms-product-specification__drawer-open'\r\n // closeGlyph='ms-product-specification__drawer-close'\r\n // glyphPlacement='end'\r\n // toggleButtonText={simpleProduct.Description ? sustainAccordionText || '' : this.DESCRIPTION_ATTRIBUTE_NAME}\r\n // onToggle={this._toggle(product.RecordId)}\r\n // >\r\n //
{descCellData}
\r\n // \r\n //
\r\n // );\r\n } else {\r\n return null;\r\n }\r\n });\r\n\r\n const MaterialSlot = this.props.slots.materialBlocks ? (\r\n \r\n {this.props.slots.materialBlocks}\r\n \r\n ) : null;\r\n\r\n if (MaterialSlot) {\r\n if (rows) {\r\n rows.unshift(MaterialSlot);\r\n } else {\r\n return [MaterialSlot];\r\n }\r\n }\r\n\r\n if (simpleProduct && simpleProduct.MasterProductId && simpleProduct.Description) {\r\n tempOpenDrawerList.push(simpleProduct.MasterProductId);\r\n if (this.state.descFresh) {\r\n this.setState({ openDrawerList: tempOpenDrawerList, descFresh: false });\r\n }\r\n const descCellData = this._renderDescriptionCell(simpleProduct);\r\n\r\n const descriptionAccordion = (\r\n \r\n -1 ? true : false\r\n }}\r\n className='ms-product-specification__drawer'\r\n openGlyph='ms-product-specification__drawer-open'\r\n closeGlyph='ms-product-specification__drawer-close'\r\n glyphPlacement='end'\r\n toggleButtonText={this.props.config.sustainAccordionText ?? this.props.resources.pdpspecsDescriptionLabel}\r\n onToggle={this._toggle(simpleProduct.MasterProductId)}\r\n >\r\n
{descCellData}
\r\n \r\n
\r\n );\r\n rows.unshift(descriptionAccordion);\r\n }\r\n return rows;\r\n }\r\n\r\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\r\n if (drawerListId) {\r\n if (this.state.openDrawerList.length) {\r\n var drawerList = this.state.openDrawerList.slice(0);\r\n if (this.state.openDrawerList.indexOf(drawerListId) > -1) {\r\n drawerList = drawerList.filter(v => v !== drawerListId);\r\n } else {\r\n drawerList.push(drawerListId);\r\n }\r\n this.setState({ openDrawerList: drawerList });\r\n } else {\r\n this.setState({ openDrawerList: [drawerListId] });\r\n }\r\n }\r\n\r\n if (this.state.drawerListId !== drawerListId) {\r\n this.setState({ drawerListId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\r\n }\r\n };\r\n\r\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\r\n switch (product.DataTypeValue) {\r\n case 0: // None\r\n // Return span here instead of null so the row still shows\r\n return ;\r\n case 1: // Currency\r\n return this._renderCurrencyCell(product);\r\n case 2: // DateTime\r\n return this._renderDateTimeCell(product);\r\n case 3: // Decimal\r\n return this._renderDecimalCell(product);\r\n case 4: // Integer\r\n return this._renderIntegerCell(product);\r\n case 5: // Text\r\n if (product.TextValue === '') {\r\n return null;\r\n }\r\n return this._renderTextCell(product);\r\n case 6: // TrueFalse\r\n return this._renderTrueFalseCell(product);\r\n case 40: // Video\r\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\r\n return null;\r\n case 41: // Image\r\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\r\n return null;\r\n default:\r\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\r\n return null;\r\n }\r\n }\r\n\r\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\r\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\r\n return (\r\n \r\n {product.CurrencyCode}\r\n {product.CurrencyValue}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\r\n if (product.DateTimeOffsetValue?.toUTCString) {\r\n return {product.DateTimeOffsetValue.toUTCString()};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\r\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\r\n return {product.IntegerValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\r\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\r\n return {product.FloatValue};\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\r\n if (product.TextValue !== null && product.TextValue !== undefined) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderDescriptionCell(product: SimpleProduct): JSX.Element | null {\r\n if (product.Description) {\r\n const updatedDescription = product.Description.replace('\\u2028', '');\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\r\n // TODO 20369885 setting to default value is needed to work around a platform bug where\r\n // config string value does not get its default value.\r\n if (product.BooleanValue) {\r\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\r\n }\r\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\r\n }\r\n}\r\n\r\nexport default ProductSpecification;\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 { ISubscribeViewProps } from './subscribe';\n\n/**\n * Override form action and button action below.\n * @param event - The form event.\n */\nconst onSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n};\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns nothing.\n */\nexport const subscribeView: React.FC = props => {\n const { subscribe, subscribeContainer, heading, text, subscribeForm, emailInput, submitButton } = props;\n return (\n \n \n {heading}\n {text}\n \n \n \n {props.submitButtonLabelText}\n \n \n \n \n );\n};\n\nexport default subscribeView;\n","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport React from 'react';\r\n\r\nimport { IEveSitePickerConfig, IEveSitePickerProps } from './eve-site-picker.props.autogenerated';\r\n\r\nexport interface ISitePickerViewProps extends IEveSitePickerProps {\r\n SitePicker: IModuleProps;\r\n SitePickerMenu: INodeProps;\r\n SitePickerMenuSpan: INodeProps;\r\n SitePickerMenuList: INodeProps;\r\n SitePickerMenuListItem: INodeProps;\r\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\r\n siteOptionsState: boolean;\r\n SitePickerMobileContainer: INodeProps;\r\n isMobileView: boolean;\r\n renderSiteOptions(): void;\r\n resetSiteOptionsState(): void;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\ninterface ISitePickerState {\r\n expandSiteOptions: boolean;\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * SitePicker component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass SitePicker extends React.PureComponent, ISitePickerState> {\r\n private readonly _cookieName: string = '_msdyn365___site_';\r\n\r\n //private readonly _cookieExpirationInSeconds: number = 5650000;\r\n\r\n private readonly _sitePickerMenuNode: React.RefObject;\r\n\r\n private readonly _sitePickerMenuButton: React.RefObject;\r\n\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n @observable\r\n private viewport: GridSize;\r\n\r\n public constructor(props: ISitePickerViewProps) {\r\n super(props);\r\n this._handleChange = this._handleChange.bind(this);\r\n this._sitePickerMenuNode = React.createRef();\r\n this._sitePickerMenuButton = React.createRef();\r\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\r\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = {\r\n expandSiteOptions: false,\r\n isMobile: this.isMobile\r\n };\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\r\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps: ISitePickerViewProps = {\r\n ...(this.props as IEveSitePickerProps),\r\n SitePicker: {\r\n moduleProps: this.props,\r\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\r\n tag: 'div'\r\n },\r\n SitePickerMenu: {\r\n tag: 'button' as NodeTag,\r\n className: 'ms-site-picker__button',\r\n 'aria-label': this.props.config.heading?.text,\r\n 'aria-expanded': this.state.expandSiteOptions,\r\n onClick: this.props,\r\n ref: this._sitePickerMenuButton\r\n },\r\n SitePickerMenuSpan: {\r\n className: 'ms-site-picker__span',\r\n tag: 'span'\r\n },\r\n SitePickerMenuList: {\r\n className: 'ms-site-picker__list',\r\n role: 'menu',\r\n tag: 'ul',\r\n ref: this._sitePickerMenuNode\r\n },\r\n SitePickerMenuListItem: {\r\n className: 'ms-site-picker__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n SitePickerMobileContainer: {\r\n tag: Drawer,\r\n className: 'ms-site-picker__drawer',\r\n toggleButtonText: this.props.config.heading?.text,\r\n openGlyph: 'ms-site-picker__drawer-open',\r\n closeGlyph: 'ms-site-picker__drawer-close',\r\n glyphPlacement: 'end'\r\n },\r\n isMobileView: this.state.isMobile,\r\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\r\n renderSiteOptions: this._renderSiteOptions,\r\n resetSiteOptionsState: this._resetSiteOptionsState,\r\n siteOptionsState: this.state.expandSiteOptions\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _renderSiteOptions(): void {\r\n const expandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !expandSiteOptionsState\r\n });\r\n }\r\n\r\n private _resetSiteOptionsState(): void {\r\n this.setState({\r\n expandSiteOptions: false\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _escFunction = (event: any) => {\r\n const key = event.keyCode;\r\n if (this.state.expandSiteOptions) {\r\n switch (key) {\r\n case KeyCodes.Escape: {\r\n setTimeout(() => {\r\n const nextFocus = document && document.activeElement;\r\n if (\r\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\r\n this._sitePickerMenuNode?.current?.contains(nextFocus)\r\n ) {\r\n this._resetSiteOptionsState();\r\n this._sitePickerMenuButton?.current?.focus();\r\n }\r\n }, 50);\r\n break;\r\n }\r\n case KeyCodes.Tab: {\r\n setTimeout(() => {\r\n const nextFocus = document && document.activeElement;\r\n if (\r\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\r\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\r\n ) {\r\n this._resetSiteOptionsState();\r\n }\r\n }, 50);\r\n break;\r\n }\r\n default:\r\n return;\r\n }\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private readonly _handleOutsideClick = (event: any) => {\r\n if (\r\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\r\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\r\n ) {\r\n return;\r\n }\r\n this._resetSiteOptionsState();\r\n };\r\n\r\n private _handleChange(e: React.MouseEvent): void {\r\n e.preventDefault();\r\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\r\n if (this.props.context.request.cookies.isConsentGiven()) {\r\n const cookieConfig = { maxAge: this.props.config.cookieLifetime };\r\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\r\n }\r\n const goToString =\r\n this._stripTrailingSlashes(\r\n `${e.currentTarget.href}${this.stripLocale(this.props.context.request.url.requestUrl.pathname.toString())}`\r\n ) + this.props.context.request.url.requestUrl.search ?? '';\r\n window.location.assign(goToString);\r\n }\r\n }\r\n\r\n private _stripTrailingSlashes(path: string): string {\r\n return path.replace(/\\/+$/, '');\r\n }\r\n\r\n private stripLocale(input: string): string {\r\n var result = input;\r\n if (input.includes('/eu-en') || input.includes('/fr-ch')) {\r\n result = input.slice(6);\r\n } else if (input.includes('/en') || input.includes('/eu') || input.includes('/fr')) {\r\n result = input.slice(3);\r\n } else if (input.length > 0) {\r\n result = input.slice(0);\r\n }\r\n return result;\r\n }\r\n\r\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\r\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\r\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\r\n\r\n return (\r\n siteOptions &&\r\n siteOptions.map((item, index) => {\r\n const image = item?.siteImage;\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings!,\r\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\r\n };\r\n return (\r\n \r\n {item?.siteName}\r\n \r\n \r\n );\r\n })\r\n );\r\n }\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default SitePicker;\r\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 IPasswordResetVerificationErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationError;\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 IPasswordResetVerificationSuccess {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetVerificationSuccess: React.FC = ({ id, className, type = 'page', message }) => {\n const successClassName = `${className}__${type}-success`;\n\n return (\n \n );\n};\n\nexport default PasswordResetVerificationSuccess;\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 { IBusinessPartnerPromotionViewProps } from './business-partner-promotion';\n\n/**\n * View layout of business partner promotion module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n const {\n businessPartnerPromotionProps,\n heading,\n notificationMessage,\n sellerDescriptions,\n termsOfServiceCheckbox,\n termsOfServiceModal,\n submitButton\n } = props;\n return (\n \n {heading}\n {notificationMessage}\n {sellerDescriptions}\n {termsOfServiceCheckbox}\n {termsOfServiceModal}\n {submitButton}\n \n );\n};\n\nexport default businessPartnersView;\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 { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\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 { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
\n
\n
\n
\n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
\n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
\n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\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 { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
\n
\n
\n
\n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
\n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
\n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

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

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\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\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 { ISitePickerViewProps } from './eve-site-picker';\r\n\r\nexport default (props: ISitePickerViewProps) => {\r\n return <>{_renderSitePicker(props)};\r\n};\r\n\r\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\r\n const { SitePickerMenu, SitePickerMenuSpan } = props;\r\n return (\r\n <>\r\n \r\n {props.config.heading?.text}\r\n \r\n \r\n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\r\n \r\n );\r\n};\r\n\r\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\r\n const options = SitePickerMenuListItemArray!.map((item, index) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n });\r\n return (\r\n \r\n {options}\r\n \r\n );\r\n};\r\n\r\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { SitePickerMobileContainer } = props;\r\n return (\r\n \r\n
\r\n {props.SitePickerMenuListItemArray?.map((item, index) => {\r\n return
{item}
;\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\r\n const { isMobileView, SitePicker } = props;\r\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\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 Msdyn365 from '@msdyn365-commerce/core';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountGenericTileConfig, IAccountGenericTileProps } from './account-generic-tile.props.autogenerated';\nimport LinksComponent from './components/account-generic-tile-links';\n\nexport interface IAccountGenericTileViewProps extends IAccountGenericTileProps {\n AccountGenericTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n}\n\n/**\n *\n * AccountGeneric component.\n * @extends {React.PureComponent>}\n */\nclass AccountGenericTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountGenericTileProps) {\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 } = this.props;\n const { className, heading, links } = config;\n\n const viewProps = {\n ...this.props,\n className,\n AccountGenericTile: {\n moduleProps: this.props,\n className: classnames('ms-account-generic-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\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 AccountGenericTile;\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 { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\n // Hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items &&\n items.map((item: IBusinessSignUpItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\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 { IBusinessPartnersViewProps } from './business-partners';\n\n/**\n * View layout of business partner module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n if (props.selectedBusinessPartnerUser) {\n return (\n \n {props.businessPartnersHeading}\n {props.catalogLoadingIndicator}\n {props.catalogLoadingErrorMessage}\n \n );\n }\n\n if (props.cookieConsentNotGivenErrorMessage) {\n return (\n \n {props.businessPartnersHeading}\n {props.cookieConsentNotGivenErrorMessage}\n \n );\n }\n\n return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\n {props.businessPartnerUsersHeading}\n {props.businessPartnersTable}\n {props.businessPartnerUsersTable}\n \n );\n};\n\nexport default businessPartnersView;\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 IPasswordResetVerificationLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetVerificationLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetVerificationLabel;\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 { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISubscribeConfig, ISubscribeProps } from './subscribe.props.autogenerated';\n\n/**\n * Subscribe view props.\n */\nexport interface ISubscribeViewProps extends ISubscribeProps {\n subscribe: IModuleProps;\n subscribeContainer: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n subscribeForm?: INodeProps;\n emailInput?: INodeProps;\n handleText(): void;\n}\n\n/**\n * Subscribe component.\n * @extends {React.PureComponent>}\n */\nexport class Subscribe extends React.PureComponent> {\n private readonly _emailAddressInputRef: React.RefObject;\n\n public constructor(props: ISubscribeViewProps) {\n super(props);\n this._emailAddressInputRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const moduleClassName = 'ms-subscribe';\n\n const subscribeParagraph = paragraph && (\n \n );\n\n const subscribeHeading = heading && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n subscribe: {\n moduleProps: this.props,\n className: moduleClassName\n },\n subscribeContainer: {\n className: 'ms-subscribe__details'\n },\n heading: subscribeHeading,\n text: subscribeParagraph,\n subscribeForm: {\n className: 'ms-subscribe__details__form',\n tag: 'form',\n 'aria-label': this.props.resources.subscribeFormAriaLabel,\n name: 'subscribeForm',\n role: 'form',\n autoComplete: 'off'\n },\n emailInput: {\n className: 'ms-subscribe__details__form__email',\n tag: 'input',\n ref: this._emailAddressInputRef,\n type: 'email',\n 'aria-label': this.props.resources.subscribeFormEmailAriaLabel,\n placeholder: this.props.resources.subscribeEmailPlaceholderText\n },\n submitButton: {\n className: 'ms-subscribe__details__form__submit',\n tag: Button,\n 'aria-label': this.props.resources.subscribeFormSubmitAriaLabel,\n type: 'submit',\n title: this.props.resources.subscribeButtonLabel\n },\n submitButtonLabelText: this.props.resources.subscribeButtonLabel\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n}\n\nexport default Subscribe;\n","/*!\n * Copyright (c) Microsoft Corporation.\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 { IAccountGenericTileViewProps } from './account-generic-tile';\n\nconst AccountGenericTileView: React.FC = props => {\n const { AccountGenericTile, heading, links } = props;\n\n return (\n \n {heading}\n {links}\n \n );\n};\n\nexport default AccountGenericTileView;\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 IPasswordResetVerificationLoadingIcon {\n className: string;\n}\n\nconst PasswordResetVerificationLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default PasswordResetVerificationLoadingIcon;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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 PasswordResetVerificationButtonComponent from './components/password-reset-verification-button';\nimport PasswordResetVerificationErrorComponent from './components/password-reset-verification-error';\nimport PasswordResetVerificationInputComponent from './components/password-reset-verification-input';\nimport PasswordResetVerificationLabelComponent from './components/password-reset-verification-label';\nimport PasswordResetVerificationLoadingIconComponent from './components/password-reset-verification-loading-icon';\nimport PasswordResetVerificationLoadingMessageComponent from './components/password-reset-verification-loading-message';\nimport PasswordResetVerificationSuccessComponent from './components/password-reset-verification-success';\nimport { IPasswordResetVerificationConfig, IPasswordResetVerificationProps } from './password-reset-verification.props.autogenerated';\n\nexport interface IPasswordResetVerificationViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetVerificationItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationLocalAccount {\n localAccount: INodeProps;\n verificationControlWrapper: INodeProps;\n items: IPasswordResetVerificationItem[];\n successMessage: React.ReactNode[];\n errorMessage: React.ReactNode[];\n verificationButtonsWrapper: INodeProps;\n verificationButtons: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetVerificationLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetVerificationViewProps {\n className: string;\n viewState: IPasswordResetVerificationViewState;\n loading: IPasswordResetVerificationLoading;\n passwordResetVerification: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetVerificationLocalAccount: IPasswordResetVerificationLocalAccount;\n}\n\n/**\n *\n * PasswordResetVerification component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordResetVerification extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset-verification';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n @observable private templateVersion: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetVerificationProps) {\n super(props);\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.templateVersion = '';\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: IPasswordResetVerificationProps,\n nextState: IPasswordResetVerificationViewState\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 passwordResetVerification: {\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 )\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 passwordResetVerificationLocalAccount: 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 _prePopulateData(): void {\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 if (obj.ID.toLowerCase() === 'email') {\n this.emailRegex = obj.PAT;\n } else if (obj.ID.toLowerCase() === 'emailverificationcontrol') {\n this.templateVersion = 'v2';\n }\n });\n if (!this.templateVersion) {\n this.templateVersion = 'v1';\n }\n }\n }\n\n private _updateErrorMessage(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: this.props.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(): IPasswordResetVerificationLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n verificationControlWrapper: {\n id: 'emailVerificationControl',\n className: `${this.moduleClassName}__verification-control-content verificationControlContent`\n },\n items: [\n this._renderInput('email', 'email', resources.emailAddressLabelText, undefined, this.emailRegex),\n this._renderInput(\n this.getValue('email_ver_input', 'emailVerificationCode'),\n 'text',\n resources.verificationCodeLabelText,\n undefined,\n undefined,\n 'VerificationCode'\n )\n ],\n successMessage: [\n ,\n\n \n ],\n errorMessage: [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n \n ],\n verificationButtonsWrapper: {\n className: `${this.moduleClassName}__email-verification-buttons ${this.getValue('verify', '')}`,\n 'data-claim_id': 'email'\n },\n verificationButtons: [\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(\n id: string,\n type: string,\n labelText: string,\n maxLength?: string,\n pattern?: string,\n cssClassName?: string\n ): IPasswordResetVerificationItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry', cssClassName)\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n\n private readonly getValue = (v1Value: string, v2Value: string): string => {\n if (this.templateVersion) {\n return this.templateVersion === 'v1' ? v1Value : v2Value;\n }\n return '';\n };\n}\n\nexport default PasswordResetVerification;\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 { ICartlinesViewProps, ICartViewProps, IOrderSummaryErrors } from '@msdyn365-commerce-modules/cart';\r\nimport { ICartLineItemViewProps } from '@msdyn365-commerce-modules/cart/dist/types/modules/cart/components/cart-line-items-promotion';\r\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\r\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n Node,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ICartProps as ICartExtentionProps, ICartResources } from '../definition-extensions/cart.ext.props.autogenerated';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst CartView: React.FC> = props => {\r\n const [checkoutChanged, setCheckoutChanged] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!checkoutChanged) {\r\n const doc = document.getElementsByClassName('msc-cart__btn-checkout msc-btn');\r\n if (doc.length > 0) {\r\n if (!props.context.actionContext.requestContext.user.isAuthenticated) {\r\n doc[0].innerHTML = props.resources.loggedOutCheckoutButtonText;\r\n }\r\n setCheckoutChanged(true);\r\n }\r\n }\r\n });\r\n\r\n return (\r\n
\r\n {props.title}\r\n {props.promotionOptions && _renderPromotions(props.promotionOptions)}\r\n {props.multiplePickUpEnabled ? (\r\n _renderCartLinesGroup(props, props.resources)\r\n ) : (\r\n \r\n {_renderCartlines(\r\n props.cartlines,\r\n props.resources,\r\n props.storeSelector,\r\n props.backToShoppingButton,\r\n props.waitingComponent,\r\n props.cartLoadingStatus,\r\n props.cartDataResult,\r\n props.telemetryContent,\r\n props.multiplePickUpEnabled,\r\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\r\n )}\r\n \r\n )}\r\n {props.orderSummaryHeading && (\r\n \r\n {props.orderSummaryHeading}\r\n {props.cart?.hasInvoiceLine\r\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\r\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\r\n {_renderErrorBlock(props.OrderSummaryErrors)}\r\n {props.checkoutAsSignInUserButton}\r\n {props.checkoutAsGuestButton}\r\n {props.backToShoppingButton}\r\n {props.createTemplateFromCartButton}\r\n \r\n )}\r\n {props.storeSelector}\r\n
\r\n );\r\n};\r\n\r\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\r\n return (\r\n <>\r\n \r\n {promotions.promotionMessage}\r\n {promotions.promotionSeeAllLink}\r\n {promotions.promotionDialog}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderCartlines = (\r\n cartLines: ICartlinesViewProps[] | undefined,\r\n resources: ICartResources,\r\n storeSelector: React.ReactNode | undefined,\r\n backToShoppingButton: React.ReactNode,\r\n waitingComponent: React.ReactNode,\r\n cartLoadingStatus: string,\r\n cartDataResult: boolean,\r\n telemetryContent?: ITelemetryContent,\r\n mulitplePickUp?: boolean,\r\n emailDeliveryModeCode?: string\r\n): JSX.Element[] | JSX.Element => {\r\n const { emptyCartText } = resources;\r\n\r\n if (cartLoadingStatus) {\r\n return <>{cartLoadingStatus};\r\n }\r\n if (cartLines) {\r\n const header_content = (\r\n
\r\n
{resources.productHeading}
\r\n
{resources.quantityHeading}
\r\n
{resources.priceHeading}
\r\n
\r\n );\r\n const cart_line = cartLines.map((cartLine, index) => {\r\n return (\r\n
\r\n {cartLine.cartline}\r\n {mulitplePickUp ? null : _renderBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {mulitplePickUp ? (\r\n \r\n {_renderGroupBOPISBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n ) : cartLine.addToOrderTemplate ? (\r\n \r\n {cartLine.addToOrderTemplate}\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n ) : (\r\n <>\r\n {cartLine.addToWishlist}\r\n {React.cloneElement(cartLine.remove as React.ReactElement, {\r\n 'data-article-number': cartLine.data?.product?.ItemId\r\n })}\r\n \r\n )}\r\n
\r\n );\r\n });\r\n return (\r\n <>\r\n {header_content}\r\n {cart_line}\r\n \r\n );\r\n }\r\n return cartDataResult ? (\r\n
\r\n

{emptyCartText}

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

{props.resources.emptyCartText}

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

\r\n

{groupTitle}

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

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

\r\n ) : null}\r\n

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

\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CartView;\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 { ICountryPickerViewProps } from './country-picker';\n\n/**\n * Functional component which renders country picker module.\n * @param props - Configuration for the country picker component.\n * @returns React.FC - Functional component of the country picker module.\n */\nexport const countryPickerView: React.FC = (props: ICountryPickerViewProps) => {\n const {\n isModalOpen,\n modalContainer,\n modalHeaderContainer,\n modalBodyContainer,\n heading,\n modalFooterContainer,\n subheading,\n link,\n countryList,\n stayOnCurrentSiteButton\n } = props;\n return isModalOpen && countryList ? (\n \n \n {heading}\n {subheading}\n \n \n {countryList.map(country => (\n <>{country}\n ))}\n \n \n {stayOnCurrentSiteButton}\n {link}\n \n \n ) : null;\n};\n\nexport default countryPickerView;\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 { Module, Node } from \"@msdyn365-commerce-modules/utilities\";\r\nimport * as React from \"react\";\r\nimport {\r\n ICheckoutSectionContainerItem,\r\n ICheckoutSectionContainerViewProps\r\n} from \"@msdyn365-commerce-modules/checkout/src/modules/checkout-section-container/./checkout-section-container\";\r\nimport { ICheckoutSectionContainerData } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-section-container/checkout-section-container.data';\r\nimport {\r\n Accordion,\r\n AccordionItem,\r\n AccordionItemButton,\r\n AccordionItemHeading,\r\n AccordionItemPanel\r\n} from \"react-accessible-accordion\";\r\nimport get from \"lodash/get\";\r\nimport { ICheckoutContext, CheckoutContext } from \"../../../utilities/CheckoutContext\";\r\nimport {\r\n ICheckoutSectionContainerProps\r\n} from \"../definition-extensions/checkout-section-container.ext.props.autogenerated\";\r\nimport { setLoyaltyCookie, setGiftCardCookie } from \"../../../utilities/CheckoutCookieManager\";\r\n\r\ninterface IAccordionItemSplit {\r\n accordionItems: ICheckoutSectionContainerItem[];\r\n nonAccordionItems: ICheckoutSectionContainerItem[];\r\n}\r\n\r\ninterface IKlarnaIFrameWindow extends Window {\r\n redirect: () => void;\r\n}\r\n\r\nconst _iframeQuerySelector = '.checkout-payment-instrument__iframe';\r\n\r\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\r\n <>\r\n {loading}\r\n {item}\r\n \r\n);\r\n\r\nconst getAccordionAndNonAccordionSplit = (items: ICheckoutSectionContainerItem[]): IAccordionItemSplit => {\r\n return items.reduce((acc, item) => {\r\n const isAccordion = get(item, 'item.props.config.putInAccordion');\r\n const key = isAccordion ? 'accordionItems' : 'nonAccordionItems';\r\n return {\r\n ...acc,\r\n [key]: [...(acc[key] || []), item]\r\n }\r\n }, {}) as IAccordionItemSplit;\r\n}\r\n\r\nconst getAccordionHeading = (item: ICheckoutSectionContainerItem): string => get(item, 'item.props.config.accordionHeading') || '';\r\n\r\nconst isKlarnaConnector = (item: ICheckoutSectionContainerItem) => get(item, 'item.props.config.paymenTenderType')?.toLowerCase().includes('klarna');\r\n\r\nconst shouldRenderPaymentSection = (item: ICheckoutSectionContainerItem) => !!get(item, 'item.props.config.canPlaceOrder')\r\n\r\nconst CheckoutSectionContainerView: React.FC> = (props) => {\r\n const { checkoutPlainContainerProps, items, data: { checkout }, context: { request: { cookies }}, config: { loyaltyTimeout } } = props;\r\n const checkoutContext = React.useContext(CheckoutContext)\r\n\r\n const itemsToRender = getAccordionAndNonAccordionSplit(items);\r\n // const termsSlot = rest.slots.termsAndConditions;\r\n\r\n const invokeKlarnaButtonClick = () => {\r\n if (checkout.result) {\r\n const { loyaltyAmount, giftCardExtends, checkoutCart: { cart: { Id: cartId}}} = checkout.result;\r\n setLoyaltyCookie(cookies, loyaltyTimeout || 20, loyaltyAmount, cartId);\r\n setGiftCardCookie(cookies, loyaltyTimeout || 20, giftCardExtends, cartId);\r\n }\r\n const frame = document.querySelector(_iframeQuerySelector);\r\n if (frame) {\r\n (frame.contentWindow as IKlarnaIFrameWindow)?.redirect();\r\n }\r\n };\r\n\r\n const getPlaceOrderButton = (item: ICheckoutSectionContainerItem) => {\r\n if (isKlarnaConnector(item)) {\r\n return React.cloneElement(checkoutContext.placeOrderButton as React.ReactElement, { placeOrder: invokeKlarnaButtonClick });\r\n } else {\r\n return checkoutContext.placeOrderButton;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {itemsToRender.nonAccordionItems.map(item => (\r\n \r\n ))}\r\n {checkoutContext?.cartHasBalance && itemsToRender.accordionItems.length && (\r\n \r\n {itemsToRender.accordionItems.map(item => (\r\n \r\n \r\n \r\n {getAccordionHeading(item)}\r\n \r\n \r\n \r\n \r\n {shouldRenderPaymentSection(item) &&
\r\n {checkoutContext.mailChimp}\r\n {checkoutContext.termsAndConditions}\r\n {getPlaceOrderButton(item)}\r\n
}\r\n
\r\n
\r\n ))}\r\n
\r\n )}\r\n\r\n
\r\n );\r\n};\r\n\r\nexport default CheckoutSectionContainerView;\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-generic-tile.props.autogenerated';\n\nexport interface IAccountGenericTileLinks {\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 AccountGenericTileLinks: React.FC = ({ links, telemetryContent, requestContext, onTextChange }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-generic-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountGenericTileLinks;\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';\nimport { KeyCodes } from '@msdyn365-commerce-modules/utilities';\n\nexport interface ISearchBarProps {\n className: string;\n searchPlaceholderLabel: string;\n onSearch(searchText: string): void;\n}\n\nexport interface ISearchBarState {\n searchText: string;\n}\n\nexport class SearchBar extends React.Component {\n constructor(props: ISearchBarProps) {\n super(props);\n this.state = {\n searchText: ''\n };\n }\n\n public render(): JSX.Element {\n const { className, searchPlaceholderLabel } = this.props;\n return (\n
\n \n
\n );\n }\n\n private readonly onSearchTextChange = (ev: React.ChangeEvent): void => {\n this.setState({\n searchText: ev.target.value\n });\n };\n\n private readonly onSearch = (): void => {\n this.props.onSearch(this.state.searchText);\n };\n\n private readonly handleKeyUp = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter) {\n this.onSearch();\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 { IComponentProps } from '@msdyn365-commerce/core';\nimport { CommerceException } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { moduleClassName } from '../business-partners';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { SearchBar } from './search-bar';\n\n/**\n * Props of DataGrid component.\n */\nexport interface IDataGridProps extends IComponentProps {\n className: string;\n pageSize?: number;\n searchPlaceholderLabel: string;\n defaultSorting?: ISortingInfo;\n resources: IBusinessPartnersResources;\n columns: IDataGridColumn[];\n loadData(): Promise;\n}\n\n/**\n * State of DataGrid component.\n */\nexport interface IDataGridState {\n data: Tdata[];\n paging: IPagingInfo;\n filter: IFilterInfo;\n sorting?: ISortingInfo;\n isLoading: boolean;\n errorMessage: string;\n}\n\nexport interface IPagingInfo {\n index: number;\n}\n\nexport interface IFilterInfo {\n searchText: string;\n}\n\nexport interface ISortingInfo {\n fieldName: string;\n ascending: boolean;\n}\n\n/**\n * Column definition of DataGrid component.\n */\nexport interface IDataGridColumn {\n /**\n * A unique key for identifying the column.\n */\n reactKey: string;\n\n /**\n * Name to render on the column header.\n */\n name: string;\n\n /**\n * Class name added to table cell.\n */\n className?: string;\n\n /**\n * The field to pull the text value from for the column.Can be unset if a custom `onRender` method is provided.\n */\n fieldName?: string;\n\n /**\n * Whether the user can search this column by text.\n */\n isSearchable?: boolean;\n\n /**\n * Custom renderer for cell content, instead of the default text rendering.\n */\n onRender?(item: Tdata): JSX.Element;\n\n /**\n * Event when the table cell is clicked.\n */\n onClick?(item: Tdata): void;\n}\n\nconst defaultPageSize = 10;\n\n/**\n * DataGrid component encapsulates common table functionalities.\n */\nexport class DataGrid extends React.Component, IDataGridState> {\n constructor(props: IDataGridProps) {\n super(props);\n this.state = {\n data: [],\n sorting: props.defaultSorting,\n paging: { index: 0 },\n filter: { searchText: '' },\n isLoading: true,\n errorMessage: ''\n };\n }\n\n public componentDidMount(): void {\n this.loadDataInternal();\n }\n\n public shouldComponentUpdate(nextProps: Readonly>, nextState: Readonly>): boolean {\n return (\n this.props.id !== nextProps.id ||\n this.props.columns !== nextProps.columns ||\n this.state.data !== nextState.data ||\n this.state.paging !== nextState.paging ||\n this.state.filter !== nextState.filter ||\n this.state.isLoading !== nextState.isLoading ||\n this.state.errorMessage !== nextState.errorMessage\n );\n }\n\n public render(): JSX.Element | null {\n const data = this.getDataToDisplay();\n const hasMore = this.hasMore();\n if (this.state.errorMessage) {\n return {this.state.errorMessage};\n }\n if (this.state.isLoading) {\n return {this.props.resources.loadingLabel};\n }\n if (!ArrayExtensions.hasElements(data)) {\n return (\n <>\n \n

{this.props.resources.noDataMessage}

\n \n );\n }\n return (\n <>\n \n \n {this.renderGridHeader()}\n {data.map((item, index) => this.renderGridRow(item, index))}\n
\n {hasMore && (\n
\n \n
\n )}\n \n );\n }\n\n /**\n * Renders the TH header in the table.\n * @returns - Header react node.\n */\n private readonly renderGridHeader = () => {\n const className = `${this.props.className}__header`;\n const rowClassName = `${className}__row`;\n return (\n \n \n {this.props.columns.map(column => (\n \n {column.name}\n \n ))}\n \n \n );\n };\n\n /**\n * Renders table row.\n * @param item - Data item for this row.\n * @param index - Index of the row.\n * @returns - Row react node.\n */\n private readonly renderGridRow = (item: Tdata, index: number) => {\n const rowClassName = `${this.props.className}__row`;\n return (\n \n {this.props.columns.map(column => {\n let cell: JSX.Element = <>;\n if (column.onRender) {\n cell = column.onRender(item);\n } else if (column.fieldName) {\n cell = {((item as unknown) as { [key: string]: string })[column.fieldName]};\n }\n return (\n column.onClick?.(item)}>\n {cell}\n \n );\n })}\n \n );\n };\n\n /**\n * Load data for the table.\n * @returns Promise.\n */\n private readonly loadDataInternal = async () => {\n if (!this.props.context.actionContext.requestContext.user.isAuthenticated) {\n this.setState({\n isLoading: false\n });\n return;\n }\n try {\n const result = await this.props.loadData();\n this.setState({\n isLoading: false,\n data: result\n });\n } catch (e) {\n this.setState({\n isLoading: false,\n errorMessage: (e as { data: CommerceException })?.data?.LocalizedMessage || this.props.resources.genericErrorMessage\n });\n }\n };\n\n private readonly onSearch = (searchText: string): void => {\n this.setState({\n paging: { index: 0 },\n filter: { searchText }\n });\n };\n\n private readonly loadMore = (): void => {\n this.setState({\n paging: { index: this.state.paging.index + 1 }\n });\n };\n\n private readonly sortData = (): Tdata[] => {\n const sorting = this.state.sorting;\n if (!sorting) {\n return this.state.data;\n }\n const { fieldName, ascending } = sorting;\n return this.state.data.sort((item1: Tdata, item2: Tdata) => {\n let value1 = ((item1 as unknown) as { [key: string]: string })[fieldName];\n let value2 = ((item2 as unknown) as { [key: string]: string })[fieldName];\n if (typeof value1 === 'string' && typeof value2 === 'string') {\n value1 = value1.toLowerCase();\n value2 = value2.toLowerCase();\n }\n const compareResult = value1 > value2 ? 1 : value1 < value2 ? -1 : 0;\n return ascending ? compareResult : compareResult * -1;\n });\n };\n\n private readonly filterData = (): Tdata[] => {\n const column = this.props.columns.find(c => c.isSearchable);\n const searchText = this.state.filter.searchText;\n return this.sortData().filter(item => {\n if (!column?.fieldName || !searchText) {\n return true;\n }\n const columnValue = ((item as unknown) as { [key: string]: string })[column.fieldName];\n return columnValue && columnValue.toLowerCase().indexOf(searchText.trim().toLowerCase()) >= 0;\n });\n };\n\n private readonly getDataToDisplay = (): Tdata[] => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.slice(0, itemsCount);\n };\n\n private readonly hasMore = (): boolean => {\n const itemsCount = (this.props.pageSize || defaultPageSize) * (this.state.paging.index + 1);\n const filteredItems = this.filterData();\n return filteredItems.length > itemsCount;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { ReactNode } from 'react';\nimport { isMobile, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\n\nimport { BusinessPartner, BusinessPartnerUser, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * View model of business partner user, used to display.\n */\nexport interface IBusinessPartnerUserViewModel extends BusinessPartnerUser {\n name: string;\n spendingLimit: ReactNode;\n}\n\n/**\n * Props of BusinessPartnerUsersTable.\n */\nexport interface IBusinessPartnerUsersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n businessPartner: BusinessPartner;\n resources: IBusinessPartnersResources;\n onSelect(businessPartnerUser: BusinessPartnerUser): void;\n}\n\n/**\n * BusinessPartnerUsersTable component.\n */\nexport class BusinessPartnerUsersTable extends React.Component {\n public shouldComponentUpdate(nextProps: Readonly): boolean {\n return this.props.id !== nextProps.id;\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n\n /**\n * Get column definition of the table.\n * @returns - Columns.\n */\n private readonly getColumns = (): IDataGridColumn[] => {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n return [\n {\n reactKey: 'name',\n name: this.props.resources.businessUserTableNameHeadingText,\n isSearchable: true,\n fieldName: 'name',\n onClick: this.props.onSelect,\n onRender: (data: IBusinessPartnerUserViewModel) => {data.name}\n },\n {\n reactKey: 'email',\n name: this.props.resources.businessUserTableEmailHeadingText,\n fieldName: 'Email',\n onClick: this.props.onSelect\n },\n {\n reactKey: 'spendingLimit',\n name: this.props.resources.businessUserTableSpendingLimitHeadingText,\n className: `${this.props.className}__row__column-with-number`,\n fieldName: 'spendingLimit',\n onClick: !isMobileDevice ? this.props.onSelect : undefined\n }\n ];\n };\n\n /**\n * Call retail proxy to get business partner users.\n * @returns - Business partner users view model.\n */\n private readonly getBusinessPartnerUsers = async (): Promise => {\n const businessPartners = await BusinessPartnersDataActions.getUsersAsync(\n {\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n },\n this.props.businessPartner.BusinessPartnerId\n );\n return businessPartners\n .filter(user => user.StatusValue === 1)\n .map(user => {\n return {\n ...user,\n name: `${user.FirstName} ${user.LastName}`,\n spendingLimit: (\n \n {!ObjectExtensions.isNullOrUndefined(user.SpendingLimit)\n ? this.props.context.cultureFormatter.formatCurrency(user.SpendingLimit.toString())\n : ''}\n {!ObjectExtensions.isNullOrUndefined(user.SpendingLimit) && user.SpendingLimit === 0 ? (\n \n