{"version":3,"file":"static/js/15.d615a098e66218aabeca.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/faq-page/faq-page.tsx?d660","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/components/addtocart.component.tsx?a675","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/components/addtowishlist.component.tsx?26b4","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/custom-components/mands-modal.tsx?8d79","webpack://Msdyn365.Commerce.Online/./src/themes/mands/views/sign-in.view.tsx?89de","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/components/b2b-requests-table.tsx?06fc","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.tsx?c1aa","webpack://Msdyn365.Commerce.Online/./src/modules/b2b-requests-status/b2b-requests-status.view.tsx?6b7c","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/buybox.view.tsx?aec4","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.tsx?e0bd","webpack://Msdyn365.Commerce.Online/./src/modules/footer-category/footer-category.view.tsx?fdce","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.tsx?5602","webpack://Msdyn365.Commerce.Online/./src/modules/image-list/image-list.view.tsx?2bed","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/components/links.tsx?7423","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.tsx?792c","webpack://Msdyn365.Commerce.Online/./src/modules/interactive-feature-item/interactive-feature-item.view.tsx?bdcc","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-header.tsx?a6c6","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-payment-summary.tsx?3434","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/components/invoice-details-products.tsx?8f29","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/helpers/invoice-data.ts?608f","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.tsx?b51a","webpack://Msdyn365.Commerce.Online/./src/modules/invoice-details/invoice-details.view.tsx?3784","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoice-error-component.tsx?2ff9","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-filter-component.tsx?5fd4","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-header-component.tsx?f5e1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/components/invoices-table-row-component.tsx?48db","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/invoices-table/invoices-table-component.tsx?9790","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/make-payment-component.tsx?1427","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/pay-invoice-component.tsx?6f61","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-button.tsx?9eb0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-data.ts?00b1","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/invoice-status.ts?5841","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/helpers/pay-invoices.ts?30c0","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/components/request-invoice-modal.tsx?f9b5","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.tsx?2d55","webpack://Msdyn365.Commerce.Online/./src/modules/invoices-list/invoices-list.view.tsx?8b51","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.tsx?6111","webpack://Msdyn365.Commerce.Online/./src/modules/map/map.view.tsx?5db9"],"sourcesContent":["import * as React from 'react';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { IFaqPageData } from './faq-page.data';\r\nimport { IFaqPageProps } from './faq-page.props.autogenerated';\r\nimport { RichTextComponent, RichText } from '@msdyn365-commerce/core';\r\n\r\nexport interface ITabsState {\r\n activeTab: number;\r\n selectedTab: number;\r\n}\r\n/**\r\n *\r\n * tabs component\r\n * @extends {React.PureComponent, ITabsState>}\r\n */\r\nclass FaqPage extends React.PureComponent, ITabsState> {\r\n constructor(props: IFaqPageProps) {\r\n super(props);\r\n this.state = {\r\n activeTab: -1,\r\n selectedTab: -1\r\n };\r\n }\r\n public resetTabLabel = (label: string | null): string | undefined => {\r\n if (label !== null) {\r\n if (label.toLowerCase().includes('delivery')) {\r\n return 'About Delivery';\r\n } else if (label.toLowerCase().includes('returns') || label.toLowerCase().includes('refunds')) {\r\n return 'Returns and Refunds';\r\n } else if (label.toLowerCase().includes('payment')) {\r\n return 'Payment';\r\n } else if (label.toLowerCase().includes('service')) {\r\n return 'About the Service';\r\n } else if (label.toLowerCase().includes('contact')) {\r\n return 'Contact Us';\r\n } else if (label.toLowerCase().includes('returning')) {\r\n return 'Returning Customers';\r\n } else if (label.toLowerCase().includes('other')) {\r\n return `FAQ's`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n return undefined;\r\n };\r\n public getSelectedLabel = () => {\r\n const {\r\n props: {\r\n config: { tabLabels }\r\n }\r\n } = this;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const _selectedTabLabel: string | null = urlParams.get('tab');\r\n if (_selectedTabLabel !== '' || _selectedTabLabel !== null || _selectedTabLabel !== undefined) {\r\n const selectedTabLabel = this.resetTabLabel(_selectedTabLabel);\r\n tabLabels &&\r\n tabLabels.map((tabLabel: React.ReactNode, index: number) => {\r\n if (selectedTabLabel === tabLabel && selectedTabLabel !== undefined) {\r\n this.setState({ selectedTab: index });\r\n return;\r\n }\r\n });\r\n }\r\n };\r\n public render() {\r\n const {\r\n props: {\r\n config: { heading, tabLabels, tabDescriptions }\r\n },\r\n state: { activeTab, selectedTab }\r\n } = this;\r\n const mobileView =\r\n this.props.context.request && this.props.context.request.device && this.props.context.request.device.Type === 'Mobile'\r\n ? true\r\n : false;\r\n if (selectedTab !== -2) {\r\n this.getSelectedLabel();\r\n }\r\n return (\r\n
\r\n {selectedTab === -1 && (\r\n
\r\n

\r\n {heading}\r\n

\r\n
\r\n )}\r\n
\r\n
\r\n
    \r\n {tabLabels &&\r\n tabLabels.map((tabLabel: React.ReactNode, index: number) => {\r\n return (\r\n
  • \r\n = 0 && selectedTab === index)\r\n ? 'tab-list-active'\r\n : ''\r\n }`}\r\n onClick={this.onClickTab(index)}\r\n role='tab'\r\n key={index}\r\n >\r\n {tabLabel}\r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n {activeTab === -1 && selectedTab === -1 && !mobileView ? (\r\n
\r\n

\r\n {heading}\r\n

\r\n
\r\n ) : activeTab === -1 && selectedTab !== -1 ? (\r\n
\r\n {tabDescriptions && tabDescriptions[selectedTab] && }\r\n
\r\n ) : (\r\n
\r\n {tabDescriptions &&\r\n tabDescriptions.map((tabDescription: RichText | undefined, i: number) => {\r\n if (activeTab !== i) {\r\n return undefined;\r\n }\r\n return tabDescription && ;\r\n })}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n private onClickTab = (index: number) => {\r\n return () => this.setState({ activeTab: index, selectedTab: -2 });\r\n };\r\n}\r\n\r\nexport default FaqPage;\r\n","import classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { getCartState, ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport { ProductAvailableQuantity, ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { MandsModal } from '../custom-components/mands-modal';\r\nexport interface IAddToCartComponentProps extends IComponentProps<{ product: SimpleProduct }> {\r\n className?: string;\r\n addToCartText: string;\r\n outOfStockText: string;\r\n disabled?: boolean;\r\n quantity?: number;\r\n navigationUrl?: string;\r\n productAvailability?: ProductAvailableQuantity;\r\n getSelectedProduct?: Promise;\r\n onAdd?(result: ICartActionResult): void;\r\n onError?(result: IAddToCartFailureResult): void;\r\n}\r\n\r\nexport declare type ICartActionFailureReason = 'EMPTYINPUT' | 'MISSINGDIMENSION' | 'OUTOFSTOCK' | 'CARTACTIONFAILED';\r\nexport interface IAddToCartFailureResult {\r\n failureReason: ICartActionFailureReason;\r\n\r\n stockLeft?: number;\r\n cartActionResult?: ICartActionResult;\r\n missingDimensions?: ProductDimension[];\r\n}\r\n\r\nexport interface IAddtoCartComponent extends IComponent {\r\n onClick(): (event: React.MouseEvent, props: IAddToCartComponentProps) => void;\r\n}\r\n\r\nconst onClick = async (\r\n _event: React.MouseEvent,\r\n props: IAddToCartComponentProps,\r\n setDisabled: (disabled: boolean) => void,\r\n setAddtoCartModal: (disabled: boolean) => void,\r\n setProduct: (product: SimpleProduct) => void,\r\n setCheckoutUrl: (checkoutUrl: string) => void,\r\n setQuantity: (quantity: number) => void\r\n): Promise => {\r\n const cartError = addToCartError(props);\r\n let productToAdd = props.data.product;\r\n\r\n if (cartError) {\r\n propogateError(props, cartError);\r\n return;\r\n }\r\n\r\n setDisabled(true);\r\n\r\n if (!(props.getSelectedProduct === undefined)) {\r\n productToAdd = (await props.getSelectedProduct) || props.data.product;\r\n }\r\n\r\n const cartState = await getCartState(props.context.actionContext);\r\n await cartState\r\n .addProductToCart({\r\n product: productToAdd,\r\n count: props.quantity,\r\n availableQuantity: props.productAvailability?.AvailableQuantity,\r\n enableStockCheck: props.context.app.config.enableStockCheck\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n if (props.navigationUrl) {\r\n const quantity = props.quantity ? props.quantity : 0;\r\n setCheckoutUrl(props.navigationUrl);\r\n setProduct(productToAdd);\r\n setQuantity(quantity);\r\n setAddtoCartModal(true);\r\n setDisabled(false);\r\n // window.location.assign(props.navigationUrl);\r\n }\r\n propogateResult(props, result);\r\n } else {\r\n propogateError(props, { failureReason: 'CARTACTIONFAILED', cartActionResult: result });\r\n setDisabled(false);\r\n }\r\n });\r\n};\r\n\r\nconst AddToCartComponentActions = {\r\n onClick: onClick\r\n};\r\n\r\nconst AddToCart: React.FC = (props: IAddToCartComponentProps) => {\r\n const [disabled, setDisabled] = useState(false);\r\n const [isAddToCartModalOpen, setAddtoCartModal] = useState(false);\r\n const [product, setProduct] = useState();\r\n const [checkoutUrl, setCheckoutUrl] = useState('');\r\n const [quantity, setQuantity] = useState(0);\r\n const onClickHandler = (event: React.MouseEvent) => {\r\n return AddToCartComponentActions.onClick(event, props, setDisabled, setAddtoCartModal, setProduct, setCheckoutUrl, setQuantity);\r\n };\r\n return (\r\n <>\r\n \r\n \r\n {getLinkText(props)}\r\n \r\n \r\n );\r\n};\r\n\r\n// Set default props\r\nAddToCart.defaultProps = {\r\n quantity: 1\r\n};\r\n\r\nconst addToCartModalTitle = (quantity: number, setAddtoCartModal: (disabled: boolean) => void): JSX.Element => {\r\n const closeModal = () => {\r\n setAddtoCartModal(false);\r\n };\r\n\r\n return (\r\n
\r\n Great Choice! {quantity} successfully added to bag\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst addToCartModalBody = (product: SimpleProduct | undefined, quantity: number): JSX.Element => {\r\n const productName = product && product.Name ? product.Name : '';\r\n const dimensions = product && product.Dimensions ? product.Dimensions : undefined;\r\n // Dimension type value 3 is for Size\r\n const sizeDimensionsIndex = product && product.Dimensions ? product.Dimensions.findIndex(dim => dim.DimensionTypeValue === 3) : -1;\r\n const price = product && product.Price ? product.Price.toFixed(2) : undefined;\r\n const productImage = product && product.PrimaryImageUrl ? product.PrimaryImageUrl : '';\r\n return (\r\n
\r\n {productImage && product-image}\r\n
\r\n {productName && {productName}}\r\n
\r\n {price && £{price}}\r\n / \r\n {sizeDimensionsIndex !== -1 && dimensions && (\r\n {dimensions[sizeDimensionsIndex].DimensionValue?.Value}\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst addToCartModalFooter = (checkoutUrl: string, setAddtoCartModal: (disabled: boolean) => void): JSX.Element => {\r\n const closeModal = () => {\r\n setAddtoCartModal(false);\r\n };\r\n\r\n const navigateToCart = () => {\r\n window.location.assign(checkoutUrl);\r\n };\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst getLinkText = (props: IAddToCartComponentProps): string => {\r\n if (!shouldShowOutOfStock(props, false)) {\r\n return props.addToCartText;\r\n }\r\n\r\n return props.outOfStockText;\r\n};\r\n\r\nconst addToCartError = (props: IAddToCartComponentProps): IAddToCartFailureResult | undefined => {\r\n if (!props.data || !props.data.product.RecordId) {\r\n // No product exists, won't be able to add to cart\r\n return { failureReason: 'EMPTYINPUT' };\r\n }\r\n\r\n if (props.data.product.Dimensions) {\r\n const missingDimensions = props.data.product.Dimensions.filter(\r\n dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value)\r\n );\r\n\r\n if (missingDimensions.length > 0) {\r\n // At least one dimension with no value exists on the product, won't be able to add to cart\r\n return { failureReason: 'MISSINGDIMENSION', missingDimensions: missingDimensions };\r\n }\r\n }\r\n\r\n if (shouldShowOutOfStock(props, true)) {\r\n const availableQuantity = (props.productAvailability && props.productAvailability.AvailableQuantity) || 0;\r\n const stockLeft = Math.max(availableQuantity - props.context.app.config.outOfStockThreshold, 0);\r\n\r\n return { failureReason: 'OUTOFSTOCK', stockLeft: stockLeft };\r\n }\r\n\r\n // Only allow adding to cart if not showing out of stock\r\n return undefined;\r\n};\r\n\r\nconst shouldShowOutOfStock = (props: IAddToCartComponentProps, includeCurrentQuantity: boolean): boolean => {\r\n if (props.context.app.config.enableStockCheck === false) {\r\n // Out of stock turn off, don't bother showing out of stock\r\n return false;\r\n }\r\n\r\n if (!props.data || !props.data.product.RecordId) {\r\n // No product exists, don't bother showing out of stock\r\n return false;\r\n }\r\n\r\n if (props.data.product.Dimensions) {\r\n if (props.data.product.Dimensions.find(dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value))) {\r\n // At least one dimension with no value exists on the product, so also don't show out of stock\r\n return false;\r\n }\r\n }\r\n\r\n // if (props.productAvailability && props.productAvailability.AvailableQuantity !== undefined && props.productAvailability.AvailableQuantity >= parseInt(props.context.app.config.outOfStockThreshold, 10) + (includeCurrentQuantity && props.quantity ? props.quantity : 1)) {\r\n // return false;\r\n // } else {\r\n // // Out of stock\r\n // return true;\r\n // }\r\n\r\n const outOfStockThresholdLocal: number = props.context.app.config.outOfStockThreshold\r\n ? props.context.app.config.outOfStockThreshold\r\n : 0;\r\n\r\n const currentQuantity: number = includeCurrentQuantity && props.quantity ? props.quantity : 1;\r\n\r\n if (\r\n props.productAvailability &&\r\n props.productAvailability.AvailableQuantity !== undefined &&\r\n props.productAvailability.AvailableQuantity >= outOfStockThresholdLocal + currentQuantity\r\n ) {\r\n return false;\r\n } else {\r\n // Out of stock\r\n return true;\r\n }\r\n};\r\n\r\nconst propogateResult = (props: IAddToCartComponentProps, result: ICartActionResult): void => {\r\n if (props.onAdd) {\r\n props.onAdd(result);\r\n }\r\n};\r\n\r\nconst propogateError = (props: IAddToCartComponentProps, result: IAddToCartFailureResult): void => {\r\n if (props.onError) {\r\n props.onError(result);\r\n }\r\n};\r\n\r\nexport default AddToCart;\r\n","import classnames from 'classnames';\r\nimport * as Popper from 'popper.js';\r\nimport React, { useState } from 'react';\r\n\r\nimport { buildWishlistLine } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, UncontrolledTooltip } from '@msdyn365-commerce-modules/utilities';\r\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { AsyncResult, CartLine, CommerceList, ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n addLinesAsync,\r\n createCommerceListAsync,\r\n createGetByCustomerInput,\r\n removeLinesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\r\n\r\nexport interface IAddToWishlistComponentProps extends IComponentProps {\r\n className?: string;\r\n addToWishlistButtonText: string;\r\n removeFromWishlistButtonText: string;\r\n nameOfWishlist: string;\r\n\r\n addToWishlistMessage?: string;\r\n removedFromWishlistMessage?: string;\r\n addItemToWishlistError?: string;\r\n removeItemFromWishlistError?: string;\r\n\r\n showButtonText?: boolean;\r\n showButtonTooltip?: boolean;\r\n tooltipPosition?: Popper.Placement;\r\n showStatusMessage?: boolean;\r\n showRemoveButton?: boolean;\r\n disabled?: boolean;\r\n cartline?: CartLine;\r\n canAddMasterProduct?: boolean;\r\n\r\n getSelectedProduct?: Promise;\r\n\r\n onSuccess?(result: IWishlistActionSuccessResult, cartline?: CartLine): void;\r\n onError?(result: IWishlistActionErrorResult): void;\r\n}\r\n\r\nexport interface IWishlistActionSuccessResult {\r\n status: 'ADDED' | 'REMOVED';\r\n}\r\n\r\nexport interface IWishlistActionErrorResult {\r\n status: 'FAILED' | 'MISSINGDIMENSION';\r\n\r\n missingDimensions?: ProductDimension[];\r\n}\r\n\r\ninterface IAddToWishlistStateManager {\r\n waiting: boolean;\r\n canRemove: boolean;\r\n content: IAddtoWishlistContentState;\r\n\r\n setWaiting(newWaiting: boolean): void;\r\n setContent(newContent: IAddtoWishlistContentState): void;\r\n setCanRemove(newCanRemove: boolean): void;\r\n}\r\n\r\ninterface IAddtoWishlistContentState {\r\n showAlert?: boolean;\r\n wishlistTextMessage?: string;\r\n color?: string;\r\n}\r\n\r\ninterface IAddtoWishlistData {\r\n wishlists?: CommerceList[];\r\n product: SimpleProduct;\r\n}\r\n\r\nexport interface IAddtoWishlistComponent extends IComponent {\r\n onClick(): (event: React.MouseEvent, props: IAddToWishlistComponentProps, state: IAddToWishlistStateManager) => void;\r\n}\r\n\r\nconst onClick = async (\r\n _event: React.MouseEvent,\r\n props: IAddToWishlistComponentProps,\r\n state: IAddToWishlistStateManager\r\n): Promise => {\r\n const { user } = props.context.request;\r\n let { product } = props.data;\r\n\r\n if (state.waiting) {\r\n return;\r\n }\r\n\r\n if (!user.isAuthenticated && user.signInUrl && window) {\r\n window.location.assign(user.signInUrl);\r\n\r\n return;\r\n }\r\n\r\n state.setWaiting(true);\r\n if (!(props.getSelectedProduct === undefined)) {\r\n product = (await props.getSelectedProduct) || props.data.product;\r\n }\r\n\r\n await (doesProductExistInWishlist(product, props) ? removeFromWishlist(product, props, state) : addToWishlist(product, props, state));\r\n state.setWaiting(false);\r\n};\r\n\r\nconst onDismiss = (state: IAddToWishlistStateManager): void => {\r\n state.setContent({ color: 'success', showAlert: false });\r\n};\r\n\r\nconst AddToWishlistComponentActions = {\r\n onClick: onClick,\r\n onDismiss: onDismiss\r\n};\r\n\r\nconst AddToWishlist: React.FC = (props: IAddToWishlistComponentProps) => {\r\n const [waiting, setWaiting] = useState(false);\r\n const [canRemove, setCanRemove] = useState(doesProductExistInWishlist(props.data.product, props));\r\n const [content, setContent] = useState({});\r\n const state: IAddToWishlistStateManager = {\r\n waiting,\r\n canRemove,\r\n content,\r\n\r\n setWaiting,\r\n setCanRemove,\r\n setContent\r\n };\r\n\r\n React.useEffect(() => {\r\n setCanRemove(doesProductExistInWishlist(props.data.product, props));\r\n }, [props]);\r\n\r\n const {\r\n removeFromWishlistButtonText,\r\n addToWishlistButtonText,\r\n showStatusMessage,\r\n showRemoveButton,\r\n showButtonText,\r\n className,\r\n disabled,\r\n showButtonTooltip,\r\n tooltipPosition\r\n } = props;\r\n\r\n const onClickHandler = (event: React.MouseEvent) => {\r\n return AddToWishlistComponentActions.onClick(event, props, state);\r\n };\r\n const onDismissHandler = () => {\r\n return AddToWishlistComponentActions.onDismiss(state);\r\n };\r\n const ariaLabel = state.canRemove ? removeFromWishlistButtonText : addToWishlistButtonText;\r\n const addToWishlistRef: React.RefObject = React.createRef();\r\n const removeFromWishlistRef: React.RefObject = React.createRef();\r\n const showMessage = showStatusMessage !== undefined ? showStatusMessage : true;\r\n const showButton = showRemoveButton !== undefined ? showRemoveButton : true;\r\n const showTooltip = showButtonTooltip !== undefined ? showButtonTooltip : true;\r\n const tooltipPos = showButtonTooltip !== undefined ? tooltipPosition : 'right';\r\n\r\n if (state.canRemove && !showButton) {\r\n return null;\r\n }\r\n return (\r\n \r\n {showButtonText ? (\r\n <>\r\n \r\n {ariaLabel}\r\n \r\n {showTooltip && (\r\n \r\n {ariaLabel}\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n \r\n {showTooltip && (\r\n \r\n {ariaLabel}\r\n \r\n )}\r\n \r\n )}\r\n {state.content.showAlert && showMessage ? (\r\n
\r\n \r\n {state.content.wishlistTextMessage}\r\n \r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst doesProductExistInWishlist = (product: SimpleProduct, props: IAddToWishlistComponentProps): boolean => {\r\n const { wishlists } = props.data;\r\n\r\n if (!wishlists || !wishlists[0]) {\r\n return false;\r\n }\r\n\r\n const { CommerceListLines } = wishlists[0];\r\n\r\n if (!CommerceListLines || CommerceListLines.length === 0) {\r\n return false;\r\n }\r\n\r\n for (const wishlistItem of CommerceListLines) {\r\n if (wishlistItem.ProductId === product.RecordId) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst propogateSuccess = (props: IAddToWishlistComponentProps, result: IWishlistActionSuccessResult): void => {\r\n const { onSuccess, cartline } = props;\r\n\r\n if (onSuccess) {\r\n cartline ? onSuccess(result, props.cartline) : onSuccess(result);\r\n }\r\n};\r\n\r\nconst propogateError = (props: IAddToWishlistComponentProps, result: IWishlistActionErrorResult): void => {\r\n const { onError } = props;\r\n\r\n if (onError) {\r\n onError(result);\r\n }\r\n};\r\n\r\nconst addToWishlist = (\r\n product: SimpleProduct,\r\n props: IAddToWishlistComponentProps,\r\n state: IAddToWishlistStateManager\r\n): AsyncResult => {\r\n const { canAddMasterProduct, context } = props;\r\n\r\n if (product.Dimensions && !canAddMasterProduct) {\r\n const missingDimensions = product.Dimensions.filter(dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n if (missingDimensions.length > 0) {\r\n // At least one dimension with no value exists on the product, won't be able to add to cart\r\n propogateError(props, { status: 'MISSINGDIMENSION', missingDimensions: missingDimensions });\r\n\r\n return AsyncResult.resolve();\r\n }\r\n }\r\n\r\n const userAccountNumber = context.request.user.customerAccountNumber;\r\n\r\n if (userAccountNumber) {\r\n if (!props.data.wishlists || props.data.wishlists.length === 0) {\r\n const wishlistName = props.nameOfWishlist;\r\n\r\n const listData: CommerceList = {\r\n CustomerId: context.request.user.customerAccountNumber,\r\n Name: wishlistName,\r\n // This is the type value specifically for a wishlist\r\n CommerceListTypeValue: 1,\r\n Id: 0\r\n };\r\n\r\n return createCommerceListAsync({ callerContext: context.actionContext }, listData)\r\n .then(commerceList => {\r\n return callAddWishlistLine(props, state, userAccountNumber, commerceList.Id, product.RecordId);\r\n })\r\n .catch(error => {\r\n if (context.telemetry) {\r\n context.telemetry.warning(error);\r\n context.telemetry.debug('Unable to create a wishlist');\r\n }\r\n propogateError(props, { status: 'FAILED' });\r\n });\r\n } else {\r\n return callAddWishlistLine(props, state, userAccountNumber, props.data.wishlists[0].Id, product.RecordId);\r\n }\r\n }\r\n\r\n return AsyncResult.resolve();\r\n};\r\n\r\nconst callAddWishlistLine = (\r\n props: IAddToWishlistComponentProps,\r\n state: IAddToWishlistStateManager,\r\n userAccountNumber: string,\r\n wishlistId: number,\r\n productId: number\r\n): AsyncResult => {\r\n const { context } = props;\r\n\r\n return addLinesAsync({ callerContext: context.actionContext }, wishlistId, [\r\n buildWishlistLine(productId, userAccountNumber, wishlistId)\r\n ])\r\n .then(createdCommerceList => {\r\n context.actionContext.update(createGetByCustomerInput({}, userAccountNumber), [createdCommerceList]);\r\n if (context.telemetry) {\r\n context.telemetry.debug(`Added item to the wishlist ${createdCommerceList}`);\r\n }\r\n state.setCanRemove(true);\r\n state.setContent({\r\n color: 'success',\r\n showAlert: true,\r\n wishlistTextMessage: props.addToWishlistMessage ? props.addToWishlistMessage : 'Added to your wishlist'\r\n });\r\n propogateSuccess(props, { status: 'ADDED' });\r\n })\r\n .catch(error => {\r\n if (context.telemetry) {\r\n context.telemetry.warning(error);\r\n context.telemetry.debug(`Unable to add item to wishlist ${error}`);\r\n }\r\n\r\n state.setContent({ color: 'danger', showAlert: true, wishlistTextMessage: props.addItemToWishlistError });\r\n propogateError(props, { status: 'FAILED' });\r\n });\r\n};\r\n\r\nconst removeFromWishlist = (\r\n product: SimpleProduct,\r\n props: IAddToWishlistComponentProps,\r\n state: IAddToWishlistStateManager\r\n): AsyncResult => {\r\n const { context, data, removedFromWishlistMessage, removeItemFromWishlistError } = props;\r\n const { wishlists } = data;\r\n const { actionContext, request, telemetry } = context;\r\n const accountNumber = request.user.customerAccountNumber;\r\n\r\n if (wishlists && wishlists[0]) {\r\n const wishlistLine = wishlists[0].CommerceListLines!.find(line => line.ProductId === product.RecordId);\r\n\r\n if (wishlistLine) {\r\n return removeLinesAsync({ callerContext: actionContext }, wishlists[0].Id, [wishlistLine])\r\n .then(commerceList => {\r\n if (accountNumber) {\r\n context.actionContext.update(createGetByCustomerInput({}, accountNumber), [commerceList]);\r\n }\r\n\r\n if (telemetry) {\r\n telemetry.debug(`[WishlistButton] ${product.RecordId} removed from Wishlist ${commerceList.Id}`);\r\n }\r\n state.setCanRemove(false);\r\n state.setContent({\r\n color: 'success',\r\n showAlert: true,\r\n wishlistTextMessage: removedFromWishlistMessage ? removedFromWishlistMessage : `Removed item from the wishlist`\r\n });\r\n propogateSuccess(props, { status: 'REMOVED' });\r\n })\r\n .catch(error => {\r\n if (telemetry) {\r\n telemetry.warning(error);\r\n telemetry.debug('[WishlistButton] Error removing item from the wishlist');\r\n }\r\n\r\n state.setContent({ color: 'danger', wishlistTextMessage: removeItemFromWishlistError });\r\n propogateError(props, { status: 'FAILED' });\r\n });\r\n }\r\n } else {\r\n if (telemetry) {\r\n telemetry.debug(\"[WishlistButton] Can't remove from wishlist since no wishlist exisits OR there is no product data\");\r\n }\r\n }\r\n\r\n return AsyncResult.resolve();\r\n};\r\n\r\nexport default AddToWishlist;\r\n","import { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\nimport React from 'react';\r\n\r\nexport interface IMandsModalProps {\r\n isOpen: boolean;\r\n modalTitle?: JSX.Element | string;\r\n modalBody?: JSX.Element | string;\r\n modalFooter?: JSX.Element | string;\r\n className: string;\r\n}\r\n\r\nexport const MandsModal: React.FC = props => {\r\n return (\r\n
\r\n \r\n {props.modalTitle && {props.modalTitle}}\r\n {props.modalBody && {props.modalBody}}\r\n {props.modalFooter && {props.modalFooter}}\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import * as React from 'react';\r\n\r\n/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport {\r\n ISignInItem,\r\n ISignInLocalAccount,\r\n ISignInLoading,\r\n ISignInViewProps\r\n} from '@msdyn365-commerce-modules/account-management/dist/types/modules/sign-in/sign-in';\r\nimport { ISignInConfig, ISignInProps, IGuestURLData } from '../definition-extensions/sign-in.ext.props.autogenerated';\r\n\r\nconst LocalAccount = (props: ISignInLocalAccount, guesturl: IGuestURLData | undefined): JSX.Element | null => {\r\n const { localAccount, items, forgetPassword, disclaimer, error, signInButton } = props;\r\n return (\r\n \r\n {items &&\r\n items.map((item: ISignInItem) => {\r\n return (\r\n \r\n {item.label}\r\n \r\n {item.input}\r\n {item.error}\r\n \r\n );\r\n })}\r\n {forgetPassword}\r\n {disclaimer}\r\n {error}\r\n {signInButton}\r\n
\r\n
\r\n {/* */}\r\n
\r\n );\r\n};\r\n\r\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\r\n return (\r\n \r\n \r\n {icon}\r\n {message}\r\n \r\n \r\n );\r\n};\r\n\r\nconst SignInView: React.FC> = props => {\r\n const {\r\n signIn,\r\n viewState,\r\n loading,\r\n defaultAADConainer,\r\n aadConainer,\r\n signInSection,\r\n signUpSection,\r\n signInSectionHeading,\r\n signInLocalAccount,\r\n signUpSectionHeading,\r\n signUpLink,\r\n config\r\n } = props;\r\n const { guestURL } = config;\r\n return (\r\n \r\n {viewState.isShowLoading && }\r\n {viewState.isShowLoading && }\r\n \r\n \r\n {signInSectionHeading}\r\n {LocalAccount(signInLocalAccount, guestURL)}\r\n \r\n {signUpSectionHeading}\r\n {signUpLink}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SignInView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { ICoreContext, IDateFormatOptions, IRequestContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerOperationRequestDetails } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n IDataTableProps,\n IHeadingsProperty,\n ITableItemProps,\n ITableRowProps,\n Table,\n TableDataType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IB2bRequestsStatusData } from '../b2b-requests-status.data';\nimport { IB2bRequestsStatusProps } from '../b2b-requests-status.props.autogenerated';\n\nexport interface IB2bRequestsTableProps {\n moduleProps: IB2bRequestsStatusProps;\n isMobile: boolean;\n mobileExcludedColumns: string[];\n}\n\nexport interface IB2bRequestsTableResources {\n b2bRequestsTypeCreateProspect: string;\n b2bRequestsTypeAddUser: string;\n b2bRequestsTypeEditUser: string;\n b2bRequestsTypeDeleteUser: string;\n b2bRequestsTypeRequestAccountStatement: string;\n b2bRequestsTypeRequestInvoiceCopy: string;\n b2bRequestsTypeUnknown: string;\n b2bRequestsStatusRequested: string;\n b2bRequestsStatusProcessed: string;\n b2bRequestsStatusError: string;\n b2bRequestsNumberOfItems: string;\n b2bRequestsNumberOfItemsSingular: string;\n b2bRequestsNameDisplay: string;\n b2bRequestsPreviousText: string;\n b2bRequestsNextText: string;\n b2bRequestsUserColumn: string;\n b2bRequestsStatusColumn: string;\n b2bRequestsRequestDateColumn: string;\n b2bRequestsTypeColumn: string;\n b2bRequestsDescriptionColumn: string;\n b2bRequestsAccountStatementDetails: string;\n b2bRequestsInvoiceCopyDetails: string;\n businessUserSelectCheckBoxAriaLabelText?: string;\n sortByAscending?: string;\n sortByDescending?: string;\n}\n\nexport enum RequestsTableColumnHeader {\n Name = 'User',\n Status = 'Status',\n RequestDate = 'Request date',\n Type = 'Request type',\n Description = 'Request detail'\n}\n\nconst getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n\n // NOTE: Typing on requestURL is incorrect\n if (reqContext.url.requestUrl.href) {\n return new URL(reqContext.url.requestUrl.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n};\n\nconst getUserName = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources) => {\n if (StringExtensions.isNullOrEmpty(request.UserFirstName)) {\n if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return '';\n }\n\n return request.UserLastName;\n } else if (StringExtensions.isNullOrEmpty(request.UserLastName)) {\n return request.UserFirstName;\n }\n\n return resources.b2bRequestsNameDisplay.replace('{0}', request.UserFirstName!).replace('{1}', request.UserLastName!);\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 * Gets the value to display for the request details.\n * @param request - The request to parse for the details.\n * @param resources - The resources.\n * @param context - The context.\n * @returns The string to display.\n */\nconst getDetails = (request: BusinessPartnerOperationRequest, resources: IB2bRequestsTableResources, context: ICoreContext) => {\n if (!request.Details) {\n return '';\n }\n\n const requestDetails: BusinessPartnerOperationRequestDetails = request.Details;\n\n const accountStatementStartDateTime = formatDate(context, requestDetails.AccountStatementStartDateTime) || '';\n const accountStatementEndDateTime = formatDate(context, requestDetails.AccountStatementEndDateTime) || '';\n const invoiceId = requestDetails.InvoiceId ?? '';\n\n switch (request.TypeValue) {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 5:\n if (\n !StringExtensions.isNullOrEmpty(accountStatementStartDateTime) &&\n !StringExtensions.isNullOrEmpty(accountStatementEndDateTime)\n ) {\n return resources.b2bRequestsAccountStatementDetails\n .replace('{0}', accountStatementStartDateTime)\n .replace('{1}', accountStatementEndDateTime);\n }\n\n return '';\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- workaround for not being able to use enum value\n case 6:\n if (!StringExtensions.isNullOrEmpty(invoiceId)) {\n return resources.b2bRequestsInvoiceCopyDetails.replace('{0}', invoiceId);\n }\n\n return '';\n default:\n return '';\n }\n};\n\nconst createTableItems = (\n operationRequests: BusinessPartnerOperationRequest[] | undefined,\n props: IB2bRequestsStatusProps\n): ITableRowProps[] => {\n if (!ArrayExtensions.hasElements(operationRequests)) {\n return [];\n }\n\n return operationRequests.map(request => {\n return {\n row: [\n {\n id: props.resources.b2bRequestsTypeColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyTypeValue(request.TypeValue ?? 0, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsRequestDateColumn,\n type: TableDataType.Text,\n value: formatDate(props.context, request.CreatedDateTime)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsDescriptionColumn,\n type: TableDataType.Text,\n value: getDetails(request, props.resources, props.context)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsUserColumn,\n type: TableDataType.Text,\n value: getUserName(request, props.resources)\n } as ITableItemProps,\n {\n id: props.resources.b2bRequestsStatusColumn,\n type: TableDataType.Text,\n value: getDisplayFriendlyStatusValue(request.StatusValue ?? 0, props.resources)\n } as ITableItemProps\n ],\n isSelected: false,\n className: props.config.className\n };\n });\n};\n\nconst getDisplayFriendlyTypeValue = (typeValue: number, resources: IB2bRequestsTableResources): string => {\n switch (typeValue) {\n case 1:\n return resources.b2bRequestsTypeCreateProspect;\n case 2:\n return resources.b2bRequestsTypeAddUser;\n case 3:\n return resources.b2bRequestsTypeDeleteUser;\n case 4:\n return resources.b2bRequestsTypeEditUser;\n case 5:\n return resources.b2bRequestsTypeRequestAccountStatement;\n case 6:\n return resources.b2bRequestsTypeRequestInvoiceCopy;\n default:\n return resources.b2bRequestsTypeUnknown;\n }\n};\n\nconst getDisplayFriendlyStatusValue = (statusValue: number, resources: IB2bRequestsTableResources): string => {\n switch (statusValue) {\n case 1:\n return resources.b2bRequestsStatusProcessed;\n case 2:\n return resources.b2bRequestsStatusError;\n default:\n return resources.b2bRequestsStatusRequested;\n }\n};\n\nconst createTableProps = (tableProps: IB2bRequestsTableProps) => {\n const { context, data, resources } = tableProps.moduleProps;\n\n const tableData = createTableItems(data.operationRequests.result, tableProps.moduleProps);\n const tableHeading =\n (ArrayExtensions.hasElements(tableData) &&\n tableData[0].row\n .filter(item => {\n // Check that this is either not mobile or the column should be displayed when mobile.\n return !tableProps.isMobile || !tableProps.mobileExcludedColumns.includes(item.id);\n })\n .map(item => {\n return {\n name: item.id,\n sortable: true,\n ariaLabel: resources.columnSortAriaLabel\n } as IHeadingsProperty;\n })) ||\n [];\n\n return {\n resources: {},\n headings: tableHeading,\n rows: tableData,\n className: `${tableProps.moduleProps.config.className}__table`,\n editLinkText: '',\n deleteLinkText: '',\n viewLinkText: '',\n enableToModify: false,\n actionLinkText: '',\n showCheckBoxes: false,\n isSortable: true,\n showPagination: true,\n minifyActions: tableProps.isMobile,\n excludedColumns: tableProps.isMobile ? tableProps.mobileExcludedColumns : [],\n paginationProperty: {\n skipCount:\n context.request.query?.skip && !isNaN(Number.parseInt(context.request.query.skip, 10))\n ? Number.parseInt(context.request.query.skip, 10)\n : 0,\n itemPerPage: 10,\n prevText: resources.b2bRequestsPreviousText,\n nextText: resources.b2bRequestsNextText,\n paginationText: '',\n url: (context && getCurrentUrl(context.request).href) || ''\n },\n isSingleSelectOnly: true,\n actions: {\n onDelete: undefined,\n onEdit: undefined,\n onView: undefined\n },\n businessUserSelectCheckBoxAriaLabelText: tableProps.moduleProps.resources.businessUserSelectCheckBoxAriaLabelText,\n sortByAscending: tableProps.moduleProps.resources.sortByAscending,\n sortByDescending: tableProps.moduleProps.resources.sortByDescending\n } as IDataTableProps;\n};\n\nexport const B2bRequestsTable: React.FC = (tableProps: IB2bRequestsTableProps) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format, Heading, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport { computed } from 'mobx';\nimport * as React from 'react';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\n\nimport { IB2bRequestsStatusData } from './b2b-requests-status.data';\nimport { IB2bRequestsStatusProps, IHeadingData } from './b2b-requests-status.props.autogenerated';\nimport { B2bRequestsTable } from './components/b2b-requests-table';\n\nexport interface IB2bRequestsStatusViewProps extends IB2bRequestsStatusProps {\n b2bRequestsStatus: IModuleProps;\n heading?: React.ReactNode;\n table: React.ReactNode;\n}\n\n/**\n *\n * B2bRequestsStatus component.\n * @extends {React.PureComponent>}\n */\nclass B2bRequestsStatus extends React.PureComponent> {\n @computed get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { config } = this.props;\n\n if (!isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n return null;\n }\n\n const className = config.className || '';\n\n const viewProps = {\n ...this.props,\n b2bRequestsStatus: {\n moduleProps: this.props,\n className\n },\n heading: this.renderHeader(className, config.heading),\n table: this.renderTable()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly renderHeader = (className: string, headingData: IHeadingData): React.ReactNode => {\n const itemCount = this.props.data.operationRequests.result?.length ?? 0;\n\n return (\n
\n \n {this.getItemNumberDisplayString(itemCount)}\n
\n );\n };\n\n /**\n * Returns columns that needs to be excluded for mobile view.\n * @returns Array of column names.\n */\n private readonly _retrieveExcludedColumns = (): string[] => {\n const { resources } = this.props;\n return [resources.b2bRequestsRequestDateColumn, resources.b2bRequestsDescriptionColumn, resources.b2bRequestsUserColumn];\n };\n\n private readonly renderTable = (): React.ReactNode => {\n return (\n \n );\n };\n\n private readonly getItemNumberDisplayString = (itemCount: number): string => {\n switch (itemCount) {\n case 0:\n return '';\n case 1:\n return format(this.props.resources.b2bRequestsNumberOfItemsSingular, itemCount);\n default:\n return format(this.props.resources.b2bRequestsNumberOfItems, itemCount);\n }\n };\n}\n\nexport default B2bRequestsStatus;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusViewProps } from './b2b-requests-status';\n\nconst B2bRequestsStatusView: React.FC = props => {\n const { b2bRequestsStatus, heading, table } = props;\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxData,\n IBuyboxFindInStoreViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IBuyboxViewProps\n} from '@msdyn365-commerce-modules/buybox';\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxProps as IBuyboxExtentionProps,\n IBuyboxResources as IBuyboxExtentionResources\n} from '../definition-extensions/buybox.ext.props.autogenerated';\n\nconst BuyboxView: React.FC> = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n telemetryContent,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n callbacks,\n state,\n resources,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n shopSimilarDescription,\n unitOfMeasure\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {_renderTextBlock(props.slots.textBlocks)}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity &&\n _renderQuantity(\n quantity,\n callbacks,\n props,\n state,\n resources,\n quantityLimitsMessages,\n min,\n max,\n applyDefaultOrderSettings,\n telemetryContent\n )}\n {inventoryLabel}\n {_renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\n {findInStore && _renderFindInStore(findInStore)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\n if (!textBlocks || textBlocks.length === 0) {\n return undefined;\n }\n\n return <>{textBlocks[0]};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderCartAndActions = (\n addToCart?: IBuyboxAddToCartViewProps,\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\n addToWishlist?: IBuyboxAddToWishlistViewProps\n): JSX.Element | undefined => {\n if (!addToCart && !addToWishlist) {\n return undefined;\n }\n\n return (\n
\n {addToCart && addToCart.errorBlock}\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\n {addToWishlist && addToWishlist.errorBlock}\n
\n {addToCart && addToCart.button}\n {addToOrderTemplate && addToOrderTemplate.button}\n {addToWishlist && addToWishlist.button}\n
\n
\n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\n/**\n * On Change function.\n * @param callbacks -Callbacks.\n * @returns Update quantity.\n */\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n};\n\nconst _renderQuantity = (\n quantityComponent: IBuyboxProductQuantityViewProps,\n callbacks: IBuyboxCallbacks,\n props: IBuyboxProps,\n state: IBuyboxState,\n extentionResources: IBuyboxExtentionResources,\n quantityLimitsMessages: React.ReactNode,\n min: number | undefined,\n max: number | undefined,\n applyDefaultOrderSettings?: boolean,\n telemetryContent?: ITelemetryContent\n): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\n\n const { resources } = props;\n\n const { quantity } = state;\n\n return (\n \n \n {heading}\n {errors}\n \n\n \n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\n\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IFooterCategoryConfig, IFooterCategoryProps } from './footer-category.props.autogenerated';\n\nexport interface IFooterCategoryViewProps extends IFooterCategoryProps {\n categories: React.ReactNode[];\n FooterList: IModuleProps;\n FooterListItem: INodeProps;\n}\n\n/**\n *\n * FooterCategory component.\n * @extends {React.PureComponent>}\n */\nclass FooterCategory extends React.PureComponent> {\n public render(): JSX.Element | null {\n if (!this.props.slots || !this.props.slots.content || this.props.slots.content.length === 0) {\n this.props.context.telemetry.error('footer slots content is empty, module wont render');\n return null;\n }\n const viewprops = {\n ...this.props,\n categories: this.props.slots.content,\n FooterList: {\n moduleProps: this.props,\n className: classnames('ms-footer__list', this.props.config.className),\n tag: 'ul'\n },\n FooterListItem: {\n className: classnames('ms-footer__list-item', this.props.config.className),\n tag: 'li'\n }\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default FooterCategory;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { IFooterCategoryViewProps } from './footer-category';\n\nexport const FooterCategoryView: React.FC = props => {\n const { categories, FooterList, FooterListItem } = props;\n if (!categories || categories.length === 0) {\n props.context.telemetry.error('Footer content is empty, module wont render');\n return null;\n }\n return (\n \n {categories.map((category: ReactNode, index: number) => {\n return (\n \n {category}\n \n );\n })}\n \n );\n};\n\nexport default FooterCategoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IImageListConfig, IImageListProps, IImagesData } from './image-list.props.autogenerated';\n\n/**\n * The interface for IImageListViewProps.\n */\nexport interface IImageListViewProps extends IImageListProps {\n imageList: IModuleProps;\n imageListHeading?: React.ReactNode;\n imageListContainer: INodeProps;\n imageListItem: INodeProps;\n imageListItemAnchorTag: INodeProps;\n imageListItems: IImageListItem[] | undefined;\n}\n\n/**\n * The interface for IImageListItem.\n */\nexport interface IImageListItem {\n image: JSX.Element | undefined;\n text: JSX.Element | undefined;\n link: string | undefined;\n linkAltText: string | undefined;\n linkAriaLabel: string | undefined;\n linkOpenInNewTab?: boolean;\n}\n\n/**\n *\n * ImageList component.\n * @extends {React.PureComponent>}\n */\nclass ImageList extends React.PureComponent> {\n public render(): JSX.Element | null {\n const { heading } = this.props.config;\n const imageListTitle = heading && ;\n const viewProps: IImageListViewProps = {\n ...this.props,\n imageList: {\n moduleProps: this.props,\n className: classnames('ms-image-list', this.props.config.className),\n tag: 'div'\n },\n imageListHeading: imageListTitle,\n imageListContainer: {\n className: 'ms-image-list__list',\n role: 'list',\n tag: 'ul'\n },\n imageListItem: {\n className: 'ms-image-list__list-item',\n role: 'listitem',\n tag: 'li'\n },\n imageListItemAnchorTag: {\n tag: 'a',\n className: 'ms-image-list__link',\n role: 'link'\n },\n imageListItems: this._renderImageListItems()\n };\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle paragraph change.\n * @param index - Index of image item in array of image items.\n * @returns Void.\n */\n public handleParagraphChange = (index: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.images![index]) {\n this.props.config.images![index].paragraph = event.target.value;\n }\n };\n\n /**\n * Render list of images.\n * @returns List of images with text and redirection link.\n */\n private readonly _renderImageListItems = (): IImageListItem[] | undefined => {\n const imageList: IImagesData[] | undefined = this.props.config.images;\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n lg: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 },\n xl: { q: 'w=65&h=65&q=80&m=6', w: 65, h: 65 }\n },\n lazyload: false,\n disableLazyLoad: true\n };\n return imageList?.map((item, index) => {\n const { image, link, paragraph } = item;\n\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: (image?.imageSettings ?? defaultImageSettings) as Msdyn365.IImageSettings | undefined\n };\n\n const imageLink: string | undefined = link?.linkUrl.destinationUrl;\n const imageLinkText: string | undefined = link?.linkText ?? link?.ariaLabel;\n const imageLinkAriaLabel: string | undefined = link?.ariaLabel;\n const imageLinkOpenInNewTab = link?.openInNewTab;\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n const imageImage = (\n \n );\n\n const imageText = paragraph && (\n \n );\n const imageListItem: IImageListItem = {\n image: imageImage,\n text: imageText,\n link: imageLink,\n linkAltText: imageLinkText,\n linkAriaLabel: imageLinkAriaLabel,\n linkOpenInNewTab: imageLinkOpenInNewTab\n };\n return imageListItem;\n });\n };\n}\n\nexport default ImageList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IImageListViewProps } from './image-list';\n\n/**\n * Render the thumbnail item images.\n * @param props - The image list view props.\n * @returns Return HTML having IImageListViewProps props with image List.\n */\nexport const imageListView = (props: IImageListViewProps): JSX.Element => {\n const { imageList, imageListContainer, imageListHeading, imageListItem, imageListItems, imageListItemAnchorTag } = props;\n return (\n \n {imageListHeading}\n \n {imageListItems?.map(item => {\n let indexKey: string;\n\n if (item.image) {\n const image = (item.image as unknown) as Msdyn365.Image;\n indexKey = image.props.src as string;\n } else {\n const text = (item.text as unknown) as Msdyn365.RichTextComponent;\n indexKey = text.props.text as string;\n }\n return (\n \n {item.image && (\n \n {item.image}\n \n )}\n {item.text}\n \n );\n })}\n \n \n );\n};\n\nexport default imageListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature links.\n */\nexport interface IInteractiveFeatureLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * IInteractiveFeatureLinks component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureCollectionLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && ArrayExtensions.hasElements(editableLinks) ? (\n \n ) : null}\n
\n );\n }\n\n /**\n * IInteractiveFeatureLinks component.\n * @param linkdata - Link data.\n * @returns Editable links.\n */\n private readonly _mapEditableLinks = (linkdata?: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || !ArrayExtensions.hasElements(linkdata)) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n for (const link of linkdata) {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-interactive-feature-collection__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'button',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n }\n\n return editableLinks;\n };\n}\nexport default InteractiveFeatureCollectionLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { InteractiveFeatureCollectionLinks } from './components';\nimport { IHeadingData, IInteractiveFeatureItemProps } from './interactive-feature-item.props.autogenerated';\n\n/**\n * Interactive Feature Item view props.\n */\nexport interface IInteractiveFeatureItemViewProps extends IInteractiveFeatureItemProps<{}> {\n title: React.ReactNode;\n paragraph: React.ReactNode;\n image: React.ReactNode;\n links: React.ReactNode;\n featureItem: IModuleProps;\n isMosaic: boolean;\n indexItem?: number;\n itemCounter?: number;\n\n interactiveFeatureCollectionCarouselContainer: INodeProps;\n interactiveFeatureCollectionCarouselImage: INodeProps;\n interactiveFeatureCollectionCarouselContent: INodeProps;\n\n interactiveFeatureCollectionMosaicContainer: INodeProps;\n interactiveFeatureCollectionMosaicImage: INodeProps;\n interactiveFeatureCollectionMosaicDetails: INodeProps;\n}\n\n/**\n * Interactive Feature Item Extented props.\n */\nexport interface IInteractiveFeatureItemExtentedProps extends IInteractiveFeatureItemProps<{}> {\n isMosaic?: boolean;\n indexItem?: number;\n itemCounter?: number;\n}\n\n/**\n *\n * InteractiveFeatureItem component.\n * @extends {React.PureComponent}\n */\nexport class InteractiveFeatureItem extends React.PureComponent {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: IInteractiveFeatureItemProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { indexItem, itemCounter, isMosaic } = this.props;\n const { heading, paragraph, image, links } = this.props.config;\n const featureItemLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n\n const viewProps = {\n ...this.props,\n indexItem,\n itemCounter,\n isMosaic: isMosaic ? isMosaic : false,\n title: this._createHeading(heading),\n paragraph: this._createParagraph(paragraph),\n image: this._renderImage(image),\n links: featureItemLinks,\n featureItem: {\n moduleProps: this.props,\n className: ''\n },\n interactiveFeatureCollectionCarouselContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__container'\n },\n interactiveFeatureCollectionCarouselImage: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__image'\n },\n interactiveFeatureCollectionCarouselContent: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-carousel__heading'\n },\n interactiveFeatureCollectionMosaicContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-interactive-feature-collection-mosaic',\n 'aria-label': heading?.text,\n tabindex: '0',\n role: 'group'\n },\n interactiveFeatureCollectionMosaicImage: {\n className: 'ms-interactive-feature-collection-mosaic__image'\n },\n interactiveFeatureCollectionMosaicDetails: {\n className: 'ms-interactive-feature-collection-mosaic__details'\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles heading content change event.\n * @param event - Content editable event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param event - Content editable event.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handles paragraph content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.links?.[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n private _createHeading(heading?: IHeadingData): React.ReactNode | null {\n if (!heading) {\n return null;\n }\n if (StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n\n return (\n \n );\n }\n\n private _renderImage(item?: Msdyn365.IImageData, isAriaHiddenAttribute?: boolean): React.ReactNode | null {\n // Even if image.src is null, we render the Image component to render the fallback SVG\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=328&h=459&m=6', w: 328, h: 459 },\n sm: { q: 'w=348&h=487&m=6', w: 348, h: 487 },\n md: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n lg: { q: 'w=650&h=366&m=6', w: 650, h: 366 },\n xl: { q: 'w=650&h=366&m=6', w: 650, h: 366 }\n },\n lazyload: true\n };\n const verifiedImageSettings = item?.imageSettings?.viewports ? item.imageSettings : defaultImageSettings;\n return (\n \n );\n }\n}\n\nexport default InteractiveFeatureItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IInteractiveFeatureItemViewProps } from './interactive-feature-item';\n\n/**\n * Enumerator used to make some calculations to set the proper classnames\n * using modular calculations to see if they are in a right or left column or on first or last row.\n */\nenum MagicNumber {\n modularDivisor = 4,\n caseNumberZero = 0,\n caseNumberOne = 1,\n caseNumberTwo = 2\n}\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @param indexItem - Feature Item view props.\n * @param itemCounter - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nconst renderMosaic = (thisProps: IInteractiveFeatureItemViewProps, indexItem?: number, itemCounter?: number): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionMosaicContainer,\n interactiveFeatureCollectionMosaicImage,\n interactiveFeatureCollectionMosaicDetails\n } = thisProps;\n const indexAux = indexItem ? indexItem + MagicNumber.caseNumberOne : MagicNumber.caseNumberOne;\n const itemCounterAux = itemCounter ? itemCounter : MagicNumber.caseNumberZero;\n const modularAux = indexAux % MagicNumber.modularDivisor;\n const firstRow = indexAux <= MagicNumber.caseNumberTwo ? 'firstRow' : '';\n const lastRow =\n itemCounterAux && (indexAux === itemCounterAux || indexAux === itemCounterAux - MagicNumber.caseNumberOne) ? 'lastRow' : '';\n const onCornerRight = modularAux === MagicNumber.caseNumberZero ? 'item-corner-right' : '';\n const onCornerLeft = modularAux === MagicNumber.caseNumberOne ? 'item-corner-left' : '';\n const containerClasses = classnames('ms-interactive-feature-collection-mosaic', onCornerLeft, onCornerRight, firstRow, lastRow);\n\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param thisProps - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */ const renderCarousel = (thisProps: IInteractiveFeatureItemViewProps): JSX.Element | null => {\n const {\n title,\n paragraph,\n image,\n links,\n interactiveFeatureCollectionCarouselContainer,\n interactiveFeatureCollectionCarouselImage,\n interactiveFeatureCollectionCarouselContent\n } = thisProps;\n return (\n \n {image}\n \n {title}\n {paragraph}\n {links}\n \n \n );\n};\n\n/**\n * Feature Item View.\n * @param props - Feature Item view props.\n * @returns Feature item View.\n * @extends {} InteractiveFeatureItem\n */\nexport const FeatureItemViewComponent: React.FC = props => {\n const { isMosaic, featureItem, indexItem, itemCounter } = props;\n if (isMosaic) {\n return <>{renderMosaic(props, indexItem, itemCounter)};\n }\n return {renderCarousel(props)};\n};\n\nexport default FeatureItemViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IDateFormatOptions, isOboRequest, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { IInvoiceErrorState, 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?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IInvoiceDetailsHeaderComponent extends IComponent {}\n\nconst formatShortDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'numeric', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatLongDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsHeader: React.FC = (props: IInvoiceDetailsHeaderProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources,\n onError\n } = props;\n\n const invoiceNumberText = resources.invoiceIdLabel.replace('{0}', invoiceDetails.id);\n\n const invoiceOrderItemsText =\n invoiceDetails.lines.length === 1\n ? resources.invoiceOrderItem\n : resources.invoiceOrderItems.replace('{0}', invoiceDetails.lines.length.toString());\n\n const invoiceInfoContainerClassName = `${className}__invoice-info-container`;\n const orderInfoContainerClassName = `${invoiceInfoContainerClassName}__order-info-container`;\n const orderInfoClassName = `${orderInfoContainerClassName}__order-info`;\n const orderMainInfoClassName = `${orderInfoClassName}__main-info`;\n const orderDetailsClassName = `${orderInfoClassName}__details`;\n `${className}__actions`;\n const actionsClassName = `${className}__actions`;\n const amountSummaryClassName = `${invoiceInfoContainerClassName}__amount-summary`;\n const orderDate = formatShortDate(props.context, invoiceDetails.invoiceDate);\n\n const dueDate = formatLongDate(props.context, invoiceDetails.dueDate);\n const dueDateText = resources.invoicePaymentDueDateText.replace('{0}', dueDate);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n return (\n
\n
{invoiceNumberText}
\n
\n
\n
\n
\n
\n {resources.invoicePlacedByLabel}\n {invoiceDetails.customerName}\n
\n
\n
\n
{orderDate}
\n
{invoiceOrderItemsText}
\n
\n
\n
\n
\n
{resources.invoiceAmountDueText}
\n
\n {formatAmount(props.context, invoiceDetails.amountDue, invoiceDetails.currencyCode)}\n
\n
{dueDateText}
\n
\n
\n
\n \n
\n
\n );\n};\n\nexport const InvoiceDetailsHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsHeaderComponent\n>('InvoiceDetailsHeaderComponent', { component: InvoiceDetailsHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IInvoicePaymentDetails } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsPaymentDetailsData {\n invoicePaymentDetails: IInvoicePaymentDetails;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsResources {\n invoicePaymentDiscounts: string;\n invoicePaymentSubtotal: string;\n invoicePaymentCharges: string;\n invoicePaymentTax: string;\n invoicePaymentInvoiceTotal: string;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n resources: IInvoiceDetailsPaymentDetailsResources;\n}\n\nexport interface IInvoiceDetailsPaymentDetailsComponent extends IComponent {}\n\ninterface IInvoicePaymentLineProps {\n label: string;\n value: number;\n className: string;\n}\n\nconst InvoiceDetailsPaymentDetails: React.FC = (\n props: IInvoiceDetailsPaymentDetailsProps\n): JSX.Element | null => {\n const {\n className,\n data: { invoicePaymentDetails },\n resources\n } = props;\n\n const lineClassName = `${className}__line`;\n\n const lines: IInvoicePaymentLineProps[] = [];\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalDiscount)) {\n lines.push({\n label: resources.invoicePaymentDiscounts,\n value: invoicePaymentDetails.totalDiscount,\n className: `${lineClassName}-total-discount`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.subtotal)) {\n lines.push({\n label: resources.invoicePaymentSubtotal,\n value: invoicePaymentDetails.subtotal,\n className: `${lineClassName}-subtotal`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalCharges)) {\n lines.push({\n label: resources.invoicePaymentCharges,\n value: invoicePaymentDetails.totalCharges,\n className: `${lineClassName}-total-charges`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalTax)) {\n lines.push({\n label: resources.invoicePaymentTax,\n value: invoicePaymentDetails.totalTax,\n className: `${lineClassName}-total-tax`\n });\n }\n if (!ObjectExtensions.isNullOrUndefined(invoicePaymentDetails.totalAmount)) {\n lines.push({\n label: resources.invoicePaymentInvoiceTotal,\n value: invoicePaymentDetails.totalAmount,\n className: `${lineClassName}-total-amount`\n });\n }\n\n if (!ArrayExtensions.hasElements(lines)) {\n return null;\n }\n\n return (\n
\n {lines.map(line => {\n return (\n
\n
{line.label}
\n
\n {props.context.cultureFormatter.formatCurrency(line.value, invoicePaymentDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsPaymentDetailsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsPaymentDetailsComponent\n>('InvoiceDetailsPaymentDetailsComponent', { component: InvoiceDetailsPaymentDetails });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { SalesInvoiceLine } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\nimport { IInvoiceProductLine, InvoiceDetailsModel } from '../helpers/invoice-data';\n\nexport interface IInvoiceDetailsProductsData {\n invoiceDetails: InvoiceDetailsModel;\n}\n\nexport interface IInvoiceDetailsProductsResources {\n invoiceProductColor: string;\n invoiceProductSize: string;\n invoiceProductStyle: string;\n invoiceQuantity: string;\n}\n\nexport interface IInvoiceDetailsProductsProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n imageSettings?: IImageSettings;\n resources: IInvoiceDetailsProductsResources;\n}\n\nexport interface IInvoiceDetailsProductsComponent extends IComponent {}\n\nconst _renderProductDimensions = (\n className: string,\n resources: IInvoiceDetailsProductsResources,\n product: SalesInvoiceLine\n): JSX.Element => {\n return (\n
\n {StringExtensions.isNullOrWhitespace(product.ColorName) ? null : (\n
{resources.invoiceProductColor.replace('{0}', product.ColorName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.SizeName) ? null : (\n
{resources.invoiceProductSize.replace('{0}', product.SizeName!)}
\n )}\n {StringExtensions.isNullOrWhitespace(product.StyleName) ? null : (\n
{resources.invoiceProductStyle.replace('{0}', product.StyleName!)}
\n )}\n
\n );\n};\n\nconst _renderProductImage = (\n className: string,\n context: ICoreContext,\n product: IInvoiceProductLine,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n xl: { q: 'w=148&h=174&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(\n product.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n return (\n \n );\n};\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst InvoiceDetailsProducts: React.FC = (props: IInvoiceDetailsProductsProps): JSX.Element => {\n const {\n className,\n data: { invoiceDetails },\n resources\n } = props;\n\n const productLineClass = `${className}__product-line`;\n const productLineInfoContainerClass = `${productLineClass}__product-info-container`;\n const productLineDetailsClass = `${productLineInfoContainerClass}__product-details`;\n const productLineSmallDetailsClass = `${productLineDetailsClass}__small-details`;\n\n return (\n
\n {invoiceDetails.lines.map(product => {\n const quantity = product.Quantity || 1;\n\n let productUrl = '';\n if (!ObjectExtensions.isNullOrUndefined(product.ProductName) && !ObjectExtensions.isNullOrUndefined(product.ProductId)) {\n productUrl = getProductPageUrlSync(product.ProductName, product.ProductId, props.context.actionContext);\n }\n\n return (\n
\n
\n {_renderProductImage(`${productLineInfoContainerClass}__product-image`, props.context, product)}\n
\n \n {product.ProductName}\n \n
\n {_renderProductDimensions(`${productLineSmallDetailsClass}__dimensions`, resources, product)}\n
\n {formatAmount(props.context, product.Price, invoiceDetails.currencyCode)}\n
\n
\n {resources.invoiceQuantity.replace('{0}', quantity.toString())}\n
\n
\n
\n
\n
\n {formatAmount(props.context, product.NetAmount, invoiceDetails.currencyCode)}\n
\n
\n );\n })}\n
\n );\n};\n\nexport const InvoiceDetailsProductsComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoiceDetailsProductsComponent\n>('InvoiceDetailsProductsComponent', { component: InvoiceDetailsProducts });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice, SalesInvoice, SalesInvoiceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IPayableInvoice } from '@msdyn365-commerce-modules/invoice';\n\nexport interface IInvoicePaymentDetails {\n totalDiscount?: number;\n subtotal?: number;\n totalCharges?: number;\n totalTax?: number;\n totalAmount?: number;\n currencyCode?: string;\n}\n\nexport interface IInvoiceProductLine extends SalesInvoiceLine {\n primaryImageUrl?: string;\n}\n\n/**\n * Represents invoice details data model.\n */\nexport class InvoiceDetailsModel implements IPayableInvoice, IInvoicePaymentDetails {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public lines: IInvoiceProductLine[];\n\n public totalDiscount?: number;\n\n public subtotal?: number;\n\n public totalCharges?: number;\n\n public totalTax?: number;\n\n public totalAmount?: number;\n\n public currencyCode?: string;\n\n public constructor(invoice: OrderInvoice, invoiceDetails: SalesInvoice, products: SimpleProduct[]) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerName = invoice.CustomerName;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.lines = (invoiceDetails.SalesInvoiceLine || []).map(line => {\n const productLine: IInvoiceProductLine = {\n ...line,\n primaryImageUrl: products.find(product => product.RecordId === line.ProductId)?.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 { IInvoiceErrorState, 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 errorState?: IInvoiceErrorState;\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 = { errorState: { errorMessage: '', otherError: '' } };\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 errorState: { errorMessage: '', otherError: '' }\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.ProductId)\n .map(\n product =>\n new ProductInput(\n product.ProductId!,\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(newErrorState: IInvoiceErrorState): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n\n // check for errorcode and otherError which contains the LocalizedMessage from API\n if (\n errorState &&\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineAlreadyExistsInCart' &&\n errorState.otherError\n ) {\n this.setState({ errorState: errorState });\n }\n\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 \n \n \n \n \n \n \n );\n};\n\nconst getMobileHeaderCells = (props: IInvoicesTableHeaderProps, rowClassName: string, switchCheckedState: () => void) => {\n const { resources } = props;\n return (\n <>\n \n \n \n \n {headerCells}\n \n );\n};\n\nexport const InvoicesTableHeaderComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableHeaderComponent\n>('InvoicesTableHeaderComponent', { component: InvoicesTableHeader });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, {\n IComponent,\n IComponentProps,\n ICoreContext,\n IDateFormatOptions,\n isOboRequest,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoiceDetailsPageUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, format } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../../../helpers/invoice-data';\nimport { getInvoiceStatusText, IInvoiceStatusResources } from '../../../helpers/invoice-status';\nimport { IInvoiceErrorState } from '../../../invoices-list';\nimport { IPayInvoiceResources, PayInvoiceComponent } from '../../pay-invoice-component';\nimport { RequestInvoiceButton } from '../../request-invoice-button';\n\ninterface IInvoicesTableRowData {\n invoice: InvoiceModel;\n index: number;\n customer: Customer;\n}\n\nexport interface IInvoicesTableRowResources extends IInvoiceStatusResources, IPayInvoiceResources {\n invoiceCurrentUser: string;\n invoiceViewDetailsButtonText: string;\n invoiceViewDetailsButtonAriaLabel: string;\n invoiceActionsButtonTextAriaLabel?: string;\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel?: string;\n invoiceRequestButtonLabel: string;\n invoiceListSelectRadioAriaLabelText: string;\n}\n\nexport interface IInvoicesTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n isMobile: boolean;\n invoiceReferences?: React.RefObject;\n payInvoiceReferences?: React.RefObject;\n resources: IInvoicesTableRowResources;\n\n onChange(): void;\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n onRequestInvoice?(invoice: InvoiceModel, requestInvoiceButtonReference: React.RefObject): void;\n}\n\nexport interface IInvoicesTableRowComponent extends IComponent {}\n\nconst formatAmount = (context: ICoreContext, amount: number | undefined, currencyCode: string | undefined) => {\n if (amount === undefined) {\n return '';\n }\n return context.cultureFormatter.formatCurrency(amount, currencyCode);\n};\n\nconst formatDate = (context: ICoreContext, date: Date | undefined) => {\n if (date === undefined) {\n return '';\n }\n\n const dateOptions: IDateFormatOptions = { year: 'numeric', month: 'long', day: 'numeric' };\n return context.cultureFormatter.formatDate(date, dateOptions);\n};\n\n/**\n * Request specific invoice function.\n * @param props -Invoice table row props.\n * @param requestInvoiceButtonReference -Reference button.\n * @returns Call Request Invoice.\n */\nconst onRequestSpecificInvoice = (\n props: IInvoicesTableRowProps,\n requestInvoiceButtonReference: React.RefObject\n) => () => {\n props.onRequestInvoice!(props.data.invoice, requestInvoiceButtonReference);\n};\n\nconst getDesktopRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice, customer }\n } = props;\n\n const isCurrentUser =\n !StringExtensions.isNullOrWhitespace(customer.AccountNumber) && customer.AccountNumber === invoice.customerAccountNumber;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n return (\n <>\n \n \n \n \n \n \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: {\n invoiceViewDetailsButtonAriaLabel,\n invoiceViewDetailsButtonText,\n invoiceActionsButtonTextAriaLabel,\n invoiceActionsButtonIsOnBehalfOfTextAriaLabel\n },\n data: { index }\n } = props;\n\n const [showActions, setShowActions] = useState(false);\n const isOnBehalfOfRequest = isOboRequest(props.context.request);\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n\n const className = `${props.className}__extra-actions-cell`;\n const actionsContainerClassName = `${className}__actions-container`;\n const payInvoiceClassName = `${actionsContainerClassName}__pay-invoice`;\n return (\n
\n \n {showActions && !isOnBehalfOfRequest && (\n
\n \n {invoiceViewDetailsButtonText}\n \n \n \n
\n )}\n
\n );\n};\n\nconst getMobileRowCells = (props: IInvoicesTableRowProps, onSelectLine: () => void) => {\n const {\n data: { invoice }\n } = props;\n\n const linkToInvoiceDetails = getInvoiceDetailsPageUrlSync(props.data.invoice.id, props.context.actionContext);\n const invoiceRowArialabel = format(props.resources.invoiceListSelectRadioAriaLabelText, invoice.id);\n\n return (\n <>\n
\n \n \n \n \n );\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 \n {resources.invoiceNumberText}{resources.invoiceDateText}{resources.invoiceUsersText}{resources.invoiceAmountText}{resources.invoiceDueDateText}{resources.invoiceAmountDueText}{resources.invoiceStatusText}{resources.invoiceActionsText}\n \n {resources.invoicesText}{resources.invoiceDateMobileText}\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 \n \n \n {invoice.id}\n \n \n {formatDate(props.context, invoice.invoiceDate)}\n \n {invoice.customerName}\n {isCurrentUser ? {props.resources.invoiceCurrentUser} : null}\n {formatAmount(props.context, invoice.amount, invoice.currencyCode)}\n {formatDate(props.context, invoice.dueDate)}\n {formatAmount(props.context, invoice.amountDue, invoice.currencyCode)}\n {getInvoiceStatusText(props.resources, invoice.status)}\n {extraActionsPopup(props)}\n \n \n \n {invoice.id}\n \n
\n {invoice.customerName}\n
\n {formatDate(props.context, invoice.dueDate)}\n
\n {getInvoiceStatusText(props.resources, invoice.status)}\n
{extraActionsPopup(props)}
\n invoice.isSelected)}\n isMobile={isMobile}\n isAdmin={props.data.customer.IsB2bAdmin || false}\n onSelectAll={onSelectAllHandler(props)}\n resources={props.resources}\n data={{}}\n />\n {props.data.invoices.map((invoice, index: number) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport const InvoicesTableComponent: React.FunctionComponent = msdyn365Commerce.createComponent<\n // @ts-expect-error\n IInvoicesTableComponent\n>('InvoicesTableComponent', { component: InvoicesTable });\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\ninterface IMakePaymentData {\n invoices: InvoiceModel[];\n}\n\nexport interface IMakePaymentResources {\n makePaymentButtonText: string;\n makePaymentButtonAriaLabel: string;\n}\n\nexport interface IMakePaymentProps extends IComponentProps {\n context: ICoreContext;\n itemKey?: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n telemetryContent?: ITelemetryContent;\n navigationUrl?: string;\n buttonReferences?: React.RefObject;\n resources: IMakePaymentResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\nexport interface IMakePaymentComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IMakePaymentProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.buttonReferences);\n }\n setDisabled(false);\n };\n\n await payInvoices(props.data.invoices, props.context.actionContext, propagateError);\n};\n\nconst MakePaymentComponentActions = {\n onClick\n};\n\n/**\n * On Click function.\n * @param input -Make payment props.\n * @param setDisabled -Set Disabled.\n * @returns Make payment component on click.\n */\nconst onClickHandler = (input: IMakePaymentProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await MakePaymentComponentActions.onClick(event, input, setDisabled);\n};\n\nconst MakePayment: React.FC = (input: IMakePaymentProps): JSX.Element => {\n const {\n data: { invoices }\n } = input;\n const hasInvoices = ArrayExtensions.hasElements(invoices.filter(invoice => invoice.canBePaid));\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {input.resources.makePaymentButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const MakePaymentComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'MakePayment',\n { component: MakePayment }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IPayableInvoice } from '../helpers/invoice-data';\nimport { payInvoices } from '../helpers/pay-invoices';\nimport { IInvoiceErrorState } from '../invoices-list';\n\nexport interface IPayInvoiceData {\n invoice: IPayableInvoice;\n}\n\nexport interface IPayInvoiceResources {\n payInvoiceButtonText: string;\n payInvoiceButtonAriaLabel: string;\n}\n\nexport interface IPayInvoiceProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n reference?: React.RefObject;\n resources: IPayInvoiceResources;\n disabled?: boolean;\n\n onError?(errorState: IInvoiceErrorState, reference?: React.RefObject): void;\n}\n\ninterface IPayInvoiceComponent extends IComponent {}\n\nconst onClick = async (\n _event: React.MouseEvent,\n props: IPayInvoiceProps,\n setDisabled: (disabled: boolean) => void\n): Promise => {\n setDisabled(true);\n\n const propagateError = (errorState: IInvoiceErrorState): void => {\n if (props.onError) {\n props.onError(errorState, props.reference);\n }\n setDisabled(false);\n };\n\n await payInvoices([props.data.invoice], props.context.actionContext, propagateError);\n};\n\nconst PayInvoiceComponentActions = {\n onClick\n};\n\n/**\n * On click handler function.\n * @param props -Invoice props.\n * @param setDisabled -Set disabled.\n * @returns Pay invoice component action.\n */\nconst onClickHandler = (props: IPayInvoiceProps, setDisabled: React.Dispatch>) => async (\n event: React.MouseEvent\n) => {\n await PayInvoiceComponentActions.onClick(event, props, setDisabled);\n};\n\nconst PayInvoice: React.FC = (props: IPayInvoiceProps): JSX.Element => {\n const [disabled, setDisabled] = useState(false);\n\n return (\n \n {props.resources.payInvoiceButtonText}\n \n );\n};\n\n// @ts-expect-error\nexport const PayInvoiceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\n 'PayInvoiceComponent',\n { component: PayInvoice, ...PayInvoiceComponentActions }\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IRequestInvoiceButtonProps {\n innerReference?: React.RefObject;\n className: string;\n requestInvoiceButtonLabel: string;\n onClicked(): void;\n}\n\nexport const RequestInvoiceButton: React.FC = ({\n className,\n onClicked,\n requestInvoiceButtonLabel,\n innerReference\n}) => {\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IPayableInvoice {\n readonly id: string;\n readonly canBePaid: boolean;\n}\n\n/**\n * Represents invoice data model.\n */\nexport class InvoiceModel implements IPayableInvoice {\n public id: string;\n\n public invoiceDate?: Date;\n\n public customerAccountNumber?: string;\n\n public customerName?: string;\n\n public amount?: number;\n\n public dueDate?: Date;\n\n public amountDue?: number;\n\n public status?: InvoicePaidStatus;\n\n public currencyCode?: string;\n\n public isSelected: boolean;\n\n public constructor(invoice: OrderInvoice) {\n this.id = invoice.Id || '';\n this.invoiceDate = invoice.InvoiceDate ? new Date(invoice.InvoiceDate) : undefined;\n this.customerAccountNumber = invoice.CustomerAccountNumber;\n this.customerName = invoice.CustomerName;\n this.amount = invoice.TotalAmount;\n this.dueDate = invoice.InvoiceDueDate ? new Date(invoice.InvoiceDueDate) : undefined;\n this.amountDue = invoice.AmountBalance;\n this.status = invoice.InvoicePaidStatusValue;\n this.currencyCode = invoice.CurrencyCode;\n\n this.isSelected = false;\n }\n\n public get canBePaid(): boolean {\n return this.status !== InvoicePaidStatus.Paid;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { InvoicePaidStatus } from '@msdyn365-commerce/retail-proxy';\n\nexport interface IInvoiceStatusResources {\n invoiceStatusNone: string;\n invoiceStatusUnpaid: string;\n invoiceStatusPartiallyPaid: string;\n invoiceStatusPaid: string;\n}\n\nexport const getInvoiceStatusText = (resources: IInvoiceStatusResources, invoiceStatus: InvoicePaidStatus | undefined) => {\n switch (invoiceStatus) {\n case InvoicePaidStatus.None:\n return resources.invoiceStatusNone;\n\n case InvoicePaidStatus.Unpaid:\n return resources.invoiceStatusUnpaid;\n\n case InvoicePaidStatus.PartiallyPaid:\n return resources.invoiceStatusPartiallyPaid;\n\n case InvoicePaidStatus.Paid:\n return resources.invoiceStatusPaid;\n default:\n return '';\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IInvoiceErrorState } from '../invoices-list';\nimport { IPayableInvoice } from './invoice-data';\n\nexport type ICartActionFailureReason = 'EMPTYINPUT' | 'CARTACTIONFAILED';\nexport interface IAddInvoicesToCartFailureResult {\n failureReason: ICartActionFailureReason;\n}\n\nexport const payInvoices = async (\n invoices: IPayableInvoice[],\n actionContext: IActionContext,\n onError: (errorState: IInvoiceErrorState) => void\n) => {\n const invoicesToAdd: string[] = invoices.filter(invoice => invoice.canBePaid).map(invoice => invoice.id);\n\n if (!ArrayExtensions.hasElements(invoicesToAdd)) {\n onError({ errorMessage: '', errorReason: { failureReason: 'EMPTYINPUT' } });\n return;\n }\n\n const cartState = await getCartState(actionContext);\n const result = await cartState.addInvoicesToCart({ invoiceIds: invoicesToAdd });\n\n if (result.status !== 'SUCCESS') {\n onError({\n errorMessage: '',\n errorReason: { failureReason: 'CARTACTIONFAILED' },\n otherError: result.errorDetails?.LocalizedMessage,\n errorCode: result.errorDetails?.ErrorResourceId\n });\n return;\n }\n\n const cartUrl = getUrlSync('cart', actionContext);\n if (cartUrl) {\n window?.location.assign(cartUrl);\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\n\n/* ---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { InvoiceModel } from '../helpers/invoice-data';\nimport { IInvoicesListResources } from '../invoices-list.props.autogenerated';\n\ninterface IRequestInvoiceModalProps {\n className: string;\n email: string;\n isModalOpen: boolean;\n submitRequestLabel: string;\n modalHeaderLabel: string;\n sendToEmailLabel: string;\n cancelLabel: string;\n searchPlaceholderLabel: string;\n invoices: InvoiceModel[];\n invoicesFoundString: string;\n singleInvoiceFoundString: string;\n searchButtonAltText: string;\n resources: IInvoicesListResources;\n toggle(): void;\n onSubmitRequest(invoiceId: string): void;\n}\n\n/**\n * On submit request click function.\n * @param selectedInvoiceIndex -Check is busy.\n * @param onClosing -On closing function.\n * @param filteredInvoices -Invoice modal.\n * @param onSubmitRequest -On submit request function.\n * @returns Call on submit request.\n */\nconst onSubmitRequestClick = (\n onClosing: () => void,\n filteredInvoices: InvoiceModel[],\n onSubmitRequest: (invoiceId: string) => void,\n checkboxRef: React.MutableRefObject\n) => () => {\n const defaultIndex = 0;\n let closingFlag: number = 0;\n\n filteredInvoices.map((invoice, index) => {\n const inputInvoice = checkboxRef.current[Number(index)] as React.RefObject;\n if (inputInvoice.current?.checked === true && index >= defaultIndex) {\n onSubmitRequest(invoice.id);\n closingFlag = closingFlag + 1;\n }\n });\n if (closingFlag <= filteredInvoices.length) {\n onClosing();\n }\n};\n\n/**\n * On search input change function.\n * @param setSearchInput -Set search input.\n * @returns Set search input function.\n */\nconst searchInputChangedHandler = (setSearchInput: React.Dispatch>) => (\n event: React.ChangeEvent\n) => {\n setSearchInput(event.target.value);\n};\n\n/**\n * Search entered handler.\n * @param invoices -InvoiceModel.\n * @param searchInput -String.\n * @param setFilteredInvoices -InvoiceModel action.\n * @param filteredInvoices -Filtered Invoices.\n * @param setSelectedInvoiceIndex -Selected Invoice Index.\n * @param setShouldShowSearchResults -Show search result action.\n * @param setInvoiceOptions -Invoice options action.\n * @param selectedInvoiceIndex -Selected invoice index.\n * @param className -String.\n * @returns Set invoice options.\n */\nconst searchEnteredHandler = (\n invoices: InvoiceModel[],\n searchInput: string,\n setFilteredInvoices: React.Dispatch>,\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: React.Dispatch>,\n setShouldShowSearchResults: React.Dispatch>,\n setInvoiceOptions: React.Dispatch>,\n selectedInvoiceIndex: number,\n className: string,\n checkboxRef: React.MutableRefObject\n) => () => {\n let updatedInvoices = filteredInvoices;\n if (!StringExtensions.isNullOrEmpty(searchInput)) {\n updatedInvoices = invoices.filter(invoice => invoice.id.toLocaleUpperCase().includes(searchInput.toLocaleUpperCase()));\n } else {\n updatedInvoices = invoices;\n }\n\n if (ArrayExtensions.hasElements(updatedInvoices)) {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(0);\n } else {\n setFilteredInvoices(updatedInvoices);\n setSelectedInvoiceIndex(-1);\n }\n setShouldShowSearchResults(true);\n\n setInvoiceOptions(\n renderInvoiceOptions(\n StringExtensions.isNullOrEmpty(searchInput) ? invoices : updatedInvoices,\n setSelectedInvoiceIndex,\n className,\n checkboxRef\n )\n );\n};\n\n/**\n * On cancel function.\n * @param onClosing -Closing function.\n * @param toggle -Toggle Function.\n * @returns Toggle function.\n */\nconst onCancelHandler = (onClosing: () => void, toggle: () => void) => () => {\n onClosing();\n toggle();\n};\n\n/**\n * On invoice select.\n * @param setSelectedInvoiceIndex -Set Selected Invoice Index.\n * @param index -Number.\n * @returns Set Selected Invoice Index.\n */\nconst onInvoiceSelectHandler = (setSelectedInvoiceIndex: (newIndex: number) => void, index: number) => () => {\n setSelectedInvoiceIndex(index);\n};\n\nconst renderInvoiceOptions = (\n filteredInvoices: InvoiceModel[],\n setSelectedInvoiceIndex: (newIndex: number) => void,\n className: string,\n checkboxRef: React.MutableRefObject\n) => {\n checkboxRef.current = filteredInvoices.map((_invoice, i) => checkboxRef.current[Number(i)] ?? React.createRef());\n return (\n
\n {filteredInvoices.map((invoice, index) => {\n const onInvoiceSelect = onInvoiceSelectHandler(setSelectedInvoiceIndex, index);\n\n const checkboxId = `invoice__${invoice.id}`;\n const checkboxName = `invoiceSelect__${invoice.id}`;\n\n return (\n
\n \n \n
\n );\n })}\n
\n );\n};\n\nexport const RequestInvoiceModal: React.FC = ({\n className,\n email,\n isModalOpen,\n toggle,\n modalHeaderLabel,\n sendToEmailLabel,\n submitRequestLabel,\n cancelLabel,\n onSubmitRequest,\n invoices,\n searchPlaceholderLabel,\n invoicesFoundString,\n singleInvoiceFoundString,\n searchButtonAltText,\n resources\n}) => {\n const [selectedInvoiceIndex, setSelectedInvoiceIndex] = React.useState(-1);\n const [filteredInvoices, setFilteredInvoices] = React.useState(invoices);\n const [searchInput, setSearchInput] = React.useState('');\n const [shouldShowSearchResults, setShouldShowSearchResults] = React.useState(false);\n const focusDelay = 110;\n const checkboxRef = React.useRef([]);\n const invoiceOptionsData = renderInvoiceOptions(filteredInvoices, setSelectedInvoiceIndex, className, checkboxRef);\n const [invoiceOptions, setInvoiceOptions] = React.useState(invoiceOptionsData);\n const focusElement = React.useRef(null);\n React.useEffect(() => {\n if (isModalOpen && focusElement.current) {\n setTimeout(() => {\n focusElement.current?.focus();\n }, focusDelay);\n }\n }, [isModalOpen]);\n\n /**\n * Sets the filtered invoices to the ones that were selected on the main screen.\n */\n const setFilteredInvoicesToSelectedInvoices = () => {\n setSelectedInvoiceIndex(-1);\n const selectedInvoices = invoices.filter(invoice => invoice.isSelected);\n if (ArrayExtensions.hasElements(selectedInvoices)) {\n setFilteredInvoices(selectedInvoices);\n\n // If only one invoice selected, auto select it\n if (selectedInvoices.length === 1) {\n setSelectedInvoiceIndex(0);\n }\n\n setInvoiceOptions(renderInvoiceOptions(selectedInvoices, setSelectedInvoiceIndex, className, checkboxRef));\n } else {\n setFilteredInvoices(invoices);\n setInvoiceOptions(renderInvoiceOptions(invoices, setSelectedInvoiceIndex, className, checkboxRef));\n }\n };\n\n const searchEntered = searchEnteredHandler(\n invoices,\n searchInput,\n setFilteredInvoices,\n filteredInvoices,\n setSelectedInvoiceIndex,\n setShouldShowSearchResults,\n setInvoiceOptions,\n selectedInvoiceIndex,\n className,\n checkboxRef\n );\n\n const onClosing = () => {\n setSelectedInvoiceIndex(-1);\n setFilteredInvoices(invoices);\n setSearchInput('');\n setShouldShowSearchResults(false);\n };\n\n /**\n * Sets the invoices that are possible to select when the dialog is opened.\n */\n const onOpened = () => {\n setSearchInput('');\n setFilteredInvoicesToSelectedInvoices();\n };\n\n const searchResultString = filteredInvoices.length === 1 ? singleInvoiceFoundString : invoicesFoundString;\n const invoicesFoundReplaceIndex = searchResultString.indexOf('{0}');\n\n return (\n \n \n {modalHeaderLabel}\n \n \n
\n \n
\n {email}\n
\n
\n {shouldShowSearchResults && (\n
\n {searchResultString.substring(0, invoicesFoundReplaceIndex)}\n {filteredInvoices.length}\n {searchResultString.substring(invoicesFoundReplaceIndex + 3)}\n
\n )}\n
\n \n \n
\n {invoiceOptions}\n
\n
\n
\n \n \n {submitRequestLabel}\n \n \n \n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, isOboRequest } from '@msdyn365-commerce/core';\nimport {\n BusinessPartnerOperationDeliveryType,\n BusinessPartnerUsersDataActions,\n InvoicePaidStatus,\n InvoiceSearchCriteria,\n IQueryResultSettings,\n OrderInvoice\n} from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport {\n ArrayExtensions,\n getCustomer,\n GetCustomerInput,\n getInvoices,\n GetInvoicesInput,\n IQueryResultSettingsModuleConfig,\n QueryResultSettingsProxy,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-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 isOpen: boolean;\n isPageLoaded: boolean;\n payInvoiceErrorModalOpen: boolean;\n selectedButtonElement?: HTMLButtonElement | null;\n}\n\n/**\n * InvoicesList component.\n * @extends {React.Component, IInvoicesListState>}\n */\n@observer\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 private invoiceIds: string[] = [];\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 isOpen: 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 reaction(\n () => this.state.isInvoiceRequestModalOpen,\n async () => {\n if (this.invoiceIds && !this.state.isInvoiceRequestModalOpen) {\n const context = { callerContext: this.props.context.actionContext };\n const b2bUserId: string = this.props.data.b2bUserInformation?.result?.B2BUserId || '';\n for (const invoiceId of this.invoiceIds) {\n await BusinessPartnerUsersDataActions.requestInvoiceCopyAsync(\n context,\n b2bUserId,\n invoiceId,\n BusinessPartnerOperationDeliveryType.Email\n );\n }\n this.invoiceIds = [];\n }\n }\n );\n }\n\n private _initializeWithInvoices(invoicesData: OrderInvoice[]): void {\n const invoices = invoicesData.map((invoice, index) => {\n this.buttonChildReference[Number(index)] = React.createRef();\n this.buttonChildPayButtonReference[Number(index)] = React.createRef();\n return new InvoiceModel(invoice);\n });\n this.setState({\n invoices,\n isLoading: false,\n isPageLoaded: true\n });\n }\n\n private _addInvoices(invoicesData: OrderInvoice[]): void {\n const newInvoices = invoicesData.map(invoice => new InvoiceModel(invoice));\n const invoices = this.state.invoices.concat(newInvoices);\n this.setState({\n invoices,\n isLoading: false\n });\n }\n\n private _renderEmptyInvoiceLinesPageContent(): JSX.Element {\n const containerClass = `${this._className}__empty-lines__container`;\n const actionsContainerClass = `${containerClass}__actions`;\n return (\n
\n
{this.props.resources.invoiceEmptyInvoiceLinesTitle}
\n
{this.props.resources.invoiceEmptyInvoiceLinesDescription}
\n
\n \n {this.props.resources.invoiceEmptyInvoiceLinesContinueShoppingButtonText}\n \n
\n
\n );\n }\n\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerHeaderClass = `${containerClass}__header`;\n const containerContentClass = `${containerClass}__content`;\n const isOnBehalfOfRequest = isOboRequest(this.props.context.request);\n\n return (\n
\n
\n {this._renderMakePayment(containerHeaderClass, isOnBehalfOfRequest)}\n {this._renderInvoiceRequestButton()}\n
\n
{this._renderInvoiceErrors()}
\n
{this._renderInvoicesList(containerContentClass)}
\n
\n );\n }\n\n private _updateInvoicesState(): void {\n this.setState({\n invoices: this.state.invoices\n });\n }\n\n private async _getInvoicesSearchCriteria(state: InvoicesFilterState): Promise {\n const searchCriteria: InvoiceSearchCriteria = {};\n\n const context = this.props.context.actionContext;\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n searchCriteria.BusinessPartnerId = businessPartner?.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n searchCriteria.CustomerId = customer?.AccountNumber;\n\n switch (state) {\n case InvoicesFilterState.ShowAll:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n break;\n case InvoicesFilterState.Paid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Paid];\n break;\n case InvoicesFilterState.PartiallyPaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.PartiallyPaid];\n break;\n case InvoicesFilterState.Unpaid:\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.Unpaid];\n break;\n default:\n throw new Error('Failed to process unknown invoices filter state.');\n }\n\n return searchCriteria;\n }\n\n private async _handleFilterStateChange(state: InvoicesFilterState): Promise {\n this.setState({\n invoicesFilterState: state,\n isLoading: true\n });\n\n const searchCriteria = await this._getInvoicesSearchCriteria(state);\n\n if (this._queryResultSettings.Paging) {\n this._queryResultSettings.Paging.Skip = 0;\n }\n\n const invoices = await getInvoices(\n new GetInvoicesInput(searchCriteria, this._queryResultSettings),\n this.props.context.actionContext\n );\n this._initializeWithInvoices(invoices);\n }\n\n private _renderInvoicesFilter(className: string): JSX.Element {\n const containerClass = `${this._className}__container`;\n const containerContentClass = `${containerClass}__content`;\n const filterClassName = `${className}__filter`;\n return (\n
\n
{this._renderInvoiceInCartPaymentMessage()}
\n \n
\n );\n }\n\n private _renderInvoicesList(className: string): JSX.Element {\n const tableClassName = `${className}__table`;\n return (\n \n );\n }\n\n private _onAddToCartFailed(newErrorState: IInvoiceErrorState, reference?: React.RefObject): void {\n const errorState = { ...newErrorState };\n errorState.errorHost = 'ADDINVOICETOCART';\n errorState.errorMessage =\n newErrorState.errorReason?.failureReason === 'EMPTYINPUT'\n ? this.props.resources.invoiceErrorInvoiceIdNotExist\n : this.props.resources.invoiceErrorFailedAddInvoiceToCart;\n\n const shouldShowAdditionalInfoInPopup =\n errorState.errorCode === 'Microsoft_Dynamics_Commerce_Runtime_InvoiceLineNotAllowedWithItemLines';\n this.setState({ errorState, payInvoiceErrorModalOpen: shouldShowAdditionalInfoInPopup, selectedButtonElement: reference?.current });\n }\n\n private _renderMakePayment(className: string, disabled: boolean): JSX.Element {\n const id = `${className}__make-payment`;\n const makePaymentResources: IMakePaymentResources = {\n makePaymentButtonText: this.props.resources.makePaymentButtonText,\n makePaymentButtonAriaLabel: this.props.resources.makePaymentButtonAriaLabel\n };\n\n const selectedInvoices = this._getSelectedInvoices();\n\n return (\n \n );\n }\n\n private _setPayInvoiceErrorModalClose(): void {\n this.setState({\n payInvoiceErrorModalOpen: false\n });\n this.state.selectedButtonElement?.focus();\n }\n\n private _renderInvoiceErrors(): JSX.Element {\n const {\n resources: {\n payInvoiceErrorDialogHeader,\n payInvoiceErrorDialogBodyErrorTitle,\n payInvoiceErrorDialogBodyErrorDescription,\n payInvoiceErrorDialogFooterGoToCartButtonText,\n payInvoiceErrorDialogFooterCancelButtonText\n }\n } = this.props;\n\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n\n const errorClassName = `${this._className}__errors`;\n\n return (\n \n );\n }\n\n private _renderInvoiceInCartPaymentMessage(): JSX.Element {\n const cart = this.props.data.cart?.result;\n\n if (!cart?.hasInvoiceLine) {\n return <>;\n }\n\n return (\n \n \n \n );\n }\n\n // Dismiss alert.\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\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 this.invoiceIds.push(invoiceId);\n this._onToggleInvoiceRequestModal();\n }\n\n private _getSelectedInvoices(): InvoiceModel[] {\n let selectedInvoices = this.state.invoices.filter(invoice => invoice.isSelected);\n if (!ArrayExtensions.hasElements(selectedInvoices)) {\n selectedInvoices = this.state.invoices;\n }\n\n return selectedInvoices;\n }\n\n private _requestSpecificInvoice(\n specificInvoice: InvoiceModel,\n requestInvoiceButtonReference: React.RefObject\n ): void {\n this.state.invoices.forEach((invoice: InvoiceModel) => {\n if (invoice === specificInvoice) {\n invoice.isSelected = true;\n } else {\n invoice.isSelected = false;\n }\n });\n this.setState({\n selectedButtonElement: requestInvoiceButtonReference.current\n });\n this._onToggleInvoiceRequestModal();\n }\n}\n\nexport default InvoicesList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IInvoicesListViewProps } from './invoices-list';\n\nexport const InvoiceListView: React.FC = props => {\n const { header, filter, content, invoiceRequestModal, pagination } = props;\n\n return (\n \n {header}\n {invoiceRequestModal}\n {filter}\n {content}\n {pagination}\n \n );\n};\n\nexport default InvoiceListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IMapData } from './map.data';\nimport { IMapProps, IPushpinOptionsData } from './map.props.autogenerated';\n\n/**\n * Header Interface.\n */\nexport interface IHeader {\n headerProps: INodeProps;\n heading: React.ReactNode;\n}\n\n/**\n * MapViewProps Interface.\n */\nexport interface IMapViewProps extends IMapProps {\n ModuleProps: IModuleProps;\n Header: IHeader;\n MapProps: INodeProps;\n Map: Microsoft.Maps.Map | undefined;\n}\n\n/**\n *\n * Map component.\n * @extends {React.Component>}\n */\n@observer\nclass Map extends React.Component> {\n @observable public map: Microsoft.Maps.Map | undefined;\n private timeout: number = 500;\n\n private readonly mapRef: React.RefObject = React.createRef();\n\n public constructor(props: IMapProps) {\n super(props);\n }\n\n public componentDidMount(): void {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n }\n } = this.props;\n\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const loadMapAPIInput = {\n key: channel?.BingMapsApiKey,\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n };\n\n if (\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded\n ) {\n this._initMap();\n if (this.props.data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n this._updateMapsForDistributor();\n } else {\n this._updateMap();\n }\n }\n\n when(\n () => !!this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.storeSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n when(\n () => !!this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded,\n () => {\n this.props.data.distributorSelectorStateManager?.result?.setMapModuleLoaded(true);\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.loadMapApi ||\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi,\n () => {\n if (this.props.data.distributorSelectorStateManager?.result?.loadMapApi) {\n this.props.data.distributorSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n } else {\n this.props.data.storeSelectorStateManager?.result?.loadMapApi(loadMapAPIInput);\n }\n }\n );\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager?.result?.isMapApiLoaded ||\n this.props.data.distributorSelectorStateManager?.result?.isMapApiLoaded,\n () => {\n this._initMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.storeSelectorStateManager.result?.context?.orgUnitStoreInformation,\n this.props.data.storeSelectorStateManager.result?.selectedStoreLocationId,\n this.map\n ];\n },\n () => {\n this._updateMap();\n }\n );\n\n reaction(\n () => {\n return [\n this.props.data.distributorSelectorStateManager?.result?.distributorList,\n this.props.data.distributorSelectorStateManager?.result?.selectedDistributorId,\n this.map\n ];\n },\n () => {\n this._updateMapsForDistributor();\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { heading, className },\n data\n } = this.props;\n\n const shouldDisplayMap = data.storeSelectorStateManager?.result?.isDialogOpen\n ? data.storeSelectorStateManager?.result?.listMapViewState.displayMap\n : data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen\n ? data.distributorSelectorStateManager?.result?.listMapViewState.displayMap\n : false;\n\n const viewProps: IMapViewProps = {\n ...this.props,\n ModuleProps: {\n tag: 'div',\n moduleProps: this.props,\n className: classname('ms-map', { show: shouldDisplayMap }, className)\n },\n Header: {\n headerProps: { className: 'ms-map__header' },\n heading: heading?.text && (\n \n )\n },\n MapProps: {\n tag: 'div',\n className: 'ms-map__body',\n ref: this.mapRef\n },\n Map: this.map\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Initialize the map.\n */\n private readonly _initMap = () => {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n data\n } = this.props;\n\n if (data.storeSelectorStateManager?.result?.isMapApiLoaded || data.distributorSelectorStateManager?.result?.isMapApiLoaded) {\n const mapLoadOptions = {\n credentials: channel?.BingMapsApiKey,\n pushpinAccessible: true\n };\n this.map = new Microsoft.Maps.Map(this.mapRef.current as HTMLElement, mapLoadOptions);\n Microsoft.Maps.Events.addHandler(this.map, 'click', async () => {\n if (data.distributorSelectorStateManager?.result?.isDistributorSelectorDialogOpen) {\n // Hide the distributor details that appear below the screen size of 768px.\n data.distributorSelectorStateManager?.result?.updateDistributorMapVisibility(false);\n await data.distributorSelectorStateManager?.result?.setSelectedDistributorId(undefined);\n } else {\n await data.storeSelectorStateManager?.result?.setSelectedStoreLocationId(undefined);\n }\n });\n }\n };\n\n private readonly _updateMapsForDistributor = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n const distributorInfoList = distributorSelectorStateManager?.distributorList;\n const selectedDistributorId = distributorSelectorStateManager?.selectedDistributorId;\n\n if (this.map && ArrayExtensions.hasElements(distributorInfoList)) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const distributorList = distributorInfoList.filter(distributor => distributor.OrgUnit !== undefined);\n\n for (const [index, distributorInfo] of distributorList.entries()) {\n const orgUnit = distributorInfo.OrgUnit;\n\n if (orgUnit?.Latitude && orgUnit.Longitude) {\n const isLocationSelected = selectedDistributorId === orgUnit?.RecordId;\n const options = this._getPushpinOptions(isLocationSelected, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(orgUnit?.Latitude, orgUnit.Longitude), options);\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleDistributorPushpinClick(orgUnit.RecordId);\n });\n isLocationSelected ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isLocationSelected) {\n mapLocation = orgUnit;\n }\n }\n }\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Update the map.\n */\n private readonly _updateMap = () => {\n const pushpinOptions = this.props.config.pushpinOptions;\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager?.result;\n const orgUnitStoreInformation = storeSelectorStateManager?.context?.orgUnitStoreInformation;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n\n if (this.map && orgUnitStoreInformation) {\n let mapLocation: OrgUnitLocation | undefined;\n this.map.entities.clear();\n const pushpins: Microsoft.Maps.IPrimitive[] = [];\n\n const storeLocationList = orgUnitStoreInformation.filter(store => store.OrgUnitAvailability !== undefined);\n\n for (const [index, unitStoreInfo] of storeLocationList.entries()) {\n const storeLocation = unitStoreInfo.OrgUnitAvailability?.OrgUnitLocation;\n\n if (storeLocation?.Latitude && storeLocation.Longitude) {\n const isSelectedLocation = selectedStoreLocationId === storeLocation.OrgUnitNumber;\n const options = this._getPushpinOptions(isSelectedLocation, index, pushpinOptions);\n const pushpin = new Microsoft.Maps.Pushpin(\n new Microsoft.Maps.Location(storeLocation.Latitude, storeLocation.Longitude),\n options\n );\n\n Microsoft.Maps.Events.addHandler(pushpin, 'click', () => {\n this.handleClickEvent(storeLocation.OrgUnitNumber);\n });\n isSelectedLocation ? pushpins.unshift(pushpin) : pushpins.push(pushpin);\n\n if (isSelectedLocation) {\n mapLocation = storeLocation;\n }\n }\n }\n\n if (mapLocation) {\n const currentLocation = new Microsoft.Maps.Location(mapLocation.Latitude, mapLocation.Longitude);\n this.map.setView({ center: currentLocation });\n } else {\n // Create a LocationRect from array of pushpins and set the map view.\n this.map.setView({\n bounds: Microsoft.Maps.LocationRect?.fromShapes(pushpins)\n });\n }\n\n this.map.setOptions({ pushpinAccessible: true } as Microsoft.Maps.IMapOptions);\n this.map.entities.push(pushpins);\n }\n };\n\n /**\n * Handle click event.\n * @param orgUnitNumber - Organization unit number.\n */\n private readonly handleClickEvent = (orgUnitNumber: string | undefined): void => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n if (orgUnitNumber) {\n setTimeout(() => {\n storeSelectorStateManager?.setSelectedStoreLocationId(orgUnitNumber);\n }, this.timeout);\n }\n };\n\n /**\n * Handle the click event of the pushpin for distributors on the maps.\n * @param recordId - RecordId.\n */\n private readonly handleDistributorPushpinClick = (recordId: number | undefined): void => {\n const distributorSelectorStateManager = this.props.data.distributorSelectorStateManager?.result;\n // Show the distributor details that appear below the screen size of 768px.\n distributorSelectorStateManager?.updateDistributorMapVisibility(true);\n distributorSelectorStateManager?.setSelectedDistributorId(undefined);\n if (recordId) {\n setTimeout(() => {\n distributorSelectorStateManager?.setSelectedDistributorId(recordId);\n }, this.timeout);\n }\n };\n\n /**\n * Get the pushpin option.\n * @param isSelectedLocation - Is selected location.\n * @param index - Index.\n * @param pushpinOptions - PushpinOptions.\n * @returns - The pushpin options.\n */\n private readonly _getPushpinOptions = (isSelectedLocation: boolean, index: number, pushpinOptions?: IPushpinOptionsData) => {\n const text = pushpinOptions?.showIndex ? (index + 1).toString() : undefined;\n\n const size = pushpinOptions?.size || 1;\n const color = isSelectedLocation ? pushpinOptions?.selectionColor || pushpinOptions?.color : pushpinOptions?.color;\n const icon = this._getSvgIcon(size, color, text);\n\n return {\n // Fallback if icon doesn't render properly\n color: isSelectedLocation ? pushpinOptions?.selectionColor : pushpinOptions?.color,\n icon\n };\n };\n\n private readonly _getSvgIcon = (size: number, color?: string, text?: string) => {\n const baseValue: number = 32;\n return `\n \n ${text ? `${text}` : ''}\n `;\n };\n}\n\nexport default Map;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeader, IMapViewProps } from './map';\n\n/**\n * Render the heading.\n * @param param0 -- Heading props.\n * @param param0.headerProps -- Heading Props.\n * @param param0.heading -- Heading Node.\n * @returns -- Returns the node.\n */\nconst MapHeader: React.FC = ({ headerProps, heading }) => {heading};\n\n/**\n * Renders the map view props.\n * @param param0 -- Map view props.\n * @param param0.ModuleProps -- Module props.\n * @param param0.Header -- Header props.\n * @param param0.MapProps -- Map props.\n * @returns -- Returns the map module.\n */\nconst MapView: React.FC = ({ ModuleProps, Header, MapProps }) => (\n \n {Header && }\n \n \n);\n\nexport default MapView;\n"],"names":["FaqPage","React","constructor","props","super","resetTabLabel","label","toLowerCase","includes","getSelectedLabel","config","tabLabels","this","_selectedTabLabel","URLSearchParams","window","location","search","get","undefined","selectedTabLabel","map","tabLabel","index","setState","selectedTab","onClickTab","activeTab","state","render","heading","tabDescriptions","mobileView","context","request","device","Type","className","key","Button","onClick","role","RichTextComponent","text","tabDescription","i","AddToCartComponentActions","async","_event","setDisabled","setAddtoCartModal","setProduct","setCheckoutUrl","setQuantity","_props$productAvailab","cartError","addToCartError","productToAdd","data","product","propogateError","getSelectedProduct","cartState","getCartState","actionContext","addProductToCart","count","quantity","availableQuantity","productAvailability","AvailableQuantity","enableStockCheck","app","then","result","status","navigationUrl","propogateResult","failureReason","cartActionResult","AddToCart","disabled","useState","isAddToCartModalOpen","checkoutUrl","MandsModal","isOpen","modalTitle","addToCartModalTitle","modalBody","addToCartModalBody","modalFooter","addToCartModalFooter","classnames","getLinkText","event","shouldShowOutOfStock","defaultProps","closeModal","_dimensions$sizeDimen","productName","Name","dimensions","Dimensions","sizeDimensionsIndex","findIndex","dim","DimensionTypeValue","price","Price","toFixed","productImage","PrimaryImageUrl","src","alt","DimensionValue","Value","navigateToCart","assign","outOfStockText","addToCartText","RecordId","missingDimensions","filter","dimension","length","stockLeft","Math","max","outOfStockThreshold","includeCurrentQuantity","find","outOfStockThresholdLocal","currentQuantity","onAdd","onError","AddToWishlistComponentActions","user","waiting","isAuthenticated","signInUrl","setWaiting","doesProductExistInWishlist","removeFromWishlist","addToWishlist","setContent","color","showAlert","wishlists","CommerceListLines","wishlistItem","ProductId","propogateSuccess","onSuccess","cartline","canAddMasterProduct","AsyncResult","resolve","userAccountNumber","customerAccountNumber","callAddWishlistLine","Id","wishlistName","nameOfWishlist","listData","CustomerId","CommerceListTypeValue","createCommerceListAsync","callerContext","commerceList","catch","error","telemetry","warning","debug","wishlistId","productId","addLinesAsync","buildWishlistLine","createdCommerceList","update","createGetByCustomerInput","setCanRemove","wishlistTextMessage","addToWishlistMessage","addItemToWishlistError","removedFromWishlistMessage","removeItemFromWishlistError","accountNumber","wishlistLine","line","removeLinesAsync","canRemove","content","removeFromWishlistButtonText","addToWishlistButtonText","showStatusMessage","showRemoveButton","showButtonText","showButtonTooltip","tooltipPosition","onClickHandler","ariaLabel","addToWishlistRef","removeFromWishlistRef","showMessage","showTooltip","tooltipPos","ref","UncontrolledTooltip","placement","trigger","target","title","Alert","toggle","onDismissHandler","Modal","autoFocus","applicationNode","zIndex","ModalHeader","ModalBody","ModalFooter","SignInLoading","_ref","modal","icon","message","Node","Object","signIn","viewState","loading","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signUpSectionHeading","signUpLink","guestURL","Module","isShowLoading","LocalAccount","guesturl","localAccount","items","forgetPassword","disclaimer","signInButton","item","wrapper","input","RequestsTableColumnHeader","getUserName","resources","StringExtensions","isNullOrEmpty","UserFirstName","UserLastName","b2bRequestsNameDisplay","replace","formatDate","date","cultureFormatter","year","month","day","getDetails","_requestDetails$Invoi","Details","requestDetails","accountStatementStartDateTime","AccountStatementStartDateTime","accountStatementEndDateTime","AccountStatementEndDateTime","invoiceId","InvoiceId","TypeValue","b2bRequestsAccountStatementDetails","b2bRequestsInvoiceCopyDetails","getDisplayFriendlyTypeValue","typeValue","b2bRequestsTypeCreateProspect","b2bRequestsTypeAddUser","b2bRequestsTypeDeleteUser","b2bRequestsTypeEditUser","b2bRequestsTypeRequestAccountStatement","b2bRequestsTypeRequestInvoiceCopy","b2bRequestsTypeUnknown","getDisplayFriendlyStatusValue","statusValue","b2bRequestsStatusProcessed","b2bRequestsStatusError","b2bRequestsStatusRequested","createTableProps","tableProps","_context$request$quer","moduleProps","tableData","operationRequests","ArrayExtensions","hasElements","_request$TypeValue","_request$StatusValue","row","id","b2bRequestsTypeColumn","type","TableDataType","Text","value","b2bRequestsRequestDateColumn","CreatedDateTime","b2bRequestsDescriptionColumn","b2bRequestsUserColumn","b2bRequestsStatusColumn","StatusValue","isSelected","createTableItems","headings","isMobile","mobileExcludedColumns","name","sortable","columnSortAriaLabel","rows","editLinkText","deleteLinkText","viewLinkText","enableToModify","actionLinkText","showCheckBoxes","isSortable","showPagination","minifyActions","excludedColumns","paginationProperty","skipCount","query","skip","isNaN","Number","parseInt","itemPerPage","prevText","b2bRequestsPreviousText","nextText","b2bRequestsNextText","paginationText","url","reqContext","MsDyn365","isBrowser","URL","href","requestUrl","isSingleSelectOnly","actions","onDelete","onEdit","onView","businessUserSelectCheckBoxAriaLabelText","sortByAscending","sortByDescending","B2bRequestsTable","Table","B2bRequestsStatus","renderHeader","headingData","_this$props$data$oper","_this$props$data$oper2","itemCount","Heading","tag","getItemNumberDisplayString","_retrieveExcludedColumns","renderTable","format","b2bRequestsNumberOfItemsSingular","b2bRequestsNumberOfItems","variant","VariantType","Viewport","isChannelTypeB2B","requestContext","viewProps","_objectSpread","b2bRequestsStatus","table","renderView","__decorate","computed","_renderTextBlock","textBlocks","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","_renderConfigureDropdown","dropdown","LabelContainerProps","errors","select","_renderFindInStore","findInStore","storeSelector","description","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","min","applyDefaultOrderSettings","telemetryContent","IncrementalQuantity","currentCount","onChange","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","_renderShopSimilarItem","shopSimilarItem","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","mediaGallery","bulkPurchaseLink","slots","FooterCategory","viewprops","categories","FooterList","FooterListItem","FooterCategoryView","category","ImageList","handleParagraphChange","images","paragraph","_renderImageListItems","imageList","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","disableLazyLoad","_image$imageSettings","_link$linkText","image","link","imageProps","gridSettings","imageSettings","imageLink","linkUrl","destinationUrl","imageLinkText","linkText","imageLinkAriaLabel","imageLinkOpenInNewTab","openInNewTab","Msdyn365","loadFailureBehavior","editProps","linkAltText","linkAriaLabel","linkOpenInNewTab","_heading$tag","imageListTitle","imageListHeading","imageListContainer","imageListItem","imageListItemAnchorTag","imageListItems","imageListView","indexKey","altText","InteractiveFeatureCollectionLinks","_mapEditableLinks","linkdata","editableLinks","payLoad","getPayloadObject","contentAction","etext","attributes","getTelemetryAttributes","editableLink","additionalProperties","onTelemetryClick","push","links","onTextChange","InteractiveFeatureItem","_telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","handleHeadingChange","handleLinkTextChange","linkIndex","_this$props$config$li","indexItem","itemCounter","isMosaic","featureItemLinks","_createHeading","_createParagraph","_renderImage","featureItem","interactiveFeatureCollectionCarouselContainer","interactiveFeatureCollectionCarouselImage","interactiveFeatureCollectionCarouselContent","interactiveFeatureCollectionMosaicContainer","tabindex","interactiveFeatureCollectionMosaicImage","interactiveFeatureCollectionMosaicDetails","isNullOrWhitespace","isAriaHiddenAttribute","_item$imageSettings","_this$props$config$im","verifiedImageSettings","sm","md","moduleType","typeName","imagePropertyName","moduleId","MagicNumber","FeatureItemViewComponent","renderMosaic","thisProps","indexAux","caseNumberOne","itemCounterAux","caseNumberZero","modularAux","modularDivisor","firstRow","caseNumberTwo","lastRow","onCornerRight","onCornerLeft","containerClasses","renderCarousel","InvoiceDetailsHeaderComponent","msdyn365Commerce","createComponent","component","invoiceDetails","invoiceNumberText","invoiceIdLabel","invoiceOrderItemsText","lines","invoiceOrderItem","invoiceOrderItems","toString","invoiceInfoContainerClassName","orderInfoContainerClassName","orderInfoClassName","orderMainInfoClassName","orderDetailsClassName","actionsClassName","amountSummaryClassName","orderDate","invoiceDate","formatShortDate","dueDate","formatLongDate","dueDateText","invoicePaymentDueDateText","isOnBehalfOfRequest","isOboRequest","invoicePlacedByLabel","customerName","invoiceAmountDueText","formatAmount","amount","currencyCode","formatCurrency","amountDue","PayInvoiceComponent","invoice","InvoiceDetailsPaymentDetailsComponent","invoicePaymentDetails","lineClassName","ObjectExtensions","isNullOrUndefined","totalDiscount","invoicePaymentDiscounts","subtotal","invoicePaymentSubtotal","totalCharges","invoicePaymentCharges","totalTax","invoicePaymentTax","totalAmount","invoicePaymentInvoiceTotal","InvoiceDetailsProductsComponent","productLineClass","productLineInfoContainerClass","productLineDetailsClass","productLineSmallDetailsClass","Quantity","productUrl","ProductName","getProductPageUrlSync","_renderProductImage","_context$request$app","cropFocalRegion","fallbackImage","getFallbackImageUrl","ItemId","apiSettings","OmniChannelMedia","Image","primaryImageUrl","fallBackSrc","_renderProductDimensions","ColorName","invoiceProductColor","SizeName","invoiceProductSize","StyleName","invoiceProductStyle","invoiceQuantity","NetAmount","InvoiceDetailsModel","products","InvoiceDate","Date","CustomerName","InvoiceDueDate","AmountBalance","InvoicePaidStatusValue","SalesInvoiceLine","_products$find","TotalDiscount","InvoiceSubtotal","TotalCharges","TotalTaxAmount","TotalAmount","CurrencyCode","InvoicePaidStatus","Paid","InvoiceDetails","errorState","errorMessage","otherError","_onAddToCartFailed","bind","_setPayInvoiceErrorModalClose","_getProducts","ChannelId","invoiceDetailsModel","payInvoiceErrorModalOpen","header","_renderHeader","_renderProducts","paymentDetails","_renderPaymentDetails","payInvoiceError","_renderInvoiceErrors","_className","channelId","arguments","productInputs","ProductInput","getSimpleProductsAction","newErrorState","errorHost","errorCode","_this$state$errorStat","payInvoiceErrorDialogHeader","payInvoiceErrorDialogBodyErrorTitle","payInvoiceErrorDialogBodyErrorDescription","payInvoiceErrorDialogFooterGoToCartButtonText","payInvoiceErrorDialogFooterCancelButtonText","cartUrl","getUrlSync","errorClassName","InvoiceErrorComponent","showError","errorDialogHeader","errorDialogBodyErrorTitle","errorDialogBodyErrorDescription","errorDialogFooterGoToCartButtonText","errorDialogFooterCancelButtonText","setPayInvoiceErrorModalClose","InvoiceDetailsView","messageHeader","errorMessages","assertive","InvoicesFilterState","getInvoicesFilterStateResources","filterState","ShowAll","invoicesFilterShowAll","invoiceStatusPaid","PartiallyPaid","invoiceStatusPartiallyPaid","Unpaid","invoiceStatusUnpaid","Error","onStateClick","InvoicesFilterComponent","popoverRef","popoverState","setPopoverState","togglePopover","setFilterState","currentState","onFilterStateClick","clickedState","onFilterStateChanged","innerRef","Popover","EnumExtensions","getEnumValues","renderFilterStateItem","stateStringRepresentation","InvoicesTableHeaderComponent","rowClassName","switchCheckedState","onSelectAll","isSelectedAll","headerCells","getMobileHeaderCells","invoiceListSelectAllRadioAriaLabelText","checked","invoicesText","invoiceDateMobileText","getDesktopHeaderCells","invoiceDateText","invoiceUsersText","invoiceAmountText","invoiceDueDateText","invoiceStatusText","invoiceActionsText","onRequestSpecificInvoice","requestInvoiceButtonReference","onRequestInvoice","setShowPreviousActions","onClickViewDetails","linkToInvoiceDetails","isShowActions","setShowActions","shouldShowActions","extraActionsPopup","invoiceViewDetailsButtonAriaLabel","invoiceViewDetailsButtonText","invoiceActionsButtonTextAriaLabel","invoiceActionsButtonIsOnBehalfOfTextAriaLabel","showActions","getInvoiceDetailsPageUrlSync","actionsContainerClassName","payInvoiceClassName","reference","payInvoiceReferences","RequestInvoiceButton","innerReference","invoiceReferences","requestInvoiceButtonLabel","invoiceRequestButtonLabel","onClicked","InvoicesTableRowComponent","onSelectLine","rowCells","getMobileRowCells","invoiceRowArialabel","invoiceListSelectRadioAriaLabelText","getInvoiceStatusText","getDesktopRowCells","customer","isCurrentUser","AccountNumber","invoiceCurrentUser","isMobileView","viewport","_window","innerWidth","getViewport","onSelectAllHandler","invoices","forEach","InvoicesTableComponent","setIsMobile","updateViewport","addEventListener","headerClassName","all","isAdmin","IsB2bAdmin","invoiceButtonReferences","payInvoiceButtonReferences","MakePaymentComponentActions","payInvoices","buttonReferences","MakePaymentComponent","hasInvoices","canBePaid","makePaymentButtonAriaLabel","makePaymentButtonText","PayInvoiceComponentActions","payInvoiceButtonAriaLabel","payInvoiceButtonText","InvoiceModel","CustomerAccountNumber","invoiceStatus","None","invoiceStatusNone","invoicesToAdd","errorReason","addInvoicesToCart","invoiceIds","_result$errorDetails","_result$errorDetails2","errorDetails","LocalizedMessage","ErrorResourceId","onSubmitRequestClick","onClosing","filteredInvoices","onSubmitRequest","checkboxRef","closingFlag","_inputInvoice$current","current","searchInputChangedHandler","setSearchInput","onCancelHandler","renderInvoiceOptions","setSelectedInvoiceIndex","_invoice","_checkboxRef$current$","onInvoiceSelect","onInvoiceSelectHandler","checkboxId","checkboxName","htmlFor","RequestInvoiceModal","email","isModalOpen","modalHeaderLabel","sendToEmailLabel","submitRequestLabel","cancelLabel","searchPlaceholderLabel","invoicesFoundString","singleInvoiceFoundString","searchButtonAltText","selectedInvoiceIndex","setFilteredInvoices","searchInput","shouldShowSearchResults","setShouldShowSearchResults","invoiceOptionsData","invoiceOptions","setInvoiceOptions","focusElement","setTimeout","_focusElement$current","focus","searchEntered","searchEnteredHandler","updatedInvoices","toLocaleUpperCase","searchResultString","invoicesFoundReplaceIndex","indexOf","horizontalPosition","verticalPosition","fade","onOpened","setFilteredInvoicesToSelectedInvoices","selectedInvoices","requestInvoiceDialogAriaLabel","substring","placeholder","InvoicesList","buttonChildReference","buttonChildPayButtonReference","_onDismiss","_onToggleInvoiceRequestParentModal","selectedButtonElement","payInvoiceRequestReference","_onToggleInvoiceRequestModal","_queryResultSettings","QueryResultSettingsProxy","fromModuleData","QueryResultSettings","makePaymentReference","_updateInvoicesState","_handleFilterStateChange","_loadMoreInvoices","_requestInvoice","_requestSpecificInvoice","invoicesFilterState","isLoading","isPageLoaded","isInvoiceRequestModalOpen","shouldComponentUpdate","nextProps","nextState","_customerBalance$resu","_customerBalance$resu2","_heading$text","channel","customerBalance","invoicesListTitle","invoicesListDescTitle","invoicesListDescCount","amountText","OpenInvoiceBalance","Currency","totalCount","OpenInvoiceCount","countText","invoicesListTitleHeading","invoiceRequestModal","_renderInvoiceRequestModal","_renderInvoicesFilter","pagination","_renderPagination","_renderListContainer","_renderEmptyInvoiceLinesPageContent","invoicesData","_initializeWithInvoices","reaction","_this$props$data$b2bU","b2bUserId","b2bUserInformation","B2BUserId","BusinessPartnerUsersDataActions","BusinessPartnerOperationDeliveryType","Email","_addInvoices","newInvoices","concat","containerClass","actionsContainerClass","invoiceEmptyInvoiceLinesTitle","invoiceEmptyInvoiceLinesDescription","invoiceEmptyInvoiceLinesContinueShoppingButtonAriaLabel","invoiceEmptyInvoiceLinesContinueShoppingButtonText","containerHeaderClass","containerContentClass","_renderMakePayment","_renderInvoiceRequestButton","_renderInvoicesList","searchCriteria","businessPartner","getCurrentAsync","BusinessPartnerId","getCustomer","GetCustomerInput","InvoicePaidStatusValues","_getInvoicesSearchCriteria","Paging","Skip","getInvoices","GetInvoicesInput","filterClassName","_renderInvoiceInCartPaymentMessage","tableClassName","_newErrorState$errorR","invoiceErrorInvoiceIdNotExist","invoiceErrorFailedAddInvoiceToCart","shouldShowAdditionalInfoInPopup","makePaymentResources","_getSelectedInvoices","moduleTypeName","_this$state$selectedB","invoiceErrorMessageHeader","_this$props$data$cart","cart","hasInvoiceLine","invoiceInCartPaymentMessage","_data$invoices","Top","invoicesLoadMore","invoiceRequestModalCancelLabel","invoiceRequestModalSubmitLabel","invoiceRequestModalHeaderLabel","invoiceRequestModalSendToEmailLabel","invoiceRequestModalSearch","invoiceRequestModalInvoiceSearchDisplay","invoiceRequestModalSingleInvoiceSearchDisplay","invoiceRequestModalSearchButton","_this$state$selectedB2","specificInvoice","observer","InvoiceListView","Map","timeout","mapRef","_initMap","_data$storeSelectorSt","_data$distributorSele","storeSelectorStateManager","isMapApiLoaded","distributorSelectorStateManager","mapLoadOptions","credentials","BingMapsApiKey","pushpinAccessible","Microsoft","Maps","Events","addHandler","_data$distributorSele2","_data$distributorSele3","_data$distributorSele4","_data$storeSelectorSt2","isDistributorSelectorDialogOpen","updateDistributorMapVisibility","setSelectedDistributorId","setSelectedStoreLocationId","_updateMapsForDistributor","_this$props$data$dist","pushpinOptions","distributorInfoList","distributorList","selectedDistributorId","mapLocation","entities","clear","pushpins","distributor","OrgUnit","distributorInfo","entries","orgUnit","Latitude","Longitude","isLocationSelected","options","_getPushpinOptions","pushpin","Pushpin","Location","handleDistributorPushpinClick","unshift","currentLocation","setView","center","_Microsoft$Maps$Locat","bounds","LocationRect","fromShapes","setOptions","_updateMap","_this$props$data$stor","_storeSelectorStateMa","orgUnitStoreInformation","selectedStoreLocationId","storeLocationList","store","OrgUnitAvailability","unitStoreInfo","_unitStoreInfo$OrgUni","storeLocation","OrgUnitLocation","isSelectedLocation","OrgUnitNumber","handleClickEvent","_Microsoft$Maps$Locat2","orgUnitNumber","recordId","_this$props$data$dist2","showIndex","size","selectionColor","_getSvgIcon","componentDidMount","_this$props$context","_this$props$data$stor2","_this$props$data$dist3","BingMapsEnabled","loadMapAPIInput","lang","locale","market","ChannelCountryRegionISOCode","_this$props$data$dist4","when","_this$props$data$stor3","setMapModuleLoaded","_this$props$data$stor4","_this$props$data$dist5","_this$props$data$dist6","_this$props$data$stor5","_this$props$data$dist7","loadMapApi","_this$props$data$dist8","_this$props$data$dist9","_this$props$data$stor6","_this$props$data$stor7","_this$props$data$dist10","_this$props$data$stor8","_this$props$data$stor9","_this$props$data$dist11","_this$props$data$dist12","_data$storeSelectorSt3","_data$storeSelectorSt4","_data$distributorSele5","_data$distributorSele6","shouldDisplayMap","isDialogOpen","listMapViewState","displayMap","classname","show","Header","headerProps","MapProps","observable","MapHeader","_ref2"],"sourceRoot":""}