{"version":3,"file":"static/js/15.114da31d1ed5f169350c.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/toysrus/views/order-confirmation.view.tsx?6436","webpack://Msdyn365.Commerce.Online/./src/themes/toysrus/views/search-result-container.view.tsx?e70f","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance/account-customer-balance.view.tsx?70d2","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/link.tsx?d232","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/components/separator.tsx?92bb","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.tsx?efcc","webpack://Msdyn365.Commerce.Online/./src/modules/breadcrumb/breadcrumb.view.tsx?4b3d","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.tsx?5602","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.tsx?96a6","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-collection/interactive-feature-collection.view.tsx?db52","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-template-list.view.tsx?46b6"],"sourcesContent":["import { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHelp, IOrderSummary } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common';\r\nimport { IGroup, IGroupDelivery, IGroups } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/../../common/get-sales-line';\r\nimport { IOrderConfirmationViewProps } from '@msdyn365-commerce-modules/order-management/src/modules/order-confirmation/./order-confirmation';\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n receiptEmail,\r\n createdDate,\r\n channelReferenceId\r\n}) => (\r\n \r\n {createdDate}\r\n {channelReferenceId}\r\n {receiptEmail}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine/*, buyAgainButton*/ }) => (\r\n {salesLine}\r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n //count,\r\n //processing,\r\n address,\r\n //trackingInfo,\r\n pickupDateTimeslot\r\n}) => (\r\n \r\n {heading}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {delivery && delivery.shippingItemsToYou}\r\n {salesLines && (\r\n \r\n {salesLines.map((salesLine: ISalesLine) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group: IGroup, index: number) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({\r\n orderSummaryProps,\r\n heading,\r\n subtotal,\r\n shipping,\r\n tax,\r\n totalAmount,\r\n earnedPoints\r\n}) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\n//ut-ext extension to add coupons info on order confirmation page\r\nexport const OrderConfirmationPayment: React.FC = (props) => {\r\n\r\n const { paymentMethodsProps, title, methods } = props.payment!;\r\n\r\n const couponsNode = React.useMemo(() => {\r\n let couponCodes: string[] = [];\r\n props.salesOrder?.SalesLines?.forEach(sl => {\r\n if (sl.IsVoided || sl.IsReturnByReceipt || !((sl.DiscountAmount || 0) > 0)) return;\r\n \r\n sl?.DiscountLines?.forEach(dl => {\r\n if(dl.DiscountCode && couponCodes.indexOf(dl.DiscountCode!) === -1)\r\n couponCodes.push(dl.DiscountCode!)\r\n });\r\n })\r\n \r\n const coupons = couponCodes.length > 0 ? (\r\n
\r\n

{couponCodes.join(\",\")}

\r\n
\r\n ) : null;\r\n\r\n return coupons;\r\n }, [props.salesOrder])\r\n\r\n return (\r\n \r\n {title}\r\n {methods}\r\n {couponsNode}\r\n \r\n )\r\n}\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderConfirmationView: React.FC = (props) => {\r\n const {\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {backToShoppingLink}\r\n {groups && }\r\n {payment && }\r\n {orderSummary && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ICategoryHierarchyViewProps, IRefineMenuViewProps, ISearchResultContainerViewProps, ISearchResultModalViewProps, ISortByViewProps, ITitleViewProps } from '@msdyn365-commerce-modules/search-result-container';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nconst SearchResultContainerView: React.FC = props => {\r\n const { SearchResultContainer, products, pagination, ProductsContainer, ProductSectionContainer, choiceSummary, isMobile, modalToggle, searchResultModal, TitleViewProps,\r\n refineMenu, categoryHierarchy, sortByOptions, CategoryNavContainer, RefineAndProductSectionContainer, errorMessage, FeatureSearchContainer, similarLookProduct } = props;\r\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\r\n if (isMobile) {\r\n return (\r\n \r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n {modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\r\n \r\n {similarLookProduct}\r\n \r\n \r\n {errorMessage}\r\n {products}\r\n \r\n {pagination}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {categoryHierarchy &&\r\n \r\n {renderCategoryHierarchy(categoryHierarchy)}\r\n }\r\n \r\n {refineMenu && renderRefiner(refineMenu)}\r\n \r\n \r\n {similarLookProduct}\r\n \r\n
\r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {choiceSummary}\r\n
\r\n
\r\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\r\n
\r\n \r\n {errorMessage}\r\n {products}\r\n \r\n {pagination}\r\n
\r\n
\r\n
\r\n );\r\n\r\n};\r\n\r\nconst createSearchResultModal = (modalProps: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps, sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string): JSX.Element => {\r\n return React.cloneElement(modalProps.modal, {}, modalProps.modalHeader, createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\r\n modalProps.modalFooter);\r\n};\r\n\r\nconst createModalBody = (props: ISearchResultModalViewProps, refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n \r\n {submenu}\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown && !isRecoSearchPage) {\r\n return (\r\n \r\n {sortByDropDown}\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n \r\n

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

\r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;\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 { 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 { 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 {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n max,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n max: number | undefined,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\n","/*!\n * Copyright (c) Microsoft Corporation.\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 { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n {categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\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 { 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 { 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 { 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 * 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 { 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 { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, isOboRequest, 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 const isOnBehalfOfRequest = isOboRequest(props.context.request);\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.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, 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 { 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 { 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 { 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 { 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 {resources.invoiceUsersText}\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 MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} 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 invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: 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, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \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 {extraActionsPopup(props)}\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: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\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 && !isOnBehalfOfRequest && (\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\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 { 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 disabled?: boolean;\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, 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 disabled?: boolean;\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 { 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 { 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 { 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 { 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 } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\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, isOboRequest } 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 const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\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, disabled: boolean): 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","/*!\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\n\n/**\n * Interface for OrderTemplateImage.\n */\ninterface IOrderTemplateImage {\n props: {\n children: React.ReactElement[];\n };\n}\n\n/**\n * To render order template.\n * @param orderTemplate - The order template view props.\n * @param orderTemplateNodeProps - The order template node props.\n * @returns The JSX Element.\n */\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\n const currentImageListLength = orderTemplateImageElement.props.children.length;\n const defaultNumberImagesInTile = 4;\n\n if (currentImageListLength < defaultNumberImagesInTile) {\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\n orderTemplateImageElement.props.children.push();\n }\n }\n\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\n/**\n * Order Template List View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nexport const OrderTemplateListViewComponent: React.FC> = props => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\n OrderTemplateList,\n OrderTemplates,\n OrderTemplate,\n status,\n statusMessage,\n heading,\n orderTemplates,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n \n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\n
\n

{props.resources.headingForEmptyOrderTemplateList}

\n

{props.resources.textForEmptyOrderTemplateList}

\n {createOrderTemplateButton}\n
\n ) : (\n createOrderTemplateButton\n )}\n {templateHeaderStatusMessage}\n
\n {status !== 'SUCCESS' && statusMessage}\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\n \n {orderTemplates.map(orderTemplate => {\n return renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n
\n );\n};\n\nexport default OrderTemplateListViewComponent;\n"],"names":["OrderConfirmationOrderInfomation","_ref","orderInformationProps","receiptEmail","createdDate","channelReferenceId","React","Node","Object","assign","OrderConfirmationSalesLine","_ref2","salesLineProps","salesLine","OrderConfirmationGroupDelivery","_ref3","deliveryProps","heading","address","pickupDateTimeslot","OrderConfirmationGroup","_ref4","groupProps","delivery","salesLinesProps","salesLines","shippingItemsToYou","map","key","data","LineId","OrderConfirmationGroups","_ref5","groupsProps","groups","group","index","OrderConfirmationOrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","OrderConfirmationPayment","props","paymentMethodsProps","title","methods","payment","couponsNode","_props$salesOrder","_props$salesOrder$Sal","couponCodes","salesOrder","SalesLines","forEach","sl","_sl$DiscountLines","IsVoided","IsReturnByReceipt","DiscountAmount","DiscountLines","dl","DiscountCode","indexOf","push","length","className","join","OrderConfirmationHelp","_ref7","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","moduleProps","backToShoppingLink","alert","loading","orderInfomation","orderSummary","help","Module","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","renderRefiner","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","SortingContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","renderTitle","TitleContainer","titlePrefix","titleText","titleCount","_props$context$action","SearchResultContainer","products","pagination","ProductsContainer","ProductSectionContainer","choiceSummary","isMobile","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","errorMessage","FeatureSearchContainer","similarLookProduct","context","actionContext","requestContext","query","recommendation","accountSectionHeading","creditSummarySectionHeading","accountLabels","accountValues","creditSummaryLabels","creditSummaryValues","homeButton","actions","requestStatementModal","availableCredit","balanceOwed","creditExcess","Link","text","href","ariaLabel","noclick","telemetryContent","payLoad","getPayloadObject","linkText","undefined","contentAction","etext","attribute","getTelemetryAttributes","onClick","onTelemetryClick","itemProp","content","Separator","separator","Breadcrumb","constructor","_pageType","this","request","urlTokens","pageType","getTelemetryObject","telemetryPageName","friendlyName","telemetry","_getRootLink","root","config","linkUrl","destinationUrl","error","_getCustomBreadcrumbLinks","itemPosition","links","value","keyIndex","toString","_getCategoryHierarchy","result","_getFriendlyName","locale","NameTranslations","Url","nameTranslations","_nameTranslation","nameTranslation","ArrayExtensions","hasElements","find","item","Language","toLowerCase","Text","_getPDPLinks","categoryPaths","product","url","requestUrl","Name","hideProductName","_goBack","window","history","back","_getPDPBackButton","MsDyn365","isBrowser","document","referrer","role","resources","backToResultsText","render","rootLink","breadcrumbLinks","backButtonComponent","breaCrumbType","app","breadcrumbType","linkSeparator","breadcrumbViewProps","_objectSpread","BreadcrumbContainer","classnames","tag","BreadcrumbList","BreadcrumbListItem","backButton","renderView","link","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","description","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","state","extentionResources","quantityLimitsMessages","max","quantity","IncrementalQuantity","id","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","FooterCategory","viewprops","categories","FooterList","FooterListItem","FooterCategoryView","ImageList","handleParagraphChange","event","images","paragraph","target","_renderImageListItems","imageList","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","disableLazyLoad","_image$imageSettings","_link$linkText","image","imageProps","gridSettings","imageSettings","imageLink","imageLinkText","imageLinkAriaLabel","Msdyn365","loadFailureBehavior","editProps","onEdit","linkAltText","linkAriaLabel","_heading$tag","imageListTitle","viewProps","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","src","altText","InteractiveFeatureCollection","super","_telemetryContent","StringExtensions","isNullOrWhitespace","Heading","headingTag","itemsCounter","indexItem","itemCounter","isMosaic","_this$props$config$cl","interactiveItems","interactiveFeatureItems","itemsFeatureCounter","singleSlideCarouselComponentProps","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","_createHeading","interactiveFeatureCollectionHeading","interactiveFeatureCollectionContainer","interactiveFeatureCollectionDesktopContainer","interactiveFeatureCollectionMobileContainer","singleSlideCarouselItemContainer","interactiveFeatureCollectionMobileItems","interactiveFeatureCollectionDesktopItems","_getFeatureItem","interactiveFeatureCollectionView","tileItem","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","attributes","editableLink","openInNewTab","additionalProperties","onTextChange","InteractiveFeatureItem","handleHeadingChange","handleLinkTextChange","linkIndex","_this$props$config$li","Number","featureItemLinks","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","replace","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","date","invoiceDate","cultureFormatter","formatDate","year","month","day","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","invoice","disabled","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","label","invoicePaymentDiscounts","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","invoicePaymentInvoiceTotal","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","ProductId","getProductPageUrlSync","RecordId","_renderProductImage","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","apiSettings","Image","primaryImageUrl","fallBackSrc","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","Price","invoiceQuantity","NetAmount","InvoiceDetailsModel","Id","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","status","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","PrimaryImageUrl","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","InvoicePaidStatus","Paid","InvoiceDetails","_onAddToCartFailed","bind","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","setState","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","arguments","productInputs","filter","ProductInput","getSimpleProductsAction","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","otherError","errorMessages","Alert","isOpen","color","assertive","message","Modal","toggle","ModalHeader","ModalBody","ModalFooter","Button","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","type","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","location","isShowActions","setShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","useState","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","isSelected","rowCells","getMobileRowCells","invoiceRowArialabel","format","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","customer","isCurrentUser","AccountNumber","customerAccountNumber","invoiceCurrentUser","isMobileView","viewport","_window","device","Type","innerWidth","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","addEventListener","headerClassName","all","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","async","_event","setDisabled","payInvoices","errorState","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","errorCode","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","i","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","name","ref","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","setTimeout","_focusElement$current","focus","searchEntered","searchEnteredHandler","updatedInvoices","isNullOrEmpty","toLocaleUpperCase","includes","searchResultString","invoicesFoundReplaceIndex","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","shouldComponentUpdate","nextProps","nextState","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","callerContext","BusinessPartnerId","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","BusinessPartnerOperationDeliveryType","specificInvoice","InvoiceListView","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","removeButton","orderTemplateName","orderTemplateImageElement","currentImageListLength","children"],"sourceRoot":""}