{"version":3,"file":"static/js/15.c0a1fb6050099f26b6f7.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/absolute-nav-item/absolute-nav-item.tsx?d010","webpack://Msdyn365.Commerce.Online/./src/modules/absolute-nav-item/absolute-nav-item.view.tsx?28d4","webpack://Msdyn365.Commerce.Online/./src/themes/absoluteoutdoors/views/quickview.view.tsx?f2ec","webpack://Msdyn365.Commerce.Online/./src/themes/arborbb/views/quickview.view.tsx?fce0","webpack://Msdyn365.Commerce.Online/./src/themes/basetheme/views/quickview.view.tsx?43d3","webpack://Msdyn365.Commerce.Online/./src/themes/connellyb2b/views/quickview.view.tsx?8a8f","webpack://Msdyn365.Commerce.Online/./src/themes/hosports-b2b/views/quickview.view.tsx?2a67","webpack://Msdyn365.Commerce.Online/./src/themes/obrienb2b/views/quickview.view.tsx?80e4","webpack://Msdyn365.Commerce.Online/./src/themes/watersportdiscounts/views/quickview.view.tsx?afa8","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-button.tsx?e1d9","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-error.tsx?7f8a","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-input.tsx?5bbe","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/components/sign-up-label.tsx?4988","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.tsx?13a2","webpack://Msdyn365.Commerce.Online/./src/modules/business-sign-up/business-sign-up.view.tsx?e2f8","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/search-result-container.view.tsx?89df","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/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.tsx?b1b8","webpack://Msdyn365.Commerce.Online/./src/modules/tab-item/tab-item.view.tsx?ee3b","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.tsx?9ac6","webpack://Msdyn365.Commerce.Online/./src/modules/tab/tab.view.tsx?a99d","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/components/links.tsx?c969","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/tile-list-item.tsx?114a","webpack://Msdyn365.Commerce.Online/./src/modules/tile-list-item/tile-list-item.view.tsx?19a8","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/promocode.component.tsx?c06b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-utilities.tsx?d092","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-disabled.tsx?1d68","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/navigation-menu-root-enabled.tsx?d5b3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/navigation-menu.view.tsx?5304","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*--------------------------------------------------------------\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 * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, IPayLoad, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteNavItemConfig, IAbsoluteNavItemProps, IHeadingData, ILinkData } from './absolute-nav-item.props.autogenerated';\r\n\r\nexport interface IAbsoluteNavViewProps extends IAbsoluteNavItemProps {\r\n heading: React.ReactNode;\r\n image: React.ReactNode;\r\n text: React.ReactNode;\r\n linkText: React.ReactNode;\r\n className?: string;\r\n AbsoluteNavItem: IModuleProps;\r\n HeadingContainer: INodeProps;\r\n ItemContainer: INodeProps;\r\n Link: INodeProps;\r\n EditableLink: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * AbsoluteNavItem component.\r\n * @extends {React.PureComponent>}\r\n */\r\nexport class AbsoluteNavItem extends React.PureComponent> {\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n private attributes: Msdyn365.IDictionary | undefined;\r\n\r\n constructor(props: IAbsoluteNavItemProps) {\r\n super(props);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n // Construct telemetry attribute to render\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { heading, image, link, text } = this.props.config;\r\n const AbsoluteNavItemClassName = classnames('absolute-nav__item', this.props.config.className);\r\n const linkText = link && link.linkText ? link.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const viewProps: IAbsoluteNavViewProps = {\r\n ...this.props,\r\n heading: this._createHeading(heading!),\r\n image: this._createImageMarkup(image!),\r\n text: this._createText(text!),\r\n linkText: this._createLinkText(link!),\r\n EditableLink: this._createLink(link!),\r\n\r\n AbsoluteNavItem: {\r\n moduleProps: this.props,\r\n className: AbsoluteNavItemClassName\r\n },\r\n\r\n HeadingContainer: {\r\n className: 'absolute-nav__heading'\r\n },\r\n\r\n ItemContainer: {\r\n className: 'absolute-nav__link__container'\r\n },\r\n\r\n // @ts-expect-error\r\n Link: link && link.linkUrl && link.linkUrl.destinationUrl && {\r\n tag: 'a',\r\n role: 'link',\r\n className: 'absolute-nav__link',\r\n href: link.linkUrl.destinationUrl,\r\n title: linkText,\r\n 'aria-label': link.ariaLabel,\r\n target: link.openInNewTab ? '_blank' : undefined,\r\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText),\r\n ...this.attributes\r\n },\r\n className: AbsoluteNavItemClassName\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.heading!.text = event.target.value;\r\n\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.text = event.target.value;\r\n\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => this.props.config.link!.linkText = event.target.value;\r\n\r\n private _createLink(link: ILinkData): React.ReactNode | null {\r\n if (link) {\r\n const linkText = link.linkText ? link.linkText : '';\r\n\r\n // TODO: Update the inner tag in the anchor link to span\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'absolute-nav__link',\r\n linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: this.attributes!,\r\n onClick: onTelemetryClick(this.telemetryContent, this.payLoad, linkText)\r\n };\r\n return (\r\n \r\n );\r\n\r\n }\r\n return null;\r\n }\r\n\r\n private _createLinkText(link: ILinkData): React.ReactNode | null {\r\n if (!link || !link.linkText) {\r\n return null;\r\n }\r\n\r\n return (\r\n {link.linkText}\r\n );\r\n }\r\n\r\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\r\n if (!heading || !heading.text || heading.text.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createText(text: string): React.ReactNode | null {\r\n if (!text) {\r\n return null;\r\n }\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _createImageMarkup(item: Msdyn365.IImageData, ariaHiddenAttr?: boolean): React.ReactNode | null {\r\n if (!item || !item.src || item.src.length === 0) {\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=24&h=24&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=24&h=24&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AbsoluteNavItem;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAbsoluteNavViewProps } from './absolute-nav-item';\r\n\r\n/**\r\n *\r\n * AbsoluteNavItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class AbsoluteNavItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const { AbsoluteNavItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IAbsoluteNavViewProps): React.ReactNode | null {\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n {heading}\r\n {' '}\r\n );\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return (EditableLink);\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AbsoluteNavItemView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxAddToCartViewProps, IBuyboxAddToWishlistViewProps, IBuyboxKeyInPriceViewProps, IBuyboxProductConfigureDropdownViewProps, IBuyboxProductConfigureViewProps, IBuyboxProductQuantityViewProps, IBuyboxAddToOrderTemplateViewProps, } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/../../common';\r\nimport { IQuickviewViewProps } from '@msdyn365-commerce-modules/buybox/src/modules/quickview/./quickview';\r\n\r\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToCart;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToWishlist;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\r\n const { ModalContainer, ModalHeaderContainer, ModalFooterContainer, ModalHeaderContent, ModalBodyContainer, addToWishlist, addToCart, addToOrderTemplate,\r\n cartContainerProps } = props;\r\n\r\n return (\r\n \r\n \r\n {ModalHeaderContent}\r\n \r\n \r\n {_renderBodyContent(props)}\r\n \r\n \r\n \r\n
\r\n {addToCart && _renderAddToCart(addToCart)}\r\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\r\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {input}\r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\r\n const { title, price, rating, keyInPrice, quantity, configure, inventoryLabel, quantityLimitsMessages, seeDetailsbutton, loading,\r\n ProductInfoContainerProps, MediaGalleryContainerProps, CarouselProps, unitOfMeasure } = props;\r\n if (loading) {\r\n return (\r\n <>\r\n {loading}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\r\n {seeDetailsbutton}\r\n {inventoryLabel}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\r\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\r\n\r\n return (\r\n \r\n {errorBlock}\r\n {button}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Functional component which renders quick view button and popup based by the given props file.\r\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\r\n * @returns {React.FC} - Functional component of the quick view.\r\n */\r\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\r\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\r\n return (\r\n \r\n {!isMobileDevice && quickViewButton}\r\n {isModalOpen && _renderQuickViewPopup(props)}\r\n \r\n );\r\n};\r\n\r\nexport default QuickViewFunctionalComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpButtonProps {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n link?: string;\n telemetryContent: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nexport const SignUpButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n telemetryContent,\n disabled,\n link,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent, text);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n return (\n \n {text}\n \n );\n};\n\nexport default SignUpButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IBusinessSignUpErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nexport const SignUpError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n

{message}

\n \n );\n};\n\nexport default SignUpError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InputType } from '../business-sign-up';\n\nexport interface IBusinessSignUpInputProps {\n id?: string;\n type: InputType;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n isRequired: boolean;\n fieldReference?: React.RefObject;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IBusinessSignUpInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nexport const SignUpInput: React.FC = ({\n id,\n type,\n value,\n pattern,\n className,\n maxLength,\n isRequired,\n onChange,\n fieldReference\n}) => {\n if (type === InputType.TextArea) {\n return (\n \n );\n }\n\n return (\n \n );\n};\n\nexport default SignUpInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IBusinessSignUpLabelProps {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nexport const SignUpLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default SignUpLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ContentEditableEvent, getUrlSync, RichTextComponent, Text } from '@msdyn365-commerce/core';\nimport { Address, BusinessPartnerProspect } from '@msdyn365-commerce/retail-proxy';\nimport { createProspectAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IBusinessSignUpConfig, IBusinessSignUpProps } from './business-sign-up.props.autogenerated';\nimport { SignUpButton, SignUpError, SignUpInput, SignUpLabel } from './components';\n\nexport interface IBusinessSignUpExtendedProps extends IBusinessSignUpProps {\n formItems?: IFormItem[];\n}\n\nexport interface IBusinessSignUpItem {\n wrapper: INodeProps;\n isAddressInput?: boolean;\n id: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input?: React.ReactNode;\n}\n\nexport interface IBusinessState {\n isReady: boolean;\n formItems: IFormItem[];\n addressHasErrors: boolean;\n showAddressErrors: boolean;\n hasSubmitErrors: boolean;\n}\n\nexport interface IBusinessSignUpLocalAccount {\n FormWrapper: INodeProps;\n items: IBusinessSignUpItem[];\n buttons: React.ReactNode[];\n errorMessage: React.ReactNode[];\n disclaimer: React.ReactNode;\n}\n\nexport interface IBusinessSignUpViewProps {\n className: string;\n businessSignUp: IModuleProps;\n ContainerWrapper: INodeProps;\n heading: React.ReactNode;\n businessSignUpForm: IBusinessSignUpLocalAccount;\n formItems: IFormItem[];\n}\n\nexport interface IFormItem {\n id: string;\n type: InputType;\n label: string;\n value: string;\n maxChars?: string;\n isRequired: boolean;\n pattern?: string;\n address?: Address;\n customClass?: string;\n fieldReference?: React.RefObject;\n}\n\nexport enum InputType {\n // eslint-disable-next-line @typescript-eslint/no-shadow -- Text enum doesn't override the imported Text\n Text = 'text',\n Address = 'address',\n Email = 'email',\n TextArea = 'textarea'\n}\n\nexport enum InputID {\n FirstName = 'FirstName',\n LastName = 'LastName',\n Email = 'CompanyEmail',\n CompanyName = 'CompanyName',\n Address = 'CompanyAddress',\n JobTitle = 'JobTitle',\n Size = 'CompanySize',\n Department = 'Department',\n Comment = 'Comment'\n}\n\nexport const renderInputSection = (\n inputs: IFormItem[],\n className: string,\n needToReset: boolean,\n onInputChange: (event: React.ChangeEvent) => void,\n showErrors: boolean,\n addressForm?: React.ReactNode,\n updateAddress?: (errors: boolean, currAddress?: Address) => void\n): IBusinessSignUpItem[] => {\n return inputs.map((element, index) => {\n const { id, type, label, maxChars, isRequired, pattern, customClass, value, fieldReference } = element;\n\n const baseSignUpItem: IBusinessSignUpItem = {\n wrapper: {\n className: classnames(className, `${className}-${id}`, customClass)\n },\n id,\n label: ,\n errorMessage: \n };\n\n if (type === InputType.Address) {\n if (addressForm) {\n baseSignUpItem.isAddressInput = true;\n baseSignUpItem.input = (\n <>\n {React.cloneElement(addressForm as React.ReactElement, {\n updateForm: updateAddress,\n hasError: showErrors,\n isRequired: isRequired === undefined ? false : isRequired,\n resetAddress: needToReset\n })}\n \n );\n } else {\n // If the address slot is not filled, remove this input from the form\n inputs.splice(index, 1);\n }\n } else {\n baseSignUpItem.input = (\n \n );\n }\n\n return baseSignUpItem;\n });\n};\n\n/**\n *\n * Business Request Form Modules\n * Form that a business can use to submit a request to become a partner with Microsoft.\n * @extends {React.Component>}\n */\nclass BusinessSignUp extends React.Component {\n // Used as default data\n public BusinessSignUpDefaultInputs: IFormItem[] = [\n {\n id: InputID.FirstName,\n type: InputType.Text,\n label: this.props.resources.firstNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.LastName,\n type: InputType.Text,\n label: this.props.resources.lastNameLabel,\n value: '',\n isRequired: true,\n customClass: 'width-25'\n },\n {\n id: InputID.Email,\n type: InputType.Email,\n label: this.props.resources.emailAddressLabel,\n value: '',\n isRequired: true,\n pattern: EmailRegex.defaultRegex.source,\n customClass: 'width-50'\n },\n {\n id: InputID.CompanyName,\n type: InputType.Text,\n label: this.props.resources.companyLabel,\n value: '',\n isRequired: true,\n customClass: 'width-50'\n },\n {\n id: InputID.Department,\n type: InputType.Text,\n label: this.props.resources.departmentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.JobTitle,\n type: InputType.Text,\n label: this.props.resources.jobTitleLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Size,\n type: InputType.Text,\n label: this.props.resources.companySizeLabel,\n value: '',\n isRequired: false,\n customClass: 'width-50'\n },\n {\n id: InputID.Address,\n type: InputType.Address,\n label: this.props.resources.companyAddressLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n },\n {\n id: InputID.Comment,\n type: InputType.TextArea,\n label: this.props.resources.commentLabel,\n value: '',\n isRequired: false,\n customClass: 'width-100'\n }\n ];\n\n private readonly formChildReference: React.RefObject = React.createRef();\n\n private readonly moduleClassName: string = 'ms-business-sign-up';\n\n private needsToReset: boolean = false;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IBusinessSignUpExtendedProps) {\n super(props);\n\n this.state = {\n isReady: false,\n formItems: this.props.formItems || this._addedReference(),\n addressHasErrors: false,\n showAddressErrors: false,\n hasSubmitErrors: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this.formChildReference.current?.focus();\n }\n\n public shouldComponentUpdate(nextProps: IBusinessSignUpExtendedProps, nextState: IBusinessState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config } = this.props;\n const { formItems } = this.state;\n const { className, heading } = config;\n\n const viewProps = {\n ...this.props,\n businessSignUp: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, className)\n },\n ContainerWrapper: {\n className: `${this.moduleClassName}__container`\n },\n heading: (\n \n ),\n businessSignUpForm: this._renderForm(),\n formItems\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle the heading change event.\n * @param event - Content Editable Event.\n */\n public handleHeadingChange = (event: ContentEditableEvent): void => {\n this.props.config.heading.text = event.target.value;\n };\n\n private _renderForm(): IBusinessSignUpLocalAccount {\n const { config, resources, slots } = this.props;\n const { showAddressErrors, hasSubmitErrors, isReady, formItems } = this.state;\n const {\n signUpButtonArialabel,\n signUpButtonText,\n cancelButtonArialabel,\n cancelButtonText,\n errorMessage,\n partialAddressErrorMessage\n } = resources;\n const addressForm = (slots && slots.addressSlot && slots.addressSlot.length > 0 && slots.addressSlot[0]) || undefined;\n const successPageURL =\n (config.confirmationLink && config.confirmationLink.linkUrl && config.confirmationLink.linkUrl.destinationUrl) ||\n getUrlSync('home', this.props.context.actionContext);\n\n const form = {\n FormWrapper: {\n className: `${this.moduleClassName}__form `\n },\n items: renderInputSection(\n formItems,\n `${this.moduleClassName}__form-item`,\n this.needsToReset,\n this._onInputChange,\n showAddressErrors,\n addressForm,\n this._onAddressChange\n ),\n buttons: [\n ,\n \n ],\n errorMessage: [\n hasSubmitErrors && ,\n showAddressErrors && (\n \n )\n ],\n disclaimer: config.disclaimer && (\n \n )\n };\n\n if (this.needsToReset) {\n this.needsToReset = false;\n }\n\n return form;\n }\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n const newForm = this.state.formItems;\n newForm.forEach(item => {\n if (item.id === event.target.id) {\n item.value = event.target.value;\n }\n });\n\n // Check if form is ready, update state object with latest values, values have changed so reset hasSubmitErrros\n this.setState({\n isReady: this._isFormReady(),\n formItems: newForm,\n hasSubmitErrors: false\n });\n };\n\n private _addedReference(): IFormItem[] {\n const newFormFields = this.BusinessSignUpDefaultInputs;\n newFormFields[0].fieldReference = this.formChildReference;\n return newFormFields;\n }\n\n private readonly _onAddressChange = (errors: boolean, currentAddress?: Address): void => {\n // Find address item\n const newForm = this.state.formItems;\n const addressItem = newForm.find(item => {\n return item.type === InputType.Address;\n });\n\n // If found --> set to currentAddress\n if (addressItem) {\n addressItem.address = currentAddress;\n\n // Update state with new values and set errors to false if address is not required field\n this.setState(\n {\n formItems: newForm,\n addressHasErrors: errors,\n showAddressErrors: false\n },\n () => {\n this.setState({ isReady: this._isFormReady() });\n }\n );\n }\n };\n\n private readonly _isFormReady = (): boolean => {\n const { formItems } = this.state;\n\n for (const currentInput of formItems) {\n // Will return FALSE if:\n // - input field is required\n // IF is address AND addressHasErrors === true\n // ELSE value is undefined OR empty\n // OR\n // - pattern provided and value does not match pattern\n\n if (currentInput.isRequired) {\n if (currentInput.type === InputType.Address) {\n if (this.state.addressHasErrors) {\n return false;\n }\n } else if (currentInput.value === undefined || currentInput.value === '') {\n return false;\n }\n }\n if (currentInput.pattern !== undefined && currentInput.value.match(currentInput.pattern) === null) {\n return false;\n }\n }\n\n return true;\n };\n\n private readonly _onSubmit = (event: React.MouseEvent) => {\n if (this.state.addressHasErrors) {\n this.setState({\n showAddressErrors: true\n });\n\n event.preventDefault();\n return;\n }\n\n const { context } = this.props;\n\n // Check for matching id and if not empty\n const firstName = this._getItem(InputID.FirstName);\n const lastName = this._getItem(InputID.LastName);\n const companyName = this._getItem(InputID.CompanyName);\n const companyEmail = this._getItem(InputID.Email);\n const companyAddress = this._getItem(InputID.Address, true);\n const jobTitle = this._getItem(InputID.JobTitle);\n const department = this._getItem(InputID.Department);\n const companySize = this._getItem(InputID.Size);\n const comments = this._getItem(InputID.Comment);\n\n // API gets email as part of the address object, but I do not use the email input from the address component, thus we need to copy it over\n if (companyEmail && companyEmail.value && companyAddress && companyAddress.address) {\n companyAddress.address.Email = companyEmail.value;\n }\n\n const newPartner: BusinessPartnerProspect = {\n FirstName: firstName && firstName.value,\n LastName: lastName && lastName.value,\n CompanyName: companyName && companyName.value,\n Address: companyAddress && companyAddress.address && companyAddress.address,\n JobTitle: jobTitle && jobTitle.value,\n Department: department && department.value,\n CompanySize: (companySize && Number.parseInt(companySize.value, 10)) || 0,\n Comments: comments && comments.value\n };\n\n // Create business partner request\n createProspectAsync({ callerContext: context.actionContext }, newPartner).catch(() => {\n this.setState({\n hasSubmitErrors: true,\n isReady: false\n });\n });\n };\n\n private readonly _onCancel = () => {\n // Reset values of the form\n const cleanForm = this.state.formItems;\n cleanForm.forEach(input => {\n input.value = '';\n });\n\n // Set reset flag so address input will get reset on next renderInputSection() call\n this.needsToReset = true;\n\n this.setState({\n isReady: false,\n formItems: cleanForm,\n addressHasErrors: true,\n showAddressErrors: false,\n hasSubmitErrors: false\n });\n };\n\n private readonly _getItem = (id: string, isAddress: boolean = false) => {\n if (isAddress) {\n return this.state.formItems.find(item => {\n return item.id === id && item.address;\n });\n }\n return this.state.formItems.find(item => {\n return item.id === id && item.value !== '';\n });\n };\n}\n\nexport default BusinessSignUp;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessSignUpItem, IBusinessSignUpViewProps } from './business-sign-up';\n\nconst BusinessSignUpItem: React.FC = ({ wrapper, label, errorMessage, input, isAddressInput }) => {\n // Hide label and error message if rendering address section\n return (\n \n {!isAddressInput && label}\n {!isAddressInput && errorMessage}\n {input}\n \n );\n};\n\nconst BusinesSignUpView: React.FC = props => {\n const { businessSignUp, ContainerWrapper, heading, businessSignUpForm } = props;\n\n const { FormWrapper, buttons, items, errorMessage, disclaimer } = businessSignUpForm;\n\n return (\n \n \n {heading}\n \n {items &&\n items.map((item: IBusinessSignUpItem) => {\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n {disclaimer}\n \n \n \n );\n};\n\nexport default BusinesSignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst SearchResultContainerView: React.FC = props => {\n const {\n SearchResultContainer,\n products,\n pagination,\n ProductsContainer,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n errorMessage,\n FeatureSearchContainer,\n similarLookProduct\n } = props;\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n \n {errorMessage}\n {products}\n \n {pagination}\n \n );\n }\n return (\n \n {categoryHierarchy && {renderCategoryHierarchy(categoryHierarchy)}}\n \n {refineMenu && renderRefiner(refineMenu)}\n \n {similarLookProduct}\n
\n {TitleViewProps && renderTitle(TitleViewProps)}\n {choiceSummary}\n
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {errorMessage}\n {products}\n \n {pagination}\n
\n
\n
\n );\n};\n\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefiner(refineMenu));\n }\n return null;\n};\n\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList && categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n

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

\n
\n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '@msdyn365-commerce-modules/invoice';\nimport React from 'react';\n\nimport { InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsHeaderData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsHeaderResources extends IPayInvoiceResources {\n invoiceOrderItem: string;\n invoiceOrderItems: string;\n invoiceIdLabel: string;\n invoicePlacedByLabel: string;\n invoiceAmountDueText: string;\n invoicePaymentDueDateText: string;\n}\n\nexport interface IInvoiceDetailsHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsHeaderResources;\n onError?(): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n lg: { q: 'w=315&h=315&m=6', w: 0, h: 0 },\n xl: { q: 'w=315&h=315&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n const fallbackImage = getFallbackImageUrl(product.ItemId, context.actionContext.requestContext.apiSettings);\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.RecordId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.RecordId)?.PrimaryImageUrl\n };\n return productLine;\n });\n\n this.totalDiscount = invoiceDetails.TotalDiscount;\n this.subtotal = invoiceDetails.InvoiceSubtotal;\n this.totalCharges = invoiceDetails.TotalCharges;\n this.totalTax = invoiceDetails.TotalTaxAmount;\n this.totalAmount = invoice.TotalAmount;\n this.currencyCode = invoice.CurrencyCode;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { InvoiceErrorComponent } from '@msdyn365-commerce-modules/invoice';\nimport { getSimpleProductsAction, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InvoiceDetailsHeaderComponent } from './components/invoice-details-header';\nimport { InvoiceDetailsPaymentDetailsComponent } from './components/invoice-details-payment-summary';\nimport { InvoiceDetailsProductsComponent } from './components/invoice-details-products';\nimport { InvoiceDetailsModel } from './helpers/invoice-data';\nimport { IInvoiceDetailsData } from './invoice-details.data';\nimport { IInvoiceDetailsProps } from './invoice-details.props.autogenerated';\n\nexport interface IInvoiceDetailsViewState {\n invoiceDetails?: InvoiceDetailsModel;\n payInvoiceErrorModalOpen?: boolean;\n}\n\nexport interface IInvoiceDetailsViewProps extends IInvoiceDetailsProps {\n moduleProps: IModuleProps;\n header: JSX.Element;\n products: JSX.Element;\n paymentDetails: JSX.Element;\n payInvoiceError?: JSX.Element;\n}\n\n/**\n * InvoiceDetails component.\n * @extends {React.PureComponent>}\n */\nclass InvoiceDetails extends React.PureComponent, IInvoiceDetailsViewState> {\n private static readonly _className: string = 'msc-invoice-details';\n\n public constructor(props: IInvoiceDetailsProps) {\n super(props);\n\n this.state = {};\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n }\n\n public async componentDidMount(): Promise {\n const invoice = await this.props.data.invoice;\n const invoiceDetails = await this.props.data.invoiceDetails;\n\n const products = await this._getProducts(invoiceDetails.SalesInvoiceLine, invoiceDetails.ChannelId);\n\n const invoiceDetailsModel = new InvoiceDetailsModel(invoice, invoiceDetails, products);\n\n this.setState({\n invoiceDetails: invoiceDetailsModel,\n payInvoiceErrorModalOpen: false\n });\n }\n\n public render(): JSX.Element | null {\n if (!this.state.invoiceDetails) {\n return null;\n }\n\n const header = this._renderHeader();\n const products = this._renderProducts();\n const paymentDetails = this._renderPaymentDetails();\n const payInvoiceError = this._renderInvoiceErrors();\n\n const props: IInvoiceDetailsViewProps = {\n ...(this.props as IInvoiceDetailsProps),\n moduleProps: {\n moduleProps: this.props,\n className: InvoiceDetails._className\n },\n header,\n products,\n paymentDetails,\n payInvoiceError\n };\n\n return this.props.renderView(props);\n }\n\n private async _getProducts(invoiceLines: SalesInvoiceLine[] = [], channelId?: number): Promise {\n const productInputs = invoiceLines\n .filter(product => product.RecordId)\n .map(\n product =>\n new ProductInput(\n product.RecordId!,\n this.props.context.request.apiSettings,\n channelId,\n undefined,\n this.props.context.actionContext.requestContext\n )\n );\n return getSimpleProductsAction(productInputs, this.props.context.actionContext);\n }\n\n private _renderHeader(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _renderProducts(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n const { imageSettings } = this.props.config;\n return (\n \n );\n }\n\n private _renderPaymentDetails(): JSX.Element {\n const invoiceDetails = this.state.invoiceDetails!;\n return (\n \n );\n }\n\n private _onAddToCartFailed(): void {\n this.setState({ payInvoiceErrorModalOpen: true });\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({ payInvoiceErrorModalOpen: false });\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${InvoiceDetails._className}__errors`;\n\n return (\n \n );\n }\n}\n\nexport default InvoiceDetails;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 {props.isAdmin ? {resources.invoiceUsersText} : null}\n {resources.invoiceAmountText}\n {resources.invoiceDueDateText}\n {resources.invoiceAmountDueText}\n {resources.invoiceStatusText}\n {resources.invoiceActionsText}\n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n {resources.invoicesText}\n {resources.invoiceDateMobileText}\n \n {` `}\n {/* Actions */}\n \n );\n};\n\nconst InvoicesTableHeader: React.FC = (props: IInvoicesTableHeaderProps): JSX.Element => {\n const rowClassName = `${props.className}__row`;\n\n const switchCheckedState = () => {\n props.onSelectAll(!props.isSelectedAll);\n };\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = getMobileHeaderCells(props, rowClassName, switchCheckedState);\n } else {\n headerCells = getDesktopHeaderCells(props, rowClassName, switchCheckedState);\n }\n\n return (\n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject\n) => () => {\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, index, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n const payInvoiceClassName = `${props.className}__pay-invoice`;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n const requestInvoiceButtonReference: React.RefObject = React.createRef();\n const payInvoiceButtonReference: React.RefObject = React.createRef();\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n {customer.IsB2bAdmin ? (\n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n \n ) : null}\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n \n {formatDate(props.context, invoice.dueDate)}\n \n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n \n {getInvoiceStatusText(props.resources, invoice.status)}\n \n \n \n \n \n \n );\n};\n\nlet setShowPreviousActions: React.Dispatch> | undefined;\n\n/**\n * On Click view details function.\n * @param linkToInvoiceDetails -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst onClickViewDetails = (linkToInvoiceDetails: string) => () => {\n if (MsDyn365.isBrowser) {\n window.location.href = linkToInvoiceDetails;\n }\n return;\n};\n\n/**\n * Toggle function.\n * @param isShowActions -Link to invoice details.\n * @param setShowActions -Link to invoice details.\n * @returns Go to invoice details.\n */\nconst toggle = (isShowActions: boolean, setShowActions: React.Dispatch>) => () => {\n const shouldShowActions = !isShowActions;\n if (shouldShowActions) {\n if (setShowPreviousActions) {\n setShowPreviousActions(false);\n }\n setShowActions(shouldShowActions);\n setShowPreviousActions = setShowActions;\n } else {\n setShowPreviousActions = undefined;\n setShowActions(shouldShowActions);\n }\n};\n\nconst extraActionsPopup = (props: IInvoicesTableRowProps): JSX.Element | null => {\n const {\n resources: { invoiceViewDetailsButtonAriaLabel, invoiceViewDetailsButtonText, invoiceActionsButtonTextAriaLabel },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n return (\n
\n \n {showActions && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n \n \n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n \n \n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n \n {extraActionsPopup(props)}\n \n );\n};\n\nconst InvoicesTableRow: React.FC = (props: IInvoicesTableRowProps): JSX.Element => {\n const {\n data: { invoice }\n } = props;\n\n const onSelectLine = () => {\n invoice.isSelected = !invoice.isSelected;\n props.onChange();\n };\n\n let rowCells: JSX.Element;\n if (props.isMobile) {\n rowCells = getMobileRowCells(props, onSelectLine);\n } else {\n rowCells = getDesktopRowCells(props, onSelectLine);\n }\n\n return {rowCells};\n};\n\nexport const InvoicesTableRowComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableRowComponent\n>('InvoicesTableRowComponent', { component: InvoicesTableRow });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\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\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\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 }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(renderInvoiceOptions(updatedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceErrorComponent } from './components/invoice-error-component';\nimport { InvoicesFilterComponent, InvoicesFilterState } from './components/invoices-filter-component';\nimport { InvoicesTableComponent } from './components/invoices-table/invoices-table-component';\nimport { IMakePaymentResources, MakePaymentComponent } from './components/make-payment-component';\nimport { RequestInvoiceButton } from './components/request-invoice-button';\nimport { RequestInvoiceModal } from './components/request-invoice-modal';\nimport { InvoiceModel } from './helpers/invoice-data';\nimport { IAddInvoicesToCartFailureResult } from './helpers/pay-invoices';\nimport { IInvoicesListData } from './invoices-list.data';\nimport { IInvoicesListProps } from './invoices-list.props.autogenerated';\n\nexport type InvoicesListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\nexport type InvoiceErrorHost = 'ADDINVOICETOCART';\n\nexport interface IInvoicesListViewProps extends IInvoicesListProps {\n moduleProps: IModuleProps;\n\n header: JSX.Element;\n filter: JSX.Element;\n content?: JSX.Element;\n invoiceRequestModal?: JSX.Element;\n pagination?: JSX.Element;\n}\n\nexport interface IInvoiceErrorState {\n errorHost?: InvoiceErrorHost;\n errorReason?: IAddInvoicesToCartFailureResult;\n errorMessage: string;\n otherError?: string;\n errorCode?: string;\n}\n\nexport interface IInvoicesListState {\n invoices: InvoiceModel[];\n invoicesFilterState: InvoicesFilterState;\n errorState: IInvoiceErrorState;\n isInvoiceRequestModalOpen: boolean;\n isLoading: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\nclass InvoicesList extends React.Component, IInvoicesListState> {\n private readonly _className: string = 'msc-invoices-list';\n\n private readonly payInvoiceRequestReference: React.RefObject;\n\n private readonly makePaymentReference: React.RefObject;\n\n private buttonChildReference: React.RefObject[] = [];\n\n private buttonChildPayButtonReference: React.RefObject[] = [];\n\n private readonly _queryResultSettings: IQueryResultSettings;\n\n constructor(props: IInvoicesListProps) {\n super(props);\n\n this._queryResultSettings = QueryResultSettingsProxy.fromModuleData(\n this.props.context.request,\n this.props.config as IQueryResultSettingsModuleConfig\n ).QueryResultSettings;\n this.payInvoiceRequestReference = React.createRef();\n this.makePaymentReference = React.createRef();\n this._updateInvoicesState = this._updateInvoicesState.bind(this);\n this._onAddToCartFailed = this._onAddToCartFailed.bind(this);\n this._onToggleInvoiceRequestModal = this._onToggleInvoiceRequestModal.bind(this);\n this._handleFilterStateChange = this._handleFilterStateChange.bind(this);\n this._loadMoreInvoices = this._loadMoreInvoices.bind(this);\n this._requestInvoice = this._requestInvoice.bind(this);\n this._requestSpecificInvoice = this._requestSpecificInvoice.bind(this);\n this._setPayInvoiceErrorModalClose = this._setPayInvoiceErrorModalClose.bind(this);\n this.state = {\n invoices: [],\n invoicesFilterState: InvoicesFilterState.ShowAll,\n isLoading: true,\n isPageLoaded: false,\n errorState: { errorMessage: '' },\n isInvoiceRequestModalOpen: false,\n payInvoiceErrorModalOpen: false,\n selectedButtonElement: null\n };\n }\n\n public shouldComponentUpdate(nextProps: IInvoicesListProps, nextState: IInvoicesListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className = '', heading },\n context: {\n request: { channel },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n data: { customerBalance },\n resources: { invoicesListTitle, invoicesListDescTitle, invoicesListDescCount }\n } = this.props;\n\n const totalAmount = customerBalance.result?.OpenInvoiceBalance || 0;\n const amountText = `${formatCurrency(totalAmount.toFixed(2), currencyCode)} ${channel?.Currency || 'USD'}`;\n\n const totalCount = customerBalance.result?.OpenInvoiceCount || 0;\n const countText = invoicesListDescCount.replace('{0}', totalCount.toString());\n const invoicesListTitleHeading = heading?.text ?? invoicesListTitle;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n
{invoicesListDescTitle}
\n
{amountText}
\n
{countText}
\n
\n
\n );\n\n const viewProps: IInvoicesListViewProps = {\n ...(this.props as IInvoicesListProps),\n moduleProps: {\n moduleProps: this.props,\n className: classnames(this._className, className)\n },\n header,\n invoiceRequestModal: this._renderInvoiceRequestModal(),\n filter: this._renderInvoicesFilter(this._className),\n pagination: this._renderPagination()\n };\n\n if (!this.state.isPageLoaded) {\n return this.props.renderView(viewProps);\n }\n\n if (ArrayExtensions.hasElements(this.state.invoices)) {\n viewProps.content = this._renderListContainer();\n } else {\n viewProps.content = this._renderEmptyInvoiceLinesPageContent();\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public async componentDidMount(): Promise {\n await this.props.data.customer;\n const invoicesData = await this.props.data.invoices;\n this._initializeWithInvoices(invoicesData);\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass)}\n {this._renderInvoiceRequestButton()}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const filterClassName = `${className}__filter`;\n return (\n \n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderPagination(): JSX.Element | undefined {\n const { data, resources } = this.props;\n const invoices = data?.invoices?.result;\n if (!invoices || invoices.length < this._queryResultSettings.Paging!.Top!) {\n return undefined;\n }\n\n return (\n \n {resources.invoicesLoadMore}\n \n );\n }\n\n private async _loadMoreInvoices(): Promise {\n this.setState({ isLoading: true });\n const searchCriteria = await this._getInvoicesSearchCriteria(this.state.invoicesFilterState);\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip! += this._queryResultSettings.Paging.Top!;\n }\n const newInvoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._addInvoices(newInvoices);\n }\n\n private _renderInvoiceRequestModal(): JSX.Element {\n const customer = this.props.data.customer.result;\n const {\n invoiceRequestModalCancelLabel,\n invoiceRequestModalSubmitLabel,\n invoiceRequestModalHeaderLabel,\n invoiceRequestModalSendToEmailLabel,\n invoiceRequestModalSearch,\n invoiceRequestModalInvoiceSearchDisplay,\n invoiceRequestModalSingleInvoiceSearchDisplay,\n invoiceRequestModalSearchButton\n } = this.props.resources;\n\n return (\n \n );\n }\n\n private _onToggleInvoiceRequestModal(): void {\n this.setState({\n isInvoiceRequestModalOpen: !this.state.isInvoiceRequestModalOpen\n });\n if (this.state.isInvoiceRequestModalOpen) {\n this.state.selectedButtonElement?.focus();\n }\n }\n\n /**\n * Request specific invoice function.\n */\n private readonly _onToggleInvoiceRequestParentModal = () => {\n this.setState(\n {\n selectedButtonElement: this.payInvoiceRequestReference.current\n },\n () => {\n this._onToggleInvoiceRequestModal();\n }\n );\n };\n\n private _renderInvoiceRequestButton(): JSX.Element | null {\n const { invoiceRequestButtonLabel } = this.props.resources;\n const customer = this.props.data.customer.result;\n\n if (StringExtensions.isNullOrWhitespace(customer?.Email)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _requestInvoice(invoiceId: string): void {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n\n BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(context, b2bUserId, invoiceId, BusinessPartnerOperationDeliveryType.Email);\n\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\n","/*!\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. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n
\n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n
\n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n
\n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ITabItemData } from './tab-item.data';\nimport { ITabItemProps } from './tab-item.props.autogenerated';\n\nexport interface ITabItemViewProps {\n TabContentContainer: IModuleProps;\n TabHeaderContainer: IModuleProps;\n tabSlots: INodeProps;\n TabItemContent: INodeProps;\n tabItemType?: TabItemType;\n tabHeader: React.ReactNode;\n}\n\nexport interface ITabItemExtentedProps extends ITabItemProps {\n tabItemType?: TabItemType;\n isSelected?: boolean;\n itemIndex?: number;\n tabId?: string;\n}\n\nexport enum TabItemType {\n TabHeader,\n TabContent\n}\n\n/**\n *\n * TabItem component.\n * @extends {React.Component}\n */\n@observer\nclass TabItem extends React.PureComponent {\n private readonly moduleContentClassName: string = 'ms-tab-item-content';\n\n private readonly moduleHeaderClassName: string = 'ms-tab-item-header';\n\n constructor(props: ITabItemProps) {\n super(props);\n this._renderTabHeader = this._renderTabHeader.bind(this);\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data, isSelected, itemIndex } = this.props;\n const index = itemIndex || 0;\n const contentID = getContentID(index, this.props.tabId || '');\n const activeContentIDResult = data && data.activeTabState && data.activeTabState.result;\n const shown =\n activeContentIDResult &&\n activeContentIDResult.tabId === this.props.tabId &&\n activeContentIDResult.activeContentIndex !== undefined\n ? activeContentIDResult.activeContentIndex === index\n : isSelected || false;\n const viewProps = {\n ...this.props,\n TabContentContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleContentClassName, config.className)\n },\n TabHeaderContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleHeaderClassName, config.className)\n },\n TabItemContent: {\n className: 'ms-tab-item-content__content',\n tag: 'section' as NodeTag,\n 'aria-hidden': !shown,\n role: 'tabpanel',\n tabIndex: shown ? 0 : -1,\n id: contentID\n },\n tabHeader: this._renderTabHeader(),\n tabSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n private _renderTabHeader(): React.ReactNode {\n return <>{this.props.config.tabItemTitle};\n }\n}\n\nexport const getContentID = (index: number, id: string) => {\n return `tab-item-content-${id}-${index}`;\n};\n\nexport default TabItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabItemViewProps, TabItemType } from './tab-item';\n\nconst TabItemView: React.FC = props => {\n const { tabItemType, tabSlots, TabContentContainer, TabHeaderContainer, TabItemContent, tabHeader } = props;\n\n switch (tabItemType) {\n case TabItemType.TabContent:\n return (\n \n \n {tabSlots &&\n tabSlots.tabItemContent &&\n tabSlots.tabItemContent.length &&\n _renderTabItemContent(tabSlots.tabItemContent)}\n \n \n );\n case TabItemType.TabHeader:\n return {tabHeader};\n default:\n return null;\n }\n};\n\nconst _renderTabItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default TabItemView;\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, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createTabStateInput, getContentID, TabItemType } from '../..';\nimport { ITabData } from './tab.data';\nimport { ITabProps } from './tab.props.autogenerated';\n\n/**\n *\n * Tab component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\nexport interface ITabViewProps extends ITabProps<{}> {\n heading?: React.ReactNode;\n TabContainer: IModuleProps;\n headerSection: INodeProps;\n tabHeaderSection: INodeProps;\n tabsSection: INodeProps;\n tabItemContainer: INodeProps;\n tabHeaders: React.ReactNode;\n tabContents: React.ReactNode;\n}\n\nexport interface ITabViewStates {\n currentTabIndex: number;\n}\n\n/**\n *\n * Tab component.\n * @extends {React.Component>}\n */\n@observer\nclass Tab extends React.Component, ITabViewStates> {\n public readonly tabIndexQuery: string = 'activeTab';\n\n private activeLink: HTMLLIElement | null;\n\n constructor(props: ITabProps) {\n super(props);\n const { defaultTabIndex } = this.props.config;\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n let initialIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n let queryTabIndex: number = 0;\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n queryTabIndex = Number.parseInt(arr[1], 10);\n }\n }\n initialIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : initialIndex;\n this.state = { currentTabIndex: initialIndex };\n\n this._getTabHeader = this._getTabHeader.bind(this);\n this._getTabContent = this._getTabContent.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._setGetParameter = this._setGetParameter.bind(this);\n this.activeLink = null;\n }\n\n public shouldComponentUpdate(nextProps: ITabProps, nextState: ITabViewStates): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n\n const headingComponent = heading && (\n \n );\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n // Const queryTabIndex = this.props.context && this.props.context.request && this.props.context.request.query && +this.props.context.request.query.activeTabIndex || 0;\n // let activeIndex = defaultTabIndex && defaultTabIndex <= slotLength && defaultTabIndex > 0 ? defaultTabIndex - 1 : 0;\n // activeIndex = queryTabIndex > 0 && queryTabIndex <= slotLength ? queryTabIndex - 1 : activeIndex;\n\n const tabViewProps = {\n ...this.props,\n TabContainer: {\n moduleProps: this.props,\n className: classnames('ms-tab', className)\n },\n headerSection: { className: 'ms-tab-header-section' },\n tabsSection: { className: 'ms-tab-tabs-section', tag: 'ul' as NodeTag, role: 'tablist' },\n heading: headingComponent,\n config: this.props && this.props.config,\n tabItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-tab-content-section'\n },\n tabContents: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabContent(item, index)),\n tabHeaders: slotLength > 0 && slots.tabItems.map((item: React.ReactNode, index: number) => this._getTabHeader(item, index))\n };\n return this.props.renderView(tabViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public componentDidUpdate(): void {\n const { data } = this.props;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n if (dataActionTabId) {\n if (this.props.id === dataActionTabId) {\n this.activeLink && this.activeLink.focus();\n }\n } else {\n const queryString: string =\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.query &&\n this.props.context.request.query.activeTab) ||\n '';\n if (queryString.indexOf(':') > 0) {\n const arr = queryString.split(':');\n const moduleId = arr[0];\n if (moduleId === this.props.id) {\n this.activeLink && this.activeLink.focus();\n }\n }\n }\n }\n\n /**\n *Set the activate link value on tab click.\n * @param link -Ref link value.\n */\n private readonly _refHandler = (link: HTMLLIElement | null) => {\n this.activeLink = link;\n };\n\n private _getTabHeader(item: React.ReactNode, index: number): React.ReactNode {\n const { data } = this.props;\n const activeContentIndex =\n data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.activeContentIndex;\n const dataActionTabId = data && data.activeTabState && data.activeTabState.result && data.activeTabState.result.tabId;\n const selected =\n activeContentIndex !== undefined && dataActionTabId === this.props.id\n ? activeContentIndex === index\n : this.state.currentTabIndex === index;\n const contentID = getContentID(index, this.props.id);\n\n return (\n \n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabHeader,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n \n );\n }\n\n private readonly _onClick = (index: number, id: string) => (e: React.MouseEvent) => {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n };\n\n private readonly _onKeyDown = (index: number, id: string) => (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n const activeTabState = { activeContentIndex: index, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 1)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n\n if (e.keyCode === 39 || e.keyCode === 37) {\n const { slots } = this.props;\n const slotLength = (slots && slots.tabItems && slots.tabItems.length) || 0;\n\n if (e.keyCode === 39) {\n // If we're at the end, go to the start\n if (index + 1 === slotLength) {\n index = -1;\n }\n const activeTabState = { activeContentIndex: index + 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index + 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index + 2)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n\n // Move left\n } else if (e.keyCode === 37) {\n // If we're at the start, move to the end\n if (index === 0) {\n index = slotLength;\n }\n const activeTabState = { activeContentIndex: index - 1, tabId: id };\n this.props.context.actionContext.update(createTabStateInput(activeTabState), activeTabState);\n this.setState({ currentTabIndex: index - 1 });\n\n // Update query paramter\n const requestContext = this.props.context.request;\n const newUrl = this._setGetParameter(requestContext, this.tabIndexQuery, `${this.props.id}:${String(index)}`);\n requestContext && window.history.pushState({ path: newUrl }, '', newUrl);\n }\n }\n };\n\n private _getTabContent(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, {\n tabItemType: TabItemType.TabContent,\n isSelected: index === this.state.currentTabIndex,\n itemIndex: index,\n tabId: this.props.id\n })}\n \n );\n }\n\n private _setGetParameter(requestContext: MsDyn365.IRequestContext, paramName: string, paramValue: string): string {\n let url;\n\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n url = new URL(window.location.href);\n } else {\n url = new URL(requestContext.url.requestUrl.href);\n }\n\n const params = new window.URLSearchParams(url.search);\n params.set(paramName, paramValue);\n url.search = decodeURIComponent(params.toString());\n return url.toString();\n }\n}\n\nexport default Tab;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITabViewProps } from './tab';\n\nconst tabView: React.FC = props => {\n const { heading, TabContainer, tabHeaders, tabContents } = props;\n if (!props.heading && !props.tabHeaders && !props.tabContents) {\n props.context.telemetry.error('Tab content is empty, module wont render');\n return null;\n }\n return (\n \n {heading}\n {tabHeaders}\n {tabContents}\n \n );\n};\n\nexport default tabView;\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 '../tile-list-item.props.autogenerated';\n\n/**\n * Tile List links.\n */\nexport interface ITileListLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ITileListLinks component.\n * @extends {React.PureComponent}\n */\nexport class TileListLinks 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 * ITileListLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!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-tile-list__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 TileListLinks;\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 { TileListLinks } from './components';\nimport { IHeadingData, ITileListItemProps } from './tile-list-item.props.autogenerated';\n\n/**\n * Tile-list-item view props.\n */\nexport interface ITileListItemViewProps extends ITileListItemProps<{}> {\n heading?: React.ReactNode;\n paragraph?: React.ReactNode;\n links?: React.ReactNode;\n backgroundImage?: React.ReactNode;\n thumbnailImage?: React.ReactNode;\n tileListItem: IModuleProps;\n tileListContainer: INodeProps;\n tileListImageContainer: INodeProps;\n tileListThumbnailImageContainer: INodeProps;\n tileListHeadingContainer: INodeProps;\n}\n\n/**\n *\n * TileListItem component.\n * @extends {React.PureComponent>}\n */\nexport class TileListItem 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: ITileListItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { heading, paragraph, backgroundImage, thumbnailImage, redirectionUrl, links } = this.props.config;\n const tileListLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const tileListLinkContainer = {\n tag: 'a' as NodeTag,\n className: 'ms-tile-list-container',\n role: 'link',\n href: redirectionUrl?.linkUrl.destinationUrl,\n 'aria-label': redirectionUrl?.ariaLabel\n };\n\n const tileListButtonContainer = {\n tag: 'button' as NodeTag,\n className: 'ms-tile-list-container'\n };\n const viewProps: ITileListItemViewProps = {\n ...this.props,\n heading: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n backgroundImage: this._renderBackgroundImage(backgroundImage),\n thumbnailImage: this._renderThumbnailImage(thumbnailImage),\n links: tileListLinks,\n tileListItem: {\n moduleProps: this.props,\n className: ''\n },\n tileListContainer: redirectionUrl ? tileListLinkContainer : tileListButtonContainer,\n tileListImageContainer: {\n className: 'ms-tile-list__image'\n },\n tileListThumbnailImageContainer: {\n className: 'ms-tile-list__thumbnail_image',\n 'aria-hidden': 'true'\n },\n tileListHeadingContainer: {\n className: 'ms-tile-list__heading'\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 _renderBackgroundImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n sm: { q: 'w=328&h=412&m=6', w: 328, h: 412 },\n md: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n lg: { q: 'w=315&h=412&m=6', w: 315, h: 412 },\n xl: { q: 'w=315&h=412&m=6', w: 315, h: 412 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n\n return (\n \n );\n }\n\n private _renderThumbnailImage(\n item?: Msdyn365.IImageData,\n itemImageSettings?: Msdyn365.IImageSettings,\n isAriaHiddenAttribute?: boolean\n ): React.ReactNode | null {\n if (!item) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(item.src)) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default TileListItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ITileListItemViewProps } from './tile-list-item';\n\n/**\n *\n * ITileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nconst renderTileListItemContent = (props: ITileListItemViewProps): JSX.Element => {\n const {\n heading,\n paragraph,\n backgroundImage,\n links,\n thumbnailImage,\n tileListContainer,\n tileListImageContainer,\n tileListThumbnailImageContainer,\n tileListHeadingContainer\n } = props;\n\n return (\n \n {backgroundImage}\n \n {heading}\n {paragraph}\n {links}\n \n {thumbnailImage}\n \n );\n};\n\n/**\n *\n * TileListItemViewProps component.\n * @param props - Component props.\n * @returns TileListView.\n */\nexport const TileListItemViewComponent: React.FC = props => {\n const { tileListItem } = props;\n return {renderTileListItemContent(props)};\n};\n\nexport default TileListItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\n/**\n * IPromoCodeProps: Interface for promo code component.\n */\nexport interface IPromoCodeComponent extends IComponent {}\n\n/**\n * IPromoCodeProps: Interface for promo code state.\n */\ninterface IPromoCodeState {\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.PureComponent {\n private readonly payLoad: IPayLoad;\n\n public constructor(props: IPromoCodeProps) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n /**\n * On input change method.\n * @param event - Change event.\n */\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\n const error = event.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: event.target.value.trim(),\n error,\n canApply: !!event.target.value\n });\n };\n\n /**\n * Apply promo code method.\n * @param cartState - Cart state interface.\n */\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On submit action.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotion(cartState);\n };\n\n /**\n * On apply promotion.\n * @param cartState - Cart state.\n * @returns Apply promotion.\n */\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n /**\n * Renders promo code form.\n * @param promoPlaceholderText - Promo code input box placeholder string.\n * @param promoCodeApplyButtonText - Promo code button text string.\n * @param cartState - Cart state interface.\n * @returns Promo code form.\n */\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n
\n
\n );\n };\n\n /**\n * Remove promo code method.\n * @param cartState - Cart state interface.\n * @param event - Mouse event.\n */\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') ?? '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n /**\n * Renders applied promo code form.\n * @param props - Promo code component props.\n * @returns Applied promo code.\n */\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\n return;\n }\n\n /**\n * On remove promotion action.\n * @param event - Mouse event.\n */\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n return (\n <>\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {'Code '}\n {coupon.Code}\n {'Applied '}\n
\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../../definition-extensions/navigation-menu.ext.props.autogenerated';\n\n/**\n * INavigationMenuViewRootProps.\n */\nexport interface INavigationMenuViewRootProps {\n navProps: INavigationMenuViewProps & INavigationMenuProps<{}>;\n}\n\n/**\n * Represent navigation menu state interface.\n */\nexport interface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: Msdyn365.IImageData[] | null;\n mobileViewLabelText?: string;\n drawerKeyValue: Msdyn365.IDictionary;\n isOnlyMobile: boolean;\n isNavOpen: boolean;\n}\n\n/**\n * NavMenuConstants enum.\n */\nexport enum NavMenuConstants {\n zero = 0,\n one = 1,\n two = 2,\n three = 3,\n four = 4,\n escapeKey = 27,\n rootMenu = 1\n}\n\n/**\n * GridSizes.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Get category image.\n * @param props - Navigation menu props.\n * @param categoryImage - Category Image.\n * @param alttext - AltText String.\n * @returns Returns Node.\n */\nexport const getCategoryImage = (props: INavigationMenuViewRootProps, categoryImage: string, alttext: string): React.ReactNode | null => {\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, props.navProps.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n sm: { q: 'w=162&h=162&m=8', w: 0, h: 0 },\n md: { q: 'w=203&h=203&m=8', w: 0, h: 0 },\n lg: { q: 'w=203&h=203&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const imageData: Msdyn365.IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootDisabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootDisabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n\n this.state = {\n activeMenu: 1,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = 1;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: 1,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = 1;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props.navProps;\n\n return (\n \n \n {this._renderDisplay()}\n
\n
\n
\n
\n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n const menuItemData: IMenuItemData[] = this.props.navProps.menuItemData;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (ArrayExtensions.hasElements(menuItemData)) {\n menuItemData[0].id = 1;\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n const menuItem = this._getFromSubMenu(undefined, menuItemData);\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of menuItemData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
\n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(parentMenuId?: number, menu?: IMenuItemData[]): IMenuItemData | null {\n if (!menu) {\n return null;\n }\n\n for (let index = 0; index <= menu.length - NavMenuConstants.one; index++) {\n const item: IMenuItemData = menu[Number(index)];\n\n if (item.id === this.state.activeMenu) {\n if (!NavigationMenuRootDisabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: item.linkText });\n }\n return item;\n }\n const found = this._getFromSubMenu(item.id, item.subMenu);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL && !(this.state.isOnlyMobile && this.state.activeMenu !== undefined)) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n
\n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n
\n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n
\n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
\n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootDisabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootDisabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootDisabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: 1, mobileViewLabelText: '', isNavOpen: false });\n (this.menuNode.current?.children[0] as HTMLElement).focus();\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootDisabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IMenuItemData, MenuSource, MenuTypeIndexId } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n addThrottledEvent,\n Button,\n Collapse,\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IPayLoad,\n isMobile,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCategoryImage, INavigationMenuViewRootProps, INavigationState, NavMenuConstants } from './navigation-menu-utilities';\n\n/**\n *\n * NavigationMenuRootEnabled component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuRootEnabled extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private readonly supportedLevel: number = NavMenuConstants.four;\n\n private currentLevel: number = NavMenuConstants.zero;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly escapeKey: number = NavMenuConstants.escapeKey;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly promotionalImage: Msdyn365.IImageData[] = [];\n\n private menuItemData: IMenuItemData[] = [];\n\n private readonly payLoad: IPayLoad;\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n private customResizeThrottledEventHandler?: (event: Event) => void;\n\n public constructor(props: INavigationMenuViewRootProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n const { menuItemData } = this.props.navProps;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n const imagesource = menuItemData[0].subMenu[0].imageSource ? menuItemData[0].subMenu[0].imageSource : '';\n const linkText = menuItemData[0].subMenu[0].linkText ? menuItemData[0].subMenu[0].linkText : '';\n this.promotionalImage = [{ src: imagesource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(menuItemData[0].subMenu[0].promotionalContent)) {\n menuItemData[0].subMenu[0].promotionalContent.map(item => {\n const imageSource = item.image.src;\n this.promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n return null;\n });\n }\n }\n this.state = {\n activeMenu: NavMenuConstants.rootMenu,\n mobileViewLabelText: '',\n parentMenu: undefined,\n drawerKeyValue: {},\n isOnlyMobile: this.isOnlyMobile,\n categoryImage: this.promotionalImage,\n isNavOpen: false\n };\n\n this.telemetryContent = getTelemetryObject(\n this.props.navProps.context.request.telemetryPageName!,\n this.props.navProps.friendlyName,\n this.props.navProps.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n this.attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n }\n\n @computed public get isOnlyMobile(): boolean {\n return isMobile({ variant: VariantType.Browser, context: this.props.navProps.context.request }) === 'xs';\n }\n\n public componentDidMount(): void {\n this.customResizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\n document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n this._customUpdateViewport();\n document.body.addEventListener('mousedown', this._handleClickOutside);\n this._addShopAllLink();\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.navProps.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener('resize', this.customResizeThrottledEventHandler!, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n }\n\n public render(): JSX.Element | null {\n this.currentLevel = NavMenuConstants.one;\n const navbarKey = 'header-nav-mobile';\n return (\n \n {this.state.isOnlyMobile ? (\n this._renderMobileMenu()\n ) : (\n <>\n \n {this._renderCollapseMenu()}\n \n )}\n \n );\n }\n\n /**\n * Function to handle nav bar toggle.\n */\n private readonly _toggleNavBar = (): void => {\n this.setState(previousState => ({\n activeMenu: NavMenuConstants.rootMenu,\n isNavOpen: !previousState.isNavOpen\n }));\n };\n\n private _renderCollapseMenu(): JSX.Element | null {\n return (\n \n {this.state.isOnlyMobile ? this._renderMobileMenu() : this._renderDesktopMenu()}\n \n );\n }\n\n private _renderMobileMenu(): JSX.Element {\n const { MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props.navProps;\n\n this.currentLevel = NavMenuConstants.one;\n return (\n \n \n {this.state.isOnlyMobile && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDesktopMenu(): JSX.Element {\n const { Navigation } = this.props.navProps;\n return (\n \n \n {this._renderDisplay()}\n
\n
\n
\n
\n );\n }\n\n private _renderDrawerLink(item: IMenuItemData): JSX.Element | null {\n if (item.linkURL && !StringExtensions.isNullOrWhitespace(item.linkURL)) {\n return this._renderLinkMenuItem(item);\n } else if (!item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem } = this.props.navProps;\n let menuItemData: IMenuItemData[] = [];\n if (this.state.isOnlyMobile) {\n menuItemData = this.menuItemData;\n } else {\n menuItemData = this.props.navProps.menuItemData;\n }\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n let cmsMenuData: IMenuItemData[] | undefined = [];\n let retailMenuItemData: IMenuItemData[] | undefined = [];\n const retailMenuData = JSON.parse(JSON.stringify(menuItemData)) as IMenuItemData[];\n\n for (const item of retailMenuData) {\n retailMenuItemData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n item.subMenu = retailMenuItemData;\n }\n\n for (const item of menuItemData) {\n cmsMenuData = item.subMenu!.filter(subMenuItem => subMenuItem.id && subMenuItem.id < MenuTypeIndexId.Retail);\n }\n\n if (this.state.isOnlyMobile && activeMenu !== undefined && ArrayExtensions.hasElements(menuItemData)) {\n let menuItem: IMenuItemData | null = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({\n parentMenu: undefined\n });\n } else {\n this.setState({\n parentMenu: undefined,\n mobileViewLabelText: menuItemDatum.linkText\n });\n }\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum);\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n if (menuItem) {\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)} {` `}\n \n );\n }\n } else {\n for (const [index, item] of retailMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n
\n );\n }\n\n for (const [index, item] of cmsMenuData.entries()) {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n }\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item?.subMenu;\n if (subMenus && ArrayExtensions.hasElements(subMenus)) {\n for (let index = 0; index <= subMenus.length - NavMenuConstants.one; index++) {\n const subMenu: IMenuItemData = subMenus[Number(index)];\n let parentMenuId = item?.id;\n\n if (subMenu.id === this.state.activeMenu) {\n if (parentMenuId === NavMenuConstants.rootMenu && subMenu.id! < MenuTypeIndexId.Retail) {\n parentMenuId = undefined;\n }\n\n if (!NavigationMenuRootEnabled.isBackTrack) {\n this.setState({ parentMenu: parentMenuId });\n } else {\n this.setState({ parentMenu: parentMenuId, mobileViewLabelText: subMenu.linkText });\n }\n return subMenu;\n }\n const found = this._getFromSubMenu(subMenu);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (ArrayExtensions.hasElements(menuItemData.subMenu)) {\n if (this.state.isOnlyMobile && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData.linkURL && !StringExtensions.isNullOrWhitespace(menuItemData.linkURL)) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id);\n } else if (!menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenuArray?: IMenuItemData[], activeMenu?: number, isSubMenu?: boolean): JSX.Element | null {\n let subMenus: IMenuItemData[] | undefined = subMenuArray;\n if (activeMenu === NavMenuConstants.rootMenu) {\n subMenus = subMenuArray!.filter(subMenuItem => subMenuItem.id && subMenuItem.id >= MenuTypeIndexId.Retail);\n }\n\n const { ListItem } = this.props.navProps;\n const isEnableMultiSupportMenu = this.props.navProps.config.enableMultilevelMenu ?? false;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.navProps.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || !ArrayExtensions.hasElements(subMenus)) {\n this.props.navProps.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions = subMenus.map((option: IMenuItemData, index: number) => {\n const hasOptions = option.subMenu && ArrayExtensions.hasElements(option.subMenu);\n let menuItem: JSX.Element | null;\n if (hasOptions && this.state.isOnlyMobile) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, index);\n } else if (this.currentLevel === NavMenuConstants.one || !hasOptions) {\n menuItem = this.getMenuItem(option, index);\n } else {\n menuItem = null;\n }\n let subMenu;\n const isHavingSubmenu =\n hasOptions && isEnableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - NavMenuConstants.one;\n\n if (hasOptions && !this.state.isOnlyMobile) {\n if (this.currentLevel >= NavMenuConstants.two) {\n subMenu = this._renderSubMenuDrawer(option);\n } else if (this.currentLevel <= this.supportedLevel - NavMenuConstants.one) {\n this.currentLevel++;\n levelClassName = `level-${this.currentLevel.toString()}`;\n subMenu = this._renderSubMenu(option.subMenu, undefined, true);\n }\n }\n if (isHavingSubmenu && this.state.isOnlyMobile) {\n this.currentLevel++;\n levelClassName = isEnableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, option.id, true);\n }\n const imagesource = option.imageSource ? option.imageSource : '';\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, isSubMenu);\n }\n\n private getMenuItem(option: IMenuItemData, index: number): JSX.Element | null {\n let menuItem: JSX.Element | null;\n if (this.currentLevel === NavMenuConstants.one) {\n menuItem = option.linkURL ? this._renderLinkMenuItemLevelOne(option, index) : this._renderSpanMenuItem(option);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, index) : this._renderSpanMenuItem(option);\n }\n return menuItem;\n }\n\n private _renderSubMenuDrawer(menuItem: IMenuItemData): JSX.Element | null {\n const levelClassName = `level-${this.currentLevel.toString()}`;\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue;\n const multiLevelSupportedMenu = this.props.navProps.config.menuLevelSupport ?? NavMenuConstants.three;\n\n let isDrawerOpen = false;\n if (keys[menuItem.id!]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { timeout: 0, isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n this.currentLevel++;\n if (this.currentLevel < multiLevelSupportedMenu) {\n return this._renderSubMenuDrawer(menuSubItem);\n }\n }\n return this._renderDrawerLink(menuSubItem);\n })}\n
\n \n );\n }\n\n /**\n * Method to handle escape key event.\n * @param menuId -Number.\n * @param isDrawerOpen -Boolean.\n * @returns Void.\n */\n private readonly _bindDesktopCategoryClick = (menuId: number | undefined, isDrawerOpen: boolean) => (): void => {\n const { drawerKeyValue } = this.state;\n const newPair = { [menuId!]: !isDrawerOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItemLevelOne(option: IMenuItemData, index?: number, isHoverEffect: boolean = true): JSX.Element | null {\n const { Link } = this.props.navProps;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props.navProps;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\n const { Span } = this.props.navProps;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], isSubmenu?: boolean): JSX.Element | null {\n const { DivContainer, ImageDivContainer, showCategoryImage, showPromotionalContent } = this.props.navProps;\n const isCategoryImageDisplay =\n !this.state.isOnlyMobile &&\n showCategoryImage &&\n this.state.categoryImage !== null &&\n this.state.categoryImage !== undefined &&\n !isSubmenu;\n const isPromotionalContentDisplay =\n !this.state.isOnlyMobile && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !isSubmenu;\n const divContainerClass =\n this.currentLevel > NavMenuConstants.two || isCategoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = NavMenuConstants.one;\n const menuLevelSupportClassName =\n isCategoryImageDisplay &&\n this.props.navProps.config.menuLevelSupport &&\n this.props.navProps.config.menuLevelSupport > NavMenuConstants.two &&\n 'navmenu-multi-level';\n\n const categoryImages = this.state.categoryImage?.filter(image => !StringExtensions.isNullOrWhitespace(image.src));\n const imagesContainerKey = categoryImages?.map(item => item.src).join('-');\n return (\n \n \n {menuOptions}\n \n
\n {isCategoryImageDisplay &&\n ArrayExtensions.hasElements(categoryImages) &&\n categoryImages.map(item => (\n \n {getCategoryImage(this.props, item.src ?? '', item.altText!.toString())}\n {isPromotionalContentDisplay &&\n this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n /**\n * Handle Category image update.\n * @param categoryImageSource - Image source.\n * @param option - Menu Item data.\n * @returns Returns empty.\n */\n private readonly _updateCategoryImage = (categoryImageSource: string, option: IMenuItemData) => () => {\n const linkText = option.linkText ? option.linkText : '';\n const promotionalImage: Msdyn365.IImageData[] = [{ src: categoryImageSource, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n for (const item of option.promotionalContent) {\n const imageSource = item.image.src;\n promotionalImage.push({\n src: imageSource,\n altText: item.text,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n }\n this.setState({\n categoryImage: ArrayExtensions.hasElements(promotionalImage) ? promotionalImage : [{ src: 'empty' }]\n });\n };\n\n /**\n * Handle dropdown toggle.\n * @param data - Menu Item data.\n * @param parentId - Number.\n * @returns Returns empty.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.state.isOnlyMobile) {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n if (this.props.navProps.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuRootEnabled.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n /**\n * Handle back navigation for menu items for mobile view.\n * @returns Returns empty.\n */\n private readonly _handleGoBack = () => () => {\n NavigationMenuRootEnabled.isBackTrack = true;\n this.setState(previousState => ({ activeMenu: previousState.parentMenu }));\n };\n\n /**\n * Function to close the nav menu on click on body.\n * @param event - MouseEvent.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n }\n };\n\n /**\n * Add shop all link for Mobile submenu.\n */\n private readonly _addShopAllLink = (): void => {\n const { menuItemData } = this.props.navProps;\n this.menuItemData = menuItemData;\n if (ArrayExtensions.hasElements(menuItemData) && ArrayExtensions.hasElements(menuItemData[0].subMenu)) {\n this.menuItemData[0].subMenu?.map(item => {\n const shopAllObject = {};\n Object.assign(shopAllObject, { imageSource: item.imageSource });\n Object.assign(shopAllObject, { linkText: this.props.navProps.resources.allCategoryMenuText });\n Object.assign(shopAllObject, { linkURL: item.linkURL });\n if (ArrayExtensions.hasElements(item.subMenu) && item.menuSource === MenuSource.Retail) {\n item.subMenu.unshift(shopAllObject);\n }\n return item;\n });\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Mobile view label text.\n * @param optionLinkText -Sub menu item link text.\n * @returns Boolean.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n const firstIndex: number = 0;\n if (!NavigationMenuRootEnabled.isBackTrack && index === firstIndex) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n /**\n * Function to handle nav menu close.\n */\n private readonly _closeNavMenu = (): void => {\n if (!this.state.isOnlyMobile) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n } else {\n this.setState({ activeMenu: undefined, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Function to close the nav menu on esc key.\n * @param event - Event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey && !this.state.isOnlyMobile && this.state.isNavOpen) {\n this.setState({ activeMenu: NavMenuConstants.rootMenu, mobileViewLabelText: '', isNavOpen: false });\n }\n };\n\n /**\n * Custom update viewport.\n */\n private readonly _customUpdateViewport = (): void => {\n this.setState({ isOnlyMobile: this.isOnlyMobile });\n };\n}\n\nexport default NavigationMenuRootEnabled;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport * as React from 'react';\n\nimport { INavigationMenuProps } from '../definition-extensions/navigation-menu.ext.props.autogenerated';\nimport NavigationMenuRootDisabled from './components/navigation-menu-root-disabled';\nimport NavigationMenuRootEnabled from './components/navigation-menu-root-enabled';\n\n/**\n * Render the Navigation menu.\n * @param props - The navigation menu view props.\n * @returns Return HTML having INavigationMenuViewProps props with navigation menu.\n */\nconst navigationMenuView = (props: INavigationMenuViewProps & INavigationMenuProps<{}>): JSX.Element => {\n if (props.config.enabletopMenu) {\n return ;\n }\n\n return ;\n};\n\nexport default navigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["AbsoluteNavItem","React","constructor","props","super","handleHeadingChange","event","this","config","heading","text","target","value","handleTextChange","handleLinkTextChange","link","linkText","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","render","image","AbsoluteNavItemClassName","classnames","className","contentAction","etext","attributes","getTelemetryAttributes","viewProps","_objectSpread","_createHeading","_createImageMarkup","_createText","_createLinkText","EditableLink","_createLink","moduleProps","HeadingContainer","ItemContainer","Link","linkUrl","destinationUrl","tag","role","href","title","ariaLabel","openInNewTab","undefined","onClick","onTelemetryClick","renderView","editableLink","additionalProperties","Msdyn365","editProps","onTextChange","requestContext","length","onEdit","item","ariaHiddenAttr","src","Object","assign","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","key","shouldSkipToMainImage","AbsoluteNavItemView","Module","_renderElement","Node","_renderConfigureDropdown","dropdown","ContainerProps","LabelContainerProps","errors","select","_renderQuickViewPopup","ModalContainer","ModalHeaderContainer","ModalFooterContainer","ModalHeaderContent","ModalBodyContainer","addToWishlist","addToCart","addToOrderTemplate","cartContainerProps","_renderBodyContent","errorBlock","button","_renderAddToCart","_renderAddToOrderTemplate","_renderAddToWishlist","price","rating","keyInPrice","quantity","configure","inventoryLabel","quantityLimitsMessages","seeDetailsbutton","loading","ProductInfoContainerProps","MediaGalleryContainerProps","CarouselProps","unitOfMeasure","dropdowns","map","_renderConfigure","input","_renderKeyInPrice","_renderQuantity","QuickViewFunctionalComponent","quickView","quickViewButton","isModalOpen","isMobileDevice","SignUpButton","_ref","id","disabled","Button","SignUpError","type","message","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","SignUpInput","pattern","isRequired","onChange","fieldReference","InputType","TextArea","name","ref","SignUpLabel","forId","htmlFor","InputID","renderInputSection","inputs","needToReset","onInputChange","showErrors","addressForm","updateAddress","element","index","label","maxChars","customClass","baseSignUpItem","wrapper","errorMessage","Address","isAddressInput","updateForm","hasError","resetAddress","splice","BusinessSignUp","_this","BusinessSignUpDefaultInputs","FirstName","Text","resources","firstNameLabel","LastName","lastNameLabel","Email","emailAddressLabel","EmailRegex","CompanyName","companyLabel","Department","departmentLabel","JobTitle","jobTitleLabel","Size","companySizeLabel","companyAddressLabel","Comment","commentLabel","formChildReference","moduleClassName","needsToReset","_onInputChange","newForm","state","formItems","forEach","setState","isReady","_isFormReady","hasSubmitErrors","_onAddressChange","currentAddress","addressItem","find","address","addressHasErrors","showAddressErrors","currentInput","match","_onSubmit","preventDefault","firstName","_getItem","lastName","companyName","companyEmail","companyAddress","jobTitle","department","companySize","comments","newPartner","CompanySize","Comments","createProspectAsync","callerContext","actionContext","catch","_onCancel","cleanForm","isAddress","arguments","_addedReference","componentDidMount","_this$formChildRefere","current","focus","shouldComponentUpdate","nextProps","nextState","data","businessSignUp","ContainerWrapper","businessSignUpForm","_renderForm","slots","signUpButtonArialabel","signUpButtonText","cancelButtonArialabel","cancelButtonText","partialAddressErrorMessage","addressSlot","successPageURL","confirmationLink","getUrlSync","form","FormWrapper","items","buttons","disclaimer","RichTextComponent","newFormFields","BusinessSignUpItem","error","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","FeatureSearchContainer","similarLookProduct","query","recommendation","InvoiceDetailsHeaderComponent","msdyn365Commerce","component","invoiceDetails","onError","invoiceNumberText","invoiceIdLabel","replace","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","toString","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","date","invoiceDate","cultureFormatter","formatDate","year","month","day","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","typeName","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","totalDiscount","push","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","ArrayExtensions","line","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","product","Quantity","productUrl","ProductName","RecordId","getProductPageUrlSync","_renderProductImage","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","apiSettings","Image","altText","primaryImageUrl","fallBackSrc","xl","_renderProductDimensions","StringExtensions","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","canBePaid","InvoicePaidStatus","InvoiceDetails","_onAddToCartFailed","bind","_setPayInvoiceErrorModalClose","async","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","productInputs","filter","ProductInput","getSimpleProductsAction","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","otherError","errorMessages","Alert","isOpen","color","assertive","Modal","toggle","ModalHeader","ModalBody","ModalFooter","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","Paid","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onClickHandler","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","placement","EnumExtensions","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","isAdmin","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","MsDyn365","window","location","isShowActions","setShowActions","shouldShowActions","getMobileRowCells","onSelectLine","getInvoiceDetailsPageUrlSync","invoiceRowArialabel","format","invoiceListSelectRadioAriaLabelText","isSelected","getInvoiceStatusText","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","showActions","useState","actionsContainerClassName","payInvoiceClassName","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","extraActionsPopup","InvoicesTableRowComponent","rowCells","getDesktopRowCells","customer","isCurrentUser","AccountNumber","customerAccountNumber","payInvoiceButtonReference","IsB2bAdmin","invoiceCurrentUser","isMobileView","viewport","_window","device","Type","innerWidth","sm","md","getViewport","onSelectAllHandler","invoices","InvoicesTableComponent","setIsMobile","updateViewport","addEventListener","headerClassName","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","_event","setDisabled","payInvoices","errorState","buttonReferences","MakePaymentComponent","hasInvoices","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","invoiceStatusNone","invoicesToAdd","errorReason","failureReason","cartState","getCartState","result","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","errorCode","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","i","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","RequestInvoiceModal","email","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","setTimeout","_focusElement$current","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","includes","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","autoFocus","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","toFixed","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","Heading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","_renderPagination","content","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","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","_this$state$selectedB2","invoiceId","_this$props$data$b2bU","_this$props$data$b2bU2","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","specificInvoice","InvoiceListView","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","navigationMenuSource","menuItemList","static","locale","nameTranslations","nameTranslation","Language","toLowerCase","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","Navigation","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","menuItemData","mergedData","categories","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","shouldOpenNewTab","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","__decorate","observable","computed","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","defaultImageSettings","_categoryImage$imageS","generateImageUrl","categoryImageSettings","menuItemRef","document","body","componentDidUpdate","_this$menuItemRef$cur","children","tabIndex","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","_renderMenu","onFocus","hoverEffect","isParent","imagesource","onMouseOver","_renderPromotionalLink","level","currentItem","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","TabItemType","TabItem","moduleContentClassName","moduleHeaderClassName","_renderTabHeader","itemIndex","contentID","getContentID","tabId","activeContentIDResult","activeTabState","shown","activeContentIndex","TabContentContainer","TabHeaderContainer","TabItemContent","tabHeader","tabSlots","tabItemTitle","observer","_renderTabItemContent","tabItemType","tabItemContent","Tab","tabIndexQuery","_refHandler","activeLink","_onClick","e","update","createTabStateInput","currentTabIndex","newUrl","_setGetParameter","String","history","pushState","path","_onKeyDown","keyCode","slotLength","tabItems","defaultTabIndex","initialIndex","queryString","activeTab","queryTabIndex","arr","split","_getTabHeader","_getTabContent","headingComponent","tabViewProps","TabContainer","headerSection","tabsSection","tabItemContainer","tabContents","tabHeaders","dataActionTabId","selected","onKeyDown","paramName","paramValue","url","URL","requestUrl","params","URLSearchParams","search","set","decodeURIComponent","TileListLinks","_mapEditableLinks","linkdata","editableLinks","links","TileListItem","_telemetryContent","handleParagraphChange","paragraph","linkIndex","_this$props$config$li","backgroundImage","thumbnailImage","redirectionUrl","tileListLinks","tileListLinkContainer","_createParagraph","_renderBackgroundImage","_renderThumbnailImage","tileListItem","tileListContainer","tileListImageContainer","tileListThumbnailImageContainer","tileListHeadingContainer","_heading$tag","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$ba","verifiedImageSettings","moduleType","imagePropertyName","itemImageSettings","_this$props$config$th","layout","msdyn365__moduleLayout","TileListItemViewComponent","renderTileListItemContent","PromoCode","_onInputChangeHandler","promoCodeInputValue","trim","canApply","_applyPromotion","appliedPromo","addPromoCode","promoCode","then","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","promoPlaceholderText","promoCodeApplyButtonText","onSubmit","_removePromotion","_event$currentTarget$","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","cart","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","Code","TelemetryConstant","promoCodeHeadingText","NavMenuConstants","getCategoryImage","alttext","categoryImageUrl","navProps","_props$navProps$confi","imageData","NavigationMenuRootDisabled","supportedLevel","four","zero","escapeKey","_toggleNavBar","previousState","isNavOpen","_bindDesktopCategoryClick","menuId","isDrawerOpen","drawerKeyValue","newPair","categoryImageSource","isOnlyMobile","_closeNavMenu","_this$menuNode$curren","_escFunction","_this$menuNode$curren2","_customUpdateViewport","variant","VariantType","customResizeThrottledEventHandler","_renderMobileMenu","hamburgerAriaLabel","_renderCollapseMenu","Collapse","_renderDesktopMenu","_renderDrawerLink","entries","parentMenuId","menu","one","subMenuArray","isSubMenu","_this$props$navProps$","_this$props$navProps$2","rootMenu","subMenuItem","isEnableMultiSupportMenu","three","getMenuItem","isHavingSubmenu","two","_renderSubMenuDrawer","_renderLinkMenuItemLevelOne","_this$props$navProps$3","toggleButtonText","buttonText","keys","colProps","timeout","Drawer","collapseProps","openGlyph","closeGlyph","glyphPlacement","onToggle","menuSubItem","isHoverEffect","isSubmenu","_this$state$categoryI","isCategoryImageDisplay","isPromotionalContentDisplay","divContainerClass","menuLevelSupportClassName","categoryImages","imagesContainerKey","join","_item$src","NavigationMenuRootEnabled","_addShopAllLink","_this$menuItemData$0$","shopAllObject","unshift","cmsMenuData","retailMenuItemData","retailMenuData","JSON","parse","stringify","renderProductDescription","_props$data$product$r","primaryImageSource","imageUrl","renderProductImage","signInMessage","signInButton","isAuthenticated","user","reviewModal","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","submitButton","cancelButton","createReviewModal"],"sourceRoot":""}