{"version":3,"sources":["webpack:///src/modules/invoices-list/index.ts?0857","webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","webpack:///./src/modules/event-expiration-block/event-expiration-block.view.tsx?480a","webpack:///./src/modules/primarybanner-content-block/components/links.tsx?baa6","webpack:///./src/modules/primarybanner-content-block/primarybanner-content-block.tsx?ee8a","webpack:///src/modules/fabrikam/views/reviews-list.view.tsx?39a2","webpack:///src/modules/invoices-list/components/request-invoice-button.tsx?b5d9","webpack:///src/modules/breadcrumb/breadcrumb.view.tsx?58b4","webpack:///src/modules/image-list/image-list.tsx?18cb","webpack:///src/modules/product-specification/product-specification.tsx?f393","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///src/modules/interactive-feature-item/interactive-feature-item.view.tsx?d4e3","webpack:///src/modules/invoice-details/invoice-details.view.tsx?5ebe","webpack:///src/modules/cookie-compliance/components/accept-button.tsx?1709","webpack:///src/modules/cookie-compliance/components/links.tsx?807e","webpack:///src/modules/cookie-compliance/cookie-compliance.tsx?5f7e","webpack:///src/modules/image-list/image-list.view.tsx?cab9","webpack:///src/modules/invoices-list/components/pay-invoice-component.tsx?41f4","webpack:///src/modules/breadcrumb/components/link.tsx?b7b8","webpack:///src/modules/breadcrumb/components/separator.tsx?7c35","webpack:///src/modules/breadcrumb/breadcrumb.tsx?3387","webpack:///src/index.ts?c6ae","webpack:///src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9105","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///src/modules/tile-list/tile-list.tsx?f539","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?3d5f","webpack:///src/modules/invoices-list/invoices-list.view.tsx?0243","webpack:///./src/modules/primarybanner-content-block/primarybanner-content-block.view.tsx?6f5f","webpack:///src/modules/tile-list/tile-list.view.tsx?d2bd","webpack:///src/modules/invoices-list/components/make-payment-component.tsx?c79a","webpack:///src/modules/invoices-list/components/invoice-error-component.tsx?2e12","webpack:///src/modules/business-partners/business-partners.view.tsx?677a","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?5927","webpack:///src/modules/invoices-list/helpers/pay-invoices.ts?f98a","webpack:///src/modules/invoice-details/components/invoice-details-header.tsx?d1cb","webpack:///src/modules/invoice-details/components/invoice-details-payment-summary.tsx?a7ab","webpack:///src/modules/invoice-details/components/invoice-details-products.tsx?d808","webpack:///src/modules/invoice-details/helpers/invoice-data.ts?1fa7","webpack:///src/modules/invoice-details/invoice-details.tsx?b5c9","webpack:///src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?6874","webpack:///src/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?28fd","webpack:///src/modules/interactive-feature-item/components/links.tsx?8ab2","webpack:///src/modules/interactive-feature-item/interactive-feature-item.tsx?340f","webpack:///src/modules/interactive-feature-collection/interactive-feature-collection.tsx?2538","webpack:///src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?ba14","webpack:///src/modules/map/map.tsx?e2df","webpack:///src/modules/invoices-list/helpers/invoice-data.ts?6271","webpack:///src/modules/invoices-list/helpers/invoice-status.ts?442a","webpack:///src/modules/cookie-compliance/cookie-compliance.view.tsx?b30b","webpack:///src/modules/product-comparison-button/product-comparison-button.tsx?934c","webpack:///src/modules/invoices-list/helpers/index.ts?7d24","webpack:///src/modules/invoices-list/components/invoices-filter-component.tsx?759c","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/common/waiting.tsx?8365","webpack:///src/modules/fabrikam/views/order-details.view.tsx?2a61","webpack:///src/modules/map/map.view.tsx?cd35","webpack:///src/modules/product-comparison-button/product-comparison-button.view.tsx?68cc","webpack:///./src/modules/event-expiration-block/components/links.tsx?0178","webpack:///./src/modules/event-expiration-block/event-expiration-block.tsx?5e4e","webpack:///src/modules/account-customer-balance/account-customer-balance.view.tsx?35d2","webpack:///src/modules/invoices-list/components/request-invoice-modal.tsx?f430","webpack:///src/modules/invoices-list/invoices-list.tsx?ba10"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","ContentBlockView","props","contentBlockContainer","imageContainer","detailsContainer","title","text","links","image","Module","Object","assign","Node","ContentCardLinks","map","cta","index","btnClass","key","role","linkText","href","linkUrl","destinationUrl","ariaLabel","target","openInNewTab","undefined","rel","ContentBlock","render","heading","this","config","contentBlockTitle","app","eventTitle","Heading","headingTag","tag","newImg","src","eventBannerImageURL","altText","caption","fallBackSrc","height","imageSettings","width","imageProps","gridSettings","context","request","eventSchedule","sellingPeriodDescription","pickupDateTime","pickupAddress","paraText","eventDescription","obj","backToShoppingCustomURL","push","contentBlockLinks","length","LinksComponent","contentBlockText","Msdyn365","contentBlockImage","contentBlockviewProps","_objectSpread","moduleClass","moduleProps","classnames","renderView","buildReviewCard","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","state","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","ReviewsListview","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","RequestInvoiceButton","onClicked","requestInvoiceButtonLabel","innerReference","Button","onClick","innerRef","BreadCrumbView","root","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","separator","link","telemetry","ImageList","constructor","handleParagraphChange","event","images","paragraph","value","_renderImageListItems","imageList","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","disableLazyLoad","item","_image$imageSettings","_link$linkText","imageLink","imageLinkText","imageLinkAriaLabel","loadFailureBehavior","requestContext","editProps","onEdit","linkAltText","linkAriaLabel","_heading$tag","imageListTitle","viewProps","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","ProductSpecification","super","handleHeadingChange","_toggle","drawerListId","setState","isDrawerOpen","data","catalogId","reaction","product","result","RecordId","actionInput","AttributesForSelectedVariantInput","actionContext","apiSettings","channelId","getAttributesForSelectedVariant","catch","message","debug","shouldComponentUpdate","nextProps","nextState","productSpecificationData","isAccrodion","displayStyle","handleText","ProductSpecificationTableProps","ProductSpecificationTableBodyProps","productSpecificationResult","_createDrawerBody","_createTableBody","content","_renderProductCell","Name","accordionItemContainer","_product$Name","Drawer","collapseProps","timeout","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","BooleanValue","resources","trueValueText","falseValueText","__decorate","observer","Iframe","iframeRef","isConsentGiven","cookies","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","targetURL","iframeAriaLabel","ref","MagicNumber","FeatureItemViewComponent","isMosaic","featureItem","indexItem","itemCounter","renderMosaic","thisProps","interactiveFeatureCollectionMosaicContainer","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","renderCarousel","InvoiceDetailsView","products","paymentDetails","payInvoiceError","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","type","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","contentAction","etext","editableLink","additionalProperties","onTelemetryClick","onTextChange","CookieCompliance","getTelemetryObject","telemetryPageName","friendlyName","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","bind","componentDidMount","acceptCookiesAriaLabel","moduleConfig","MsDyn365","isBrowser","onDismiss","CookieComplianceBanner","AlertProps","color","fade","Content","ArrayExtensions","hasElements","acceptButton","setConsentCookie","location","reload","imageListView","indexKey","PayInvoiceComponentActions","async","_event","setDisabled","payInvoices","invoice","errorState","onError","reference","onClickHandler","PayInvoiceComponent","msdyn365Commerce","createComponent","component","disabled","useState","createElement","payInvoiceButtonAriaLabel","canBePaid","payInvoiceButtonText","Link","noclick","attribute","itemProp","Separator","Breadcrumb","_pageType","urlTokens","pageType","_getRootLink","_getCustomBreadcrumbLinks","itemPosition","keyIndex","toString","_getCategoryHierarchy","categoryHierarchy","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","find","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","url","requestUrl","hideProductName","_goBack","window","history","back","_getPDPBackButton","query","document","referrer","backToResultsText","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","breadcrumbType","linkSeparator","breadcrumbViewProps","isMobileView","viewport","_window","device","Type","innerWidth","sm","md","getViewport","onSelectAllHandler","isSelected","invoices","onChange","InvoicesTableComponent","isMobile","setIsMobile","updateViewport","addEventListener","rowClassName","headerClassName","InvoicesTableHeaderComponent","typeName","id","isSelectedAll","all","isAdmin","customer","IsB2bAdmin","onSelectAll","InvoicesTableRowComponent","invoiceReferences","invoiceButtonReferences","Number","payInvoiceReferences","payInvoiceButtonReferences","onRequestInvoice","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","_categoryImage$imageS","ImageData","Image","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_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","_renderMenu","onFocus","hoverEffect","arguments","isParent","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","slots","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","IFrameView","ContainerItemsComponent","isLoadingClassName","items","CheckoutExpressPaymentContainerView","_ref2","checkoutPlainContainerProps","isReady","waiting","InvoiceListView","invoiceRequestModal","pagination","tileListView","tileItem","MakePaymentComponentActions","buttonReferences","input","MakePaymentComponent","hasInvoices","makePaymentButtonAriaLabel","makePaymentButtonText","InvoiceErrorComponent","messageHeader","errorMessage","otherError","showError","payInvoiceErrorModalOpen","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","cartUrl","setPayInvoiceErrorModalClose","errorMessages","Fragment","Alert","assertive","Modal","toggle","ModalHeader","ModalBody","ModalFooter","businessPartnersView","businessPartnersProps","backToBusinessPartnersLink","businessPartnersHeading","businessPartnersTable","businessPartnerUsersTable","interactiveFeatureCollectionView","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionDesktopItems","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","status","errorDetails","LocalizedMessage","errorCode","ErrorResourceId","getUrlSync","InvoiceDetailsHeaderComponent","invoiceDetails","invoiceNumberText","invoiceIdLabel","replace","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","formatShortDate","cultureFormatter","formatDate","year","month","day","invoiceDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","invoicePlacedByLabel","customerName","invoiceAmountDueText","amount","amountDue","currencyCode","formatCurrency","formatAmount","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","totalDiscount","label","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","quantity","Quantity","productUrl","ProductName","getProductPageUrlSync","_renderProductImage","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","primaryImageUrl","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","Id","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","InvoicePaidStatus","Paid","InvoiceDetails","_onAddToCartFailed","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","_renderHeader","_renderProducts","_renderPaymentDetails","_renderInvoiceErrors","_className","productInputs","ProductInput","getSimpleProductsAction","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","errorClassName","switchCheckedState","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","CheckoutExpressPaymentContainer","_this$props$data$chec","moduleClassName","_getItems","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","checkout","shippingAddressFromExpressCheckout","_this$props$data$chec2","isExpressPaymentModulesReady","includes","_this$props$data$chec3","_this$props$data$chec4","_this$props$data$chec5","_this$props$data$chec6","_this$props$data$chec7","extensionPropertyKey","paymentTenderType","isModuleReady","property","Key","Value","_this$props$data$chec8","isExpressCheckoutApplied","checkoutExpressPaymentSectionLoadingMessage","shouldHideExpressPaymentContainerClassName","classname","WaitingComponent","_renderMsdyn365Text","InteractiveFeatureCollectionLinks","InteractiveFeatureItem","_this$props$config$li","featureItemLinks","_createParagraph","_renderImage","tabindex","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","moduleType","imagePropertyName","InteractiveFeatureCollection","itemsCounter","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","_getFeatureItem","onRequestSpecificInvoice","requestInvoiceButtonReference","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","setShowActions","shouldShowActions","getMobileRowCells","onSelectLine","getInvoiceDetailsPageUrlSync","invoiceRowArialabel","format","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","showActions","actionsContainerClassName","payInvoiceClassName","invoiceRequestButtonLabel","extraActionsPopup","rowCells","getDesktopRowCells","isCurrentUser","AccountNumber","customerAccountNumber","createRef","payInvoiceButtonReference","invoiceCurrentUser","Map","mapRef","_initMap","channel","storeSelectorStateManager","isMapApiLoaded","Microsoft","Maps","credentials","BingMapsApiKey","pushpinAccessible","Events","addHandler","setSelectedStoreLocationId","_updateMap","_this$props$data$stor","_storeSelectorStateMa","pushpinOptions","orgUnitStoreInformation","selectedStoreLocationId","mapLocation","entities","clear","pushpins","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","entries","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","Latitude","Longitude","isSelectedLocation","OrgUnitNumber","options","_getPushpinOptions","pushpin","Pushpin","Location","handleClickEvent","unshift","currentLocation","setView","center","bounds","LocationRect","fromShapes","setOptions","orgUnitNumber","showIndex","size","selectionColor","icon","_getSvgIcon","_this$props$data$stor2","BingMapsEnabled","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","_this$props$data$stor6","_this$props$context","_this$props$context$a","_this$props$context$a2","_this$props$context$a3","lang","market","ChannelCountryRegionISOCode","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$stor10","shouldDisplayMap","listMapViewState","displayMap","ModuleProps","show","Header","MapProps","observable","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","Unpaid","invoiceStatusUnpaid","PartiallyPaid","invoiceStatusPartiallyPaid","invoiceStatusPaid","CookieComplianceView","ProductComparisonButton","PureComponent","_addToProductComparison","ProductComparisonItem","ProductComparisonState","instance","addItem","_removeFromProductComparison","removeItemById","comparisonItemId","_getNewState","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","productComparisonPreview","isDisabled","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_items$filter","getCatalogId","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","Error","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","useCallback","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","SearchBar","Component","onSearchTextChange","ev","searchText","onSearch","handleKeyUp","KeyCodes","Enter","searchPlaceholderLabel","placeholder","onKeyUp","DataGrid","renderGridHeader","columns","column","reactKey","renderGridRow","_column$onRender","fieldName","onRender","call","loadDataInternal","user","isAuthenticated","loadData","isLoading","_unused","hasError","paging","loadMore","sortData","sorting","ascending","sort","item1","item2","value1","value2","compareResult","filterData","c","isSearchable","columnValue","indexOf","trim","getDataToDisplay","itemsCount","pageSize","slice","hasMore","defaultSorting","genericErrorMessage","loadingLabel","businessPartnerLoadMore","noDataMessage","BusinessPartnerUsersTable","getColumns","businessUserTableNameHeadingText","businessUserTableEmailHeadingText","businessUserTableSpendingLimitHeadingText","renderSelectButton","businessPartnerUser","onSelect","select","getBusinessPartnerUsers","BusinessPartnersDataActions","getUsersAsync","callerContext","bypassCache","queryResultSettings","businessPartner","BusinessPartnerId","StatusValue","FirstName","LastName","spendingLimitStr","SpendingLimit","businessPartnerSearchCustomer","BusinessPartnersTable","businessPartnerName","getBusinessPartners","getManagedBusinessPartnersAsync","businessPartnerSearchCompany","BusinessPartners","onSelectBusinessPartner","selectedBusinessPartner","onSelectBusinessPartnerUser","setAccountSelectionCookie","homeUrl","removeAccountSelectionCookie","Waiting","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","channelReferenceId","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","_ref3","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","shipping","tax","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderDetailsView","_ref9","viewModes","tableViewActions","table","loading","orderInfomation","orderSummary","payment","help","MapHeader","MapView","ProductComparisonButtonViewFunctionalComponent","eventExpirationText","split","join","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","_focusElement$current","searchEntered","searchEnteredHandler","updatedInvoices","isNullOrEmpty","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","horizontalPosition","verticalPosition","autoFocus","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isPageLoaded","isInvoiceRequestModalOpen","_customerBalance$resu","_customerBalance$resu2","_heading$text","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","_renderInvoiceRequestModal","_renderInvoicesFilter","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","getCurrentAsync","getCustomer","GetCustomerInput","CustomerId","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","tableClassName","newErrorState","_newErrorState$errorR","errorHost","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleId","moduleTypeName","navigationUrl","_this$state$selectedB","invoiceErrorMessageHeader","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","Email","_this$state$selectedB2","invoiceId","_this$props$data$b2bU","_this$props$data$b2bU2","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","requestInvoiceCopyAsync","BusinessPartnerOperationDeliveryType","specificInvoice"],"mappings":"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","file":"static/js/7.f5033fc7a8a0733b911a.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './components';\nexport * from './helpers';\nexport * from './invoices-list';\nexport * from './invoices-list.data';\nexport * from './invoices-list.props.autogenerated';\nexport * from './invoices-list.view';\n","/*!\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","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './event-expiration-block';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image } = props;\r\n return (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentBlockView;\r\n","import * as React from 'react';\r\nimport { ILinksData } from '../primarybanner-content-block.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n}\r\n\r\nconst ContentCardLinks: React.FC = ({ links }) => (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return (\r\n {cta.linkText}\r\n );\r\n })}\r\n
\r\n);\r\n\r\nexport default ContentCardLinks;","/* eslint-disable no-irregular-whitespace */\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport LinksComponent from './components/links';\r\nimport { IPrimarybannerContentBlockProps} from './primarybanner-content-block.props.autogenerated';\r\nimport {IPrimarybannerContentBlockData} from './primarybanner-content-block.data';\r\n\r\nexport interface IContentBlockViewProps extends IPrimarybannerContentBlockProps {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer:INodeProps;\r\n detailsContainer:INodeProps;\r\n\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IHomeBannerModuleProps extends IPrimarybannerContentBlockProps { }\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n\r\n\r\n var { heading, image, links, className} = this.props.config;\r\n links = [];\r\n const contentBlockTitle = heading && this.props.app.config.eventTitle && ;\r\n\r\n var newImg: Msdyn365.IImageData = {\r\n src: this.props.app.config.eventBannerImageURL,\r\n altText: this.props.app.config.eventTitle,\r\n caption: image?.caption,\r\n fallBackSrc: image?.fallBackSrc,\r\n height: image?.height,\r\n imageSettings: image?.imageSettings,\r\n title: this.props.app.config.eventTitle,\r\n width: image?.width\r\n };\r\n\r\n const imgSettings = {\r\n \"disableLazyLoad\":true,\r\n \"quality\":80,\r\n \"lazyload\":true,\r\n \"viewports\":{\r\n \"xs\":{\r\n \"w\":509,\r\n \"h\":303,\r\n \"q\":\"w=509&h=303&q=80&m=6&f=jpg\"\r\n },\r\n \"sm\":{\r\n \"w\":762,\r\n \"h\":471,\r\n \"q\":\"w=762&h=471&q=80&m=6&f=jpg\"\r\n },\r\n \"md\":{\r\n \"w\":1110,\r\n \"h\":557,\r\n \"q\":\"w=1110&h=557&q=80&m=6&f=jpg\"\r\n },\r\n \"lg\":{\r\n \"w\":935,\r\n \"h\":471,\r\n \"q\":\"w=935&h=471&q=80&m=6&f=jpg\"\r\n },\r\n \"xl\":{\r\n \"w\":935,\r\n \"h\":471,\r\n \"q\":\"w=935&h=471&q=80&m=6&f=jpg\"\r\n }\r\n }\r\n };\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: newImg && imgSettings\r\n };\r\n\r\n var eventSchedule = \"\";\r\n eventSchedule += `

` +\r\n `Selling Period` +\r\n ` - ${this.props.app.config.sellingPeriodDescription}`+\r\n `

`;\r\n eventSchedule += `

` +\r\n `Pick up Date & Time` +\r\n ` - ${this.props.app.config.pickupDateTime}`+\r\n `

`;\r\n eventSchedule += `

` +\r\n `Address` +\r\n ` - ${this.props.app.config.pickupAddress}`+\r\n `

`;\r\n\r\n const paraText = `

${this.props.app.config.eventDescription}

` +\r\n `

 

` +\r\n `
` +\r\n `

Event Details

` +\r\n `${eventSchedule}` +\r\n `

` +\r\n `
`;\r\n\r\n var obj:ILinksData = {\r\n \"linkUrl\": {\r\n \"destinationUrl\": this.props.app.config.backToShoppingCustomURL\r\n },\r\n \"linkText\": \"SHOP NOW\",\r\n \"ariaLabel\": \"SHOP NOW\"\r\n };\r\n links.push(obj);\r\n\r\n const contentBlockLinks = links && links.length > 0 && ;\r\n const contentBlockText = paraText && ;\r\n const contentBlockImage = newImg && ;\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: {\r\n ...this.props,\r\n \"platform\":{\r\n \"layout\":\"left-right\"\r\n }\r\n },\r\n className: classnames('ms-content-block homeContainer textplacement__right imageplacement__left', className)\r\n },\r\n imageContainer: {className: 'ms-content-block__image'},\r\n detailsContainer: {className: 'ms-content-block__details'}\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default ContentBlock;\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 { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbViewProps } from './breadcrumb';\n\nconst BreadCrumbView: React.FC = props => {\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem, separator } = props;\n if (!root && !links && !backButton) {\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\n return null;\n }\n return (\n \n \n {root && (\n \n {root}\n {links && separator}\n \n )}\n {backButton && {backButton}}\n {links &&\n links.map((link, index) => (\n \n \n {link}\n {links[index + 1] && separator}\n \n \n ))}\n \n \n );\n};\n\nexport default BreadCrumbView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\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 { 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 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 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 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 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\n productSpecificationResult: isAccrodion\n ? productSpecificationData && this._createDrawerBody(data)\n : productSpecificationData && 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 return 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 private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n return 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\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 { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\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 { IInvoiceDetailsViewProps } from './invoice-details';\n\nexport const InvoiceDetailsView: React.FC = props => {\n const { header, products, paymentDetails, payInvoiceError } = props;\n\n return (\n \n {header}\n {products}\n {paymentDetails}\n {payInvoiceError}\n \n );\n};\n\nexport default InvoiceDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILink {\n className?: string;\n text?: string;\n href?: string;\n ariaLabel?: string;\n index: string;\n noclick?: boolean;\n telemetryContent: ITelemetryContent;\n}\n\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent }) => {\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n\n const linkText = text !== undefined ? text : '';\n payLoad.contentAction.etext = linkText;\n\n // Construct telemetry attribute to render\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n\n return (\n \n {linkText}\n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface ISeparator {\n separator: string;\n}\n\nexport const Separator: React.FC = ({ separator }) => (\n \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 from '@msdyn365-commerce/core';\nimport { ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBreadcrumbData } from './breadcrumb.data';\nimport { IBreadcrumbProps, ILinksData } from './breadcrumb.props.autogenerated';\nimport { Link } from './components/link';\nimport { Separator } from './components/separator';\n\nexport interface IBreadcrumbViewProps extends IBreadcrumbProps {\n root?: React.ReactNode;\n links?: React.ReactNode[];\n backButton?: React.ReactNode;\n separator?: React.ReactNode;\n BreadcrumbContainer: IModuleProps;\n BreadcrumbList: INodeProps;\n BreadcrumbListItem: INodeProps;\n}\n\n/**\n *\n * Breadcrumb component.\n * @extends {React.PureComponent>}\n */\nclass Breadcrumb extends React.PureComponent> {\n private readonly _pageType: string | undefined = this.props.context.request.urlTokens.pageType;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { className } = this.props.config;\n let rootLink = null;\n let breadcrumbLinks = null;\n let backButtonComponent = null;\n rootLink = this._getRootLink();\n const itemPosition = rootLink ? 1 : 0;\n if (this._pageType === 'Category') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n breadcrumbLinks = this._getCategoryHierarchy(itemPosition);\n }\n } else if (this._pageType === 'Product') {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n if (!breadcrumbLinks) {\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n if (breaCrumbType === 'category') {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'categoryAndBack') {\n backButtonComponent = this._getPDPBackButton();\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n if (breaCrumbType === 'back') {\n backButtonComponent = this._getPDPBackButton();\n if (backButtonComponent === null) {\n breadcrumbLinks = this._getPDPLinks(itemPosition);\n }\n }\n }\n } else {\n breadcrumbLinks = this._getCustomBreadcrumbLinks(itemPosition);\n }\n const linkSeparator = ;\n\n const breadcrumbViewProps = {\n ...this.props,\n BreadcrumbContainer: {\n moduleProps: this.props,\n className: classnames('ms-breadcrumb', className),\n tag: 'nav',\n role: 'navigation'\n },\n BreadcrumbList: {\n tag: 'ol' as NodeTag,\n className: 'ms-breadcrumb_list'\n },\n BreadcrumbListItem: {\n tag: 'li',\n className: 'ms-breadcrumb_item'\n },\n root: rootLink,\n links: breadcrumbLinks,\n backButton: backButtonComponent,\n separator: linkSeparator\n };\n return this.props.renderView(breadcrumbViewProps) as React.ReactElement;\n }\n\n private readonly _getRootLink = (): JSX.Element | null => {\n const { root } = this.props.config;\n if (!root || !root.linkUrl || !root.linkUrl.destinationUrl) {\n this.props.context.telemetry.error('BreadCrumb link url content is empty, link wont render');\n return null;\n }\n return (\n \n );\n };\n\n private readonly _getCustomBreadcrumbLinks = (itemPosition: number): JSX.Element[] | null => {\n const { links } = this.props.config;\n\n if (!links || links.length === 0) {\n this.props.context.telemetry.error('BreadCrumb links content is empty, links wont render');\n return null;\n }\n const defaultValueToSubtract = 1;\n return links.map((value: ILinksData, index: number) => {\n itemPosition++;\n const keyIndex = index;\n return index !== links.length - defaultValueToSubtract ? (\n \n ) : (\n
\n {value.linkText}\n
\n );\n });\n };\n\n private readonly _getCategoryHierarchy = (itemPosition: number): JSX.Element[] | null => {\n const { data } = this.props;\n const categoryHierarchy = data.categoryHierarchy.result;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category Hierarchy content is empty, module wont render');\n return null;\n }\n return categoryHierarchy.map((value: CategoryHierarchy, index: number) => {\n itemPosition++;\n\n const friendlyName = this._getFriendlyName(this.props.context.request.locale, value.NameTranslations);\n\n return (\n \n );\n });\n };\n\n /**\n * The function to get translation name for the locale.\n * @param locale - The locale information.\n * @param nameTranslations - The name translations names.\n * @returns - The translation name for the locale.\n */\n private readonly _getFriendlyName = (locale: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n // If friendly name for current locale is null, should use default locale.\n if (nameTranslation === undefined && ArrayExtensions.hasElements(nameTranslations)) {\n nameTranslation = nameTranslations[0];\n }\n\n return nameTranslation?.Text;\n };\n\n private readonly _getPDPLinks = (itemPosition: number): JSX.Element[] | null => {\n const { data, config } = this.props;\n const categoryHierarchy = data.categoryPaths.result;\n const product = data.product.result;\n const url = this.props.context.request.url.requestUrl.href;\n if (!categoryHierarchy) {\n this.props.context.telemetry.error('Category path content is empty for the product');\n return null;\n }\n const links: JSX.Element[] = [];\n\n categoryHierarchy.map((value: ICategoryUrl, index: number) => {\n itemPosition++;\n links.push(\n \n );\n });\n if (product && !config.hideProductName) {\n itemPosition++;\n links.push(\n \n );\n }\n return links;\n };\n\n private readonly _goBack = (): void => {\n window.history.back();\n };\n\n private readonly _getPDPBackButton = (): JSX.Element | null => {\n const isBackAllowed =\n this.props.context && this.props.context.request && this.props.context.request.query && this.props.context.request.query.back;\n if (!isBackAllowed) {\n return null;\n }\n if (MsDyn365.isBrowser && (document.referrer === '' || window.history.length < 2)) {\n return null;\n }\n return (\n \n {this.props.resources.backToResultsText}\n \n );\n };\n}\n\nexport default Breadcrumb;\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../helpers/invoice-data';\nimport { IInvoiceErrorState } from '../../invoices-list';\nimport { IInvoicesTableHeaderResources, InvoicesTableHeaderComponent } from './components/invoices-table-header-component';\nimport { IInvoicesTableRowResources, InvoicesTableRowComponent } from './components/invoices-table-row-component';\n\ninterface IInvoicesTableData {\n invoices: InvoiceModel[];\n customer: Customer;\n}\n\nexport interface IInvoicesTableResources extends IInvoicesTableHeaderResources, IInvoicesTableRowResources {}\n\nexport interface IInvoicesTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n invoiceButtonReferences?: React.RefObject[];\n payInvoiceButtonReferences?: React.RefObject[];\n resources: IInvoicesTableResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableComponent extends IComponent {}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst getViewport = (context: ICoreContext): GridSize => {\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 (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\nconst isMobileView = (context: ICoreContext) => {\n const viewport = getViewport(context);\n return viewport === 'xs' || viewport === 'sm';\n};\n\n/**\n * On select all function.\n * @param props -Invoice table props.\n * @returns On change.\n */\nconst onSelectAllHandler = (props: IInvoicesTableProps) => (isSelected: boolean) => {\n props.data.invoices.forEach(invoice => {\n invoice.isSelected = isSelected;\n });\n props.onChange();\n};\n\nconst InvoicesTable: React.FC = (props: IInvoicesTableProps): JSX.Element => {\n const [isMobile, setIsMobile] = useState(isMobileView(props.context));\n\n const updateViewport = () => {\n setIsMobile(isMobileView(props.context));\n };\n\n if (typeof window !== undefined && window.addEventListener) {\n window.addEventListener('resize', updateViewport);\n }\n const rowClassName = `${props.className}__row`;\n const headerClassName = `${props.className}__header`;\n\n return (\n \n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\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 { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\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 { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\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 { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IContentBlockViewProps } from './primarybanner-content-block';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const { contentBlockContainer, imageContainer, detailsContainer, title, text, links, image } = props;\r\n return (\r\n \r\n \r\n {image}\r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContentBlockView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n const hasInvoices = ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Alert, Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IInvoiceErrorProps extends IComponentProps {\n messageHeader?: string;\n errorMessage?: string;\n otherError?: string;\n showError: boolean;\n payInvoiceErrorModalOpen: boolean;\n\n errorDialogHeader: string;\n errorDialogBodyErrorTitle: string;\n errorDialogBodyErrorDescription: string;\n errorDialogFooterGoToCartButtonText: string;\n errorDialogFooterCancelButtonText: string;\n cartUrl: string;\n\n setPayInvoiceErrorModalClose(): void;\n}\n\nexport interface IInvoiceErrorComponent extends IComponent {}\n\nexport const InvoiceError: React.FC = ({\n messageHeader,\n errorMessage,\n otherError,\n showError,\n payInvoiceErrorModalOpen,\n errorDialogHeader,\n errorDialogBodyErrorTitle,\n errorDialogBodyErrorDescription,\n errorDialogFooterGoToCartButtonText,\n errorDialogFooterCancelButtonText,\n cartUrl,\n setPayInvoiceErrorModalClose\n}) => {\n const errorMessages: (string | undefined)[] = [];\n\n if (otherError) {\n errorMessages.push(otherError);\n } else {\n errorMessages.push(errorMessage);\n }\n\n const className = 'msc-pay-invoice-error-dialog';\n\n return (\n <>\n 0} color='danger' assertive aria-label={messageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
\n {message}\n
\n );\n })}\n
\n \n \n {errorDialogHeader}\n \n \n
\n
{errorDialogBodyErrorTitle}
\n
{errorDialogBodyErrorDescription}
\n
\n
\n \n \n {errorDialogFooterGoToCartButtonText}\n \n \n {errorDialogFooterCancelButtonText}\n \n \n
\n \n );\n};\n\n// @ts-expect-error\nexport const InvoiceErrorComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'InvoiceError',\n { component: InvoiceError }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { 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 return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IInteractiveFeatureCollectionViewProps } from './interactive-feature-collection';\n\n/**\n * Feature Collection View.\n * @param props - Feature Collection view props.\n * @returns Feature Collection View.\n */\nexport const interactiveFeatureCollectionView: React.FC = props => {\n const {\n title,\n interactiveFeatureCollectionHeading,\n interactiveFeatureCollectionContainer,\n interactiveFeatureCollectionDesktopContainer,\n interactiveFeatureCollectionDesktopItems,\n interactiveFeatureCollectionMobileItems,\n interactiveFeatureCollectionMobileContainer,\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer\n } = props;\n return (\n \n {title}\n {interactiveFeatureCollectionDesktopItems}\n \n \n {interactiveFeatureCollectionMobileItems.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `interactive-feature-carousel-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n \n );\n};\n\nexport default interactiveFeatureCollectionView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n lg: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n xl: { q: 'w=315&h=315&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.RecordId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.RecordId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = {};\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.RecordId)\n .map(\n product =>\n new ProductInput(\n product.RecordId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(): void {\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\nexport interface IInvoicesTableHeaderResources {\n invoicesText: string;\n invoiceNumberText: string;\n invoiceDateMobileText: string;\n invoiceDateText: string;\n invoiceUsersText: string;\n invoiceAmountText: string;\n invoiceDueDateText: string;\n invoiceAmountDueText: string;\n invoiceStatusText: string;\n invoiceActionsText: string;\n invoiceListSelectAllRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isSelectedAll: boolean;\n isMobile: boolean;\n isAdmin: boolean;\n\n resources: IInvoicesTableHeaderResources;\n\n onSelectAll(isSelected: boolean): void;\n}\n\nexport interface IInvoicesTableHeaderComponent extends IComponent {}\n\nconst getDesktopHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoiceNumberText}\n {resources.invoiceDateText}\n {props.isAdmin ? {resources.invoiceUsersText} : null}\n {resources.invoiceAmountText}\n {resources.invoiceDueDateText}\n {resources.invoiceAmountDueText}\n {resources.invoiceStatusText}\n {resources.invoiceActionsText}\n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoicesText}\n {resources.invoiceDateMobileText}\n \n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\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 { IModuleStateProps } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n }\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage }\n } = this.props;\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureCollectionProps, ITitleData } from './interactive-feature-collection.props.autogenerated';\n\n/**\n * Interactive Feature Collection view props.\n */\nexport interface IInteractiveFeatureCollectionViewProps extends IInteractiveFeatureCollectionProps<{}> {\n title: React.ReactNode;\n interactiveFeatureCollectionHeading: INodeProps;\n interactiveFeatureCollectionContainer: IModuleProps;\n interactiveFeatureCollectionDesktopContainer: INodeProps;\n interactiveFeatureCollectionDesktopItems: React.ReactNode[];\n interactiveFeatureCollectionMobileContainer: INodeProps;\n interactiveFeatureCollectionMobileItems: React.ReactNode[];\n singleSlideCarouselComponentProps: INodeProps;\n singleSlideCarouselItemContainer: INodeProps;\n}\n\n/**\n *\n * InteractiveFeatureCollection component.\n * @extends {React.PureComponent>}\n */\nexport class InteractiveFeatureCollection extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n\n private static _getFeatureItem(item: React.ReactNode, index: number, itemsCounter: number): React.ReactNode {\n const keyIndex = `interactive-feature-mosaic-item__${index}`;\n return (\n \n {React.cloneElement(item as React.ReactElement, { indexItem: index, itemCounter: itemsCounter, isMosaic: true })}\n \n );\n }\n\n public constructor(props: IInteractiveFeatureCollectionProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const interactiveItems = this.props.slots.interactiveFeatureItems;\n const itemsFeatureCounter = interactiveItems.length;\n const singleSlideCarouselComponentProps: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n const initItemsFeatureCounter = 0;\n const viewProps = {\n ...this.props,\n title: InteractiveFeatureCollection._createHeading(title),\n interactiveFeatureCollectionHeading: {\n className: 'ms-interactive-feature-collection__heading'\n },\n interactiveFeatureCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-interactive-feature-collection', className)\n },\n interactiveFeatureCollectionDesktopContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-desktop'\n },\n interactiveFeatureCollectionMobileContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mobile'\n },\n singleSlideCarouselComponentProps,\n singleSlideCarouselItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel',\n role: 'listitem'\n },\n interactiveFeatureCollectionMobileItems: this.props.slots.interactiveFeatureItems,\n interactiveFeatureCollectionDesktopItems:\n itemsFeatureCounter > initItemsFeatureCounter &&\n interactiveItems.map((item: React.ReactNode, index: number) =>\n InteractiveFeatureCollection._getFeatureItem(item, index, itemsFeatureCounter)\n )\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default InteractiveFeatureCollection;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject\n) => () => {\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, index, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n const payInvoiceClassName = `${props.className}__pay-invoice`;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n const requestInvoiceButtonReference: React.RefObject = React.createRef();\n const payInvoiceButtonReference: React.RefObject = React.createRef();\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n {customer.IsB2bAdmin ? (\n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \n ) : null}\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n \n {formatDate(props.context, invoice.dueDate)}\n \n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n \n {getInvoiceStatusText(props.resources, invoice.status)}\n \n \n \n \n \n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: { invoiceViewDetailsButtonAriaLabel, invoiceViewDetailsButtonText, invoiceActionsButtonTextAriaLabel },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n return (\n
\n \n {showActions && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n \n \n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.PureComponent> {\n @observable public map: Microsoft.Maps.Map | undefined;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n this._initMap();\n this._updateMap();\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const shouldDisplayMap = storeSelectorStateManager?.listMapViewState.displayMap;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n });\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n await storeSelectorStateManager.setSelectedStoreLocationId(undefined);\n });\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true });\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- Time out.\n }, 500);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.subscribe({\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n });\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(this.props.context.request).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request).removeItemById(this.state.comparisonItemId);\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(this.props.context.request).hasItemById(\n comparisonItemId\n ),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './invoice-data';\nexport * from './invoice-status';\nexport * from './pay-invoices';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { EnumExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Popover } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IInvoiceStatusResources } from '../helpers/invoice-status';\n\nexport interface IInvoicesFilterResources extends IInvoiceStatusResources {\n invoicesFilterShowAll: string;\n}\n\nexport interface IInvoicesFilterProps extends IComponentProps {\n className: string;\n disabled: boolean;\n\n resources: IInvoicesFilterResources;\n\n currentState: InvoicesFilterState;\n onFilterStateChanged(state: InvoicesFilterState): void;\n}\n\nexport enum InvoicesFilterState {\n ShowAll,\n Paid,\n PartiallyPaid,\n Unpaid\n}\n\nconst getInvoicesFilterStateResources = (filterState: InvoicesFilterState, resources: IInvoicesFilterResources): string => {\n switch (filterState) {\n case InvoicesFilterState.ShowAll:\n return resources.invoicesFilterShowAll;\n case InvoicesFilterState.Paid:\n return resources.invoiceStatusPaid;\n case InvoicesFilterState.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n case InvoicesFilterState.Unpaid:\n return resources.invoiceStatusUnpaid;\n default:\n throw new Error('Failed to retrieve resource description for unknown invoices filter state.');\n }\n};\n\n/**\n * On Click function.\n * @param onStateClick -Invoice filter state function.\n * @param filterState -Invoice filter state.\n * @returns Set Invoice filter state.\n */\nconst onClickHandler = (onStateClick: (filterState: InvoicesFilterState) => void, filterState: InvoicesFilterState) => () => {\n onStateClick(filterState);\n};\n\nconst renderFilterStateItem = (\n filterState: InvoicesFilterState,\n resources: IInvoicesFilterResources,\n className: string,\n onStateClick: (filterState: InvoicesFilterState) => void\n): React.ReactNode => {\n const stateStringRepresentation = InvoicesFilterState[filterState];\n\n return (\n \n );\n};\n\nconst InvoicesFilter: React.FC = (props: IInvoicesFilterProps) => {\n const popoverRef = React.createRef();\n const [popoverState, setPopoverState] = React.useState(false);\n const togglePopover = React.useCallback(() => {\n setPopoverState(!popoverState);\n }, [popoverState]);\n\n const [filterState, setFilterState] = React.useState(props.currentState);\n\n const onFilterStateClick = (clickedState: InvoicesFilterState) => {\n setFilterState(clickedState);\n setPopoverState(false);\n props.onFilterStateChanged(clickedState);\n };\n\n return (\n
\n \n {getInvoicesFilterStateResources(filterState, props.resources)}\n \n \n {EnumExtensions.getEnumValues(InvoicesFilterState).map(state => {\n return renderFilterStateItem(state, props.resources, props.className, onFilterStateClick);\n })}\n \n
\n );\n};\n\nexport const InvoicesFilterComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesFilterProps\n>('InvoicesFilterComponent', { component: InvoicesFilter });\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\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 hasError: boolean;\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\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 hasError: false\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.hasError !== nextState.hasError\n );\n }\n\n public render(): JSX.Element | null {\n const data = this.getDataToDisplay();\n const hasMore = this.hasMore();\n if (this.state.hasError) {\n return {this.props.resources.genericErrorMessage};\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 * 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 if (column.fieldName) {\n return (\n \n {((item as unknown) as { [key: string]: string })[column.fieldName]}\n \n );\n }\n return {column.onRender?.(item)};\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 {\n this.setState({\n isLoading: false,\n hasError: true\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 { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\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 spendingLimitStr: string;\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 return [\n {\n reactKey: 'name',\n name: this.props.resources.businessUserTableNameHeadingText,\n fieldName: 'name',\n isSearchable: true\n },\n {\n reactKey: 'email',\n name: this.props.resources.businessUserTableEmailHeadingText,\n fieldName: 'Email'\n },\n {\n reactKey: 'spendingLimit',\n name: this.props.resources.businessUserTableSpendingLimitHeadingText,\n className: `${this.props.className}__row__column-with-number`,\n fieldName: 'spendingLimitStr'\n },\n {\n reactKey: 'select-button',\n name: '',\n onRender: this.renderSelectButton,\n className: `${this.props.className}__row__column-select-button`\n }\n ];\n };\n\n /**\n * Renders the button to select a business partner user.\n * @param businessPartnerUser - The business partner user to select.\n * @returns - Button component.\n */\n private readonly renderSelectButton = (businessPartnerUser: IBusinessPartnerUserViewModel) => {\n return (\n {\n this.props.onSelect(businessPartnerUser);\n }}\n title={this.props.resources.select}\n aria-label={this.props.resources.select}\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 ...user,\n name: `${user.FirstName} ${user.LastName}`,\n spendingLimitStr: !ObjectExtensions.isNullOrUndefined(user.SpendingLimit)\n ? this.props.context.cultureFormatter.formatCurrency(user.SpendingLimit.toString())\n : ''\n }));\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { BusinessPartner, BusinessPartnersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersResources } from '../business-partners.props.autogenerated';\nimport { DataGrid, IDataGridColumn } from './data-grid';\n\n/**\n * Props of IBusinessPartnersTable.\n */\nexport interface IBusinessPartnersTableProps extends IComponentProps {\n className: string;\n pageSize?: number;\n resources: IBusinessPartnersResources;\n onSelect(businessPartner: BusinessPartner): void;\n}\n\n/**\n * BusinessPartnersTable component.\n */\nexport class BusinessPartnersTable 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 return [\n {\n reactKey: 'name',\n name: this.props.resources.businessPartnerName,\n fieldName: 'Name',\n isSearchable: true\n },\n {\n reactKey: 'select-button',\n name: '',\n onRender: this.renderSelectButton,\n className: `${this.props.className}__row__column-select-button`\n }\n ];\n };\n\n /**\n * Renders the button to select a business partner.\n * @param businessPartner - The business partner to select.\n * @returns - Button component.\n */\n private readonly renderSelectButton = (businessPartner: BusinessPartner) => {\n return (\n {\n this.props.onSelect(businessPartner);\n }}\n title={this.props.resources.select}\n aria-label={this.props.resources.select}\n />\n );\n };\n\n /**\n * Call retail proxy to get business partners.\n * @returns - Business partners.\n */\n private readonly getBusinessPartners = async () => {\n const businessPartners = await BusinessPartnersDataActions.getManagedBusinessPartnersAsync({\n callerContext: this.props.context.actionContext,\n bypassCache: 'get',\n queryResultSettings: {}\n });\n return businessPartners;\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { IBusinessPartnersData } from './business-partners.data';\nimport { IBusinessPartnersProps } from './business-partners.props.autogenerated';\nimport { BusinessPartnerUsersTable } from './components/business-partner-users-table';\nimport { BusinessPartnersTable } from './components/business-partners-table';\n\n/**\n * Props for the module view.\n */\nexport interface IBusinessPartnersViewProps extends IBusinessPartnersProps {\n businessPartnersProps: IModuleProps;\n businessPartnersHeading?: React.ReactNode;\n businessPartnersTable?: React.ReactNode;\n businessPartnerUsersTable?: React.ReactNode;\n backToBusinessPartnersLink?: React.ReactNode;\n}\n\n/**\n * State of BusinessPartners component.\n */\nexport interface IBusinessPartnersState {\n selectedBusinessPartner?: BusinessPartner;\n}\n\n/**\n * The class name root for the module.\n */\nexport const moduleClassName: string = 'ms-business-partners';\n\n/**\n * BusinessPartners component.\n */\nclass BusinessPartners extends React.Component, IBusinessPartnersState> {\n constructor(props: IBusinessPartnersProps) {\n super(props);\n this.state = {};\n }\n\n public componentDidMount() {\n this.props.context.request.cookies.removeAccountSelectionCookie();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessPartnersProps, nextState: IBusinessPartnersState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className, pageSize, businessPartnersHeading }\n } = this.props;\n const viewProps: IBusinessPartnersViewProps = {\n ...this.props,\n businessPartnersProps: {\n moduleProps: this.props,\n className: classname(moduleClassName, className)\n },\n businessPartnersHeading: businessPartnersHeading && businessPartnersHeading.text && (\n \n ),\n businessPartnersTable: !this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n businessPartnerUsersTable: this.state.selectedBusinessPartner ? (\n \n ) : (\n undefined\n ),\n backToBusinessPartnersLink: this.state.selectedBusinessPartner ? (\n {\n this.onSelectBusinessPartner();\n }}\n >\n {this.props.resources.backToBusinessPartnersLink}\n \n ) : (\n undefined\n )\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Event handler of business partner selection.\n * @param businessPartner - Selected business partner.\n */\n private readonly onSelectBusinessPartner = (businessPartner?: BusinessPartner) => {\n this.setState({\n selectedBusinessPartner: businessPartner\n });\n };\n\n /**\n * Event handler of business partner user selection.\n * @param businessPartnerUser - Selected business partner user.\n */\n private readonly onSelectBusinessPartnerUser = (businessPartnerUser: BusinessPartnerUser) => {\n if (businessPartnerUser.AccountNumber) {\n this.props.context.request.cookies.setAccountSelectionCookie(true, businessPartnerUser.AccountNumber);\n const homeUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext);\n if (homeUrl && Msdyn365.msdyn365Commerce.isBrowser) {\n window.location.href = homeUrl;\n }\n }\n };\n}\n\nexport default BusinessPartners;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n
\n \n {message}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\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 { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\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 { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","import * as React from 'react';\r\nimport { ILinksData } from '../event-expiration-block.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n}\r\n\r\nconst ContentCardLinks: React.FC = ({ links }) => (\r\n
\r\n {links.map((cta: ILinksData, index: number) => {\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n return (\r\n {cta.linkText}\r\n );\r\n })}\r\n
\r\n);\r\n\r\nexport default ContentCardLinks;","/* eslint-disable eqeqeq */\r\n/* eslint-disable no-irregular-whitespace */\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport LinksComponent from './components/links';\r\nimport { IEventExpirationBlockProps} from './event-expiration-block.props.autogenerated';\r\nimport {IEventExpirationBlockData} from './event-expiration-block.data';\r\n\r\nexport interface IContentBlockViewProps extends IEventExpirationBlockProps {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: React.ReactNode;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer:INodeProps;\r\n detailsContainer:INodeProps;\r\n}\r\n\r\nexport interface IHomeBannerModuleProps extends IEventExpirationBlockProps { }\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n var { heading, image, links, className} = this.props.config;\r\n links = [];\r\n\r\n const contentBlockTitle = heading && this.props.app.config.eventTitle && ;\r\n\r\n var newImg: Msdyn365.IImageData = {\r\n src: this.props.app.config.eventBannerImageURL,\r\n altText: this.props.app.config.eventBannerImageURL,\r\n caption: image?.caption,\r\n fallBackSrc: image?.fallBackSrc,\r\n height: image?.height,\r\n imageSettings: image?.imageSettings,\r\n title: this.props.app.config.eventTitle,\r\n width: image?.width\r\n };\r\n\r\n const imgSettings = {\r\n \"disableLazyLoad\":true,\r\n \"quality\":80,\r\n \"lazyload\":true,\r\n \"viewports\":{\r\n \"xs\":{\r\n \"w\":509,\r\n \"h\":303,\r\n \"q\":\"w=509&h=303&q=80&m=6&f=jpg\"\r\n },\r\n \"sm\":{\r\n \"w\":762,\r\n \"h\":471,\r\n \"q\":\"w=762&h=471&q=80&m=6&f=jpg\"\r\n },\r\n \"md\":{\r\n \"w\":1110,\r\n \"h\":557,\r\n \"q\":\"w=1110&h=557&q=80&m=6&f=jpg\"\r\n },\r\n \"lg\":{\r\n \"w\":935,\r\n \"h\":471,\r\n \"q\":\"w=935&h=471&q=80&m=6&f=jpg\"\r\n },\r\n \"xl\":{\r\n \"w\":935,\r\n \"h\":471,\r\n \"q\":\"w=935&h=471&q=80&m=6&f=jpg\"\r\n }\r\n }\r\n };\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: newImg && imgSettings\r\n };\r\n\r\n var paraText = this.props.context.app.config.eventExpirationText;\r\n\r\n if(paraText != ''){\r\n paraText = paraText.split(\"{{EventTitle}}\").join(this.props.app.config.eventTitle);\r\n }\r\n\r\n const contentBlockLinks = links && links.length > 0 && ;\r\n const contentBlockText = paraText && ;\r\n const contentBlockImage = newImg && ;\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: contentBlockLinks,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: {\r\n ...this.props,\r\n \"platform\":{\r\n \"layout\":\"left-right\"\r\n }\r\n },\r\n className: classnames('ms-content-block homeContainer textplacement__right imageplacement__left', className)\r\n },\r\n imageContainer: {className: 'ms-content-block__image'},\r\n detailsContainer: {className: 'ms-content-block__details'}\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default ContentBlock;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceViewProps } from './account-customer-balance';\n\nexport default (props: IAccountCustomerBalanceViewProps) => {\n const {\n heading,\n accountSectionHeading,\n creditSummarySectionHeading,\n accountLabels,\n accountValues,\n creditSummaryLabels,\n creditSummaryValues,\n homeButton,\n actions,\n requestStatementModal,\n availableCredit,\n balanceOwed,\n creditExcess\n } = props;\n\n return (\n \n {heading}\n {requestStatementModal}\n {actions}\n {accountSectionHeading}\n
\n {accountLabels}\n {accountValues}\n
\n {creditSummarySectionHeading}\n
\n {creditSummaryLabels}\n {creditSummaryValues}\n {availableCredit}\n {balanceOwed}\n {creditExcess}\n
\n {homeButton}\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 { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(renderInvoiceOptions(updatedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className = '', heading },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n
{invoicesListDescTitle}
\n
{amountText}
\n
{countText}
\n
\n
\n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass)}\n {this._renderInvoiceRequestButton()}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const filterClassName = `${className}__filter`;\n return (\n \n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n\n BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(context, b2bUserId, invoiceId, BusinessPartnerOperationDeliveryType.Email);\n\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\n"],"sourceRoot":""}