{"version":3,"file":"static/js/13.119b309a8c9fdb3cf01c.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/checkout-order-confirmation.view.tsx?828a","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/invoices-list.view.tsx?38e4","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/media-gallery.view.tsx?87fd","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-history.view.tsx?e453","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/reviews-list.view.tsx?da88","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/OrderConfirmationDetail.tsx?19df","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/checkout-order-confirmation.view.tsx?128f","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/invoices-list.view.tsx?e526","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/media-gallery.view.tsx?0cc7","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-history.view.tsx?d255","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/reviews-list.view.tsx?03f6","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.tsx?8281","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/account-customer-balance-tile.view.tsx?95a8","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-info.tsx?44e9","webpack://Msdyn365.Commerce.Online/./src/modules/account-customer-balance-tile/components/account-customer-balance-tile-links.tsx?95ac","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/components/loyalty-sign-up-small-components.tsx?7106","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.tsx?fd89","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-sign-up/loyalty-sign-up.view.tsx?45ec","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/components/loyalty-terms-modal.tsx?1b8b","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.tsx?babd","webpack://Msdyn365.Commerce.Online/./src/modules/loyalty-terms/loyalty-terms.view.tsx?b3e6","webpack://Msdyn365.Commerce.Online/../../src/checkout-state-data-action.ts?8344","webpack://Msdyn365.Commerce.Online/../../src/checkout-state.ts?acd8","webpack://Msdyn365.Commerce.Online/../../src/checkout-utilities.data.ts?b2cc","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/module-state.ts?7579","webpack://Msdyn365.Commerce.Online/../../../src/module-state-manager/with-module-state.tsx?61ca","webpack://Msdyn365.Commerce.Online/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Msdyn365.Commerce.Online/./src/common/error.tsx?096f","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode.tsx?83e6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode.tsx?5675","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/checkout-customer-account-payment.tsx?de67","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.tsx?79c6","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-group.tsx?9de7","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-utility.ts?b7eb","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-date-dropdown.tsx?e5a3","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/components/checkout-pickup-timeslot-dropdown.tsx?aef8","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/checkout-pickup.tsx?28aa","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-pickup/checkout-pickup.view.tsx?d64e","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.check-box.tsx?3b17","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-message.tsx?c6a5","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-title.tsx?f908","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx?9243","webpack://Msdyn365.Commerce.Online/./src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.tsx?26e8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/header.view.tsx?6d84","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/navigation-menu.view.tsx?bc23","webpack://Msdyn365.Commerce.Online/./src/modules/back-top-footer/back-top-footer.tsx?f47e","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.tsx?9384","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-button/product-comparison-button.view.tsx?94a7","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/content-block.view.tsx?0db4","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/footer-item.view.tsx?15be","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/write-review.view.tsx?c67c"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHelp, IOrderSummary, IPaymentMethods } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common';\r\nimport { IGroup, IGroupDelivery, IGroups } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-sales-line';\r\nimport {\r\n ICheckoutOrderConfirmationViewProps\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/./checkout-order-confirmation';\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n // receiptEmail,\r\n // createdDate,\r\n // channelReferenceId\r\n}) => (\r\n \r\n {/* {channelReferenceId} */}\r\n {/* {receiptEmail} */}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, pickupDateTimeslot, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderConfirmationView: React.FC = ({\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n // orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {/* {orderInfomation && } */}\r\n {backToShoppingLink}\r\n {groups && }\r\n {orderSummary && }\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n if (MsDyn365.isBrowser) {\r\n const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n console.log(linksElements);\r\n linksElements.forEach(l => l.setAttribute('href', '#'));\r\n }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount\r\n // channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {/* {channelReferenceId} */}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","import React from 'react';\r\nimport { AttributeTextValue, Customer, SalesOrder, SimpleProduct } from \"@msdyn365-commerce/retail-proxy\";\r\nimport { ICultureInfoFormatter } from '@msdyn365-commerce/core-internal';\r\nexport interface IOrderConfirmationDetailProps {\r\n cultureFormatter: ICultureInfoFormatter;\r\n salesOrder: SalesOrder;\r\n customer: Customer | undefined;\r\n deliveryMode: string;\r\n orderedProducts: SimpleProduct[]\r\n}\r\n\r\nexport const OrderConfirmationDetail: React.FC = ({salesOrder, cultureFormatter, customer, deliveryMode, orderedProducts}) => {\r\n\r\n const getProductDescription = (itemId: string): string => orderedProducts.find(p => p.ItemId === itemId)?.Description || '';\r\n\r\n const salesOrderAttrs = salesOrder.AttributeValues || [];\r\n const attr = salesOrderAttrs.find(s => s.Name === \"po-number\") as AttributeTextValue;\r\n return (\r\n
\r\n
\r\n

Order Confirmation

\r\n window.print() } />\r\n
\r\n\r\n
\r\n
\r\n
Order Information
\r\n
\r\n
\r\n

PO Number:

\r\n

{attr.TextValue}

\r\n
\r\n
\r\n

Order Date:

\r\n {cultureFormatter.formatDate(salesOrder.CreatedDateTime!, {\r\n year: \"numeric\",\r\n month: \"short\",\r\n day: \"2-digit\"\r\n })}

\r\n
\r\n
\r\n {salesOrder.Comment ? (
\r\n
\r\n

Notes:

\r\n

{salesOrder.Comment}

\r\n
\r\n
) : null}\r\n
\r\n
\r\n
\r\n
Account Information
\r\n
\r\n
\r\n

Account Name:

\r\n

{customer?.FirstName}

\r\n
\r\n
\r\n

Account Number:

\r\n

{customer?.AccountNumber}

\r\n
\r\n
\r\n
\r\n
\r\n
Shipping Information
\r\n
\r\n
\r\n

Shipping Address:

\r\n

{salesOrder.ShippingAddress?.Name}

\r\n

{salesOrder.ShippingAddress?.FullAddress}

\r\n
\r\n
\r\n

Shipping Method:

\r\n

{deliveryMode}

\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {salesOrder.SalesLines?.map((so, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
LineItem IdDescriptionPriceQuantityTotal
{so.LineNumber}{so.ItemId}{getProductDescription(so.ItemId!)}\r\n {so.Comment ? <>
Notes:\r\n {so.Comment} : null }\r\n
{cultureFormatter.formatCurrency(so.Price!)}{so.Quantity}{cultureFormatter.formatCurrency(so.TotalAmount!)}
\r\n
\r\n

Order Total:

\r\n

{cultureFormatter.formatCurrency(salesOrder.TotalAmount!)}

\r\n\r\n
\r\n
\r\n\r\n );\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHelp, IOrderSummary, IPaymentMethods } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common';\r\nimport { IGroup, IGroupDelivery, IGroups } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-groups';\r\nimport { IOrderInformation } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-order-information';\r\nimport { ISalesLine } from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/../../common/get-sales-line';\r\nimport {\r\n ICheckoutOrderConfirmationViewProps\r\n} from '@msdyn365-commerce-modules/order-management/src/modules/checkout-order-confirmation/./checkout-order-confirmation';\r\nimport { OrderConfirmationDetail } from \"./components/OrderConfirmationDetail\";\r\nimport {\r\n ICheckoutOrderConfirmationProps\r\n} from \"../definition-extensions/checkout-order-confirmation.ext.props.autogenerated\";\r\nimport { ICheckoutOrderConfirmationData } from \"../definition-extensions/checkout-order-confirmation.data\";\r\nimport { SimpleProduct } from \"@msdyn365-commerce/retail-proxy\";\r\n\r\nexport const OrderConfirmationOrderInfomation: React.FC = ({\r\n orderInformationProps\r\n // receiptEmail\r\n // createdDate,\r\n // channelReferenceId\r\n}) => (\r\n \r\n {/* {channelReferenceId} */}\r\n {/* {receiptEmail} */}\r\n \r\n);\r\n\r\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, pickupDateTimeslot, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {address}\r\n {pickupDateTimeslot}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderConfirmationOrderSummary: React.FC = ({ orderSummaryProps, heading, subtotal, shipping, tax, totalAmount, earnedPoints }) => (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n);\r\n\r\nexport const OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\n\r\nconst OrderConfirmationView: React.FC> = ({\r\n moduleProps,\r\n heading,\r\n backToShoppingLink,\r\n alert,\r\n loading,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups,\r\n ...rest\r\n}) => {\r\n const DLV_MODE_KEY = 'dlv-mode'\r\n const [dlvMode, setDlvMode] = React.useState('');\r\n const salesOrder = rest.data.checkout.result?.salesOrder;\r\n const orderedProducts = rest.data.checkout.result?.orderedProducts || []\r\n React.useEffect(() => {\r\n setDlvMode(window.sessionStorage.getItem(DLV_MODE_KEY) || '');\r\n sessionStorage.removeItem(DLV_MODE_KEY);\r\n }, [])\r\n return (\r\n \r\n {/*{heading}*/}\r\n {alert}\r\n {loading}\r\n { salesOrder && }\r\n {/* {orderInfomation && } */}\r\n {backToShoppingLink}\r\n {/*{groups && }*/}\r\n {/*{orderSummary && }*/}\r\n {payment && }\r\n {help && }\r\n \r\n );\r\n};\r\n\r\nexport default OrderConfirmationView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n// import MsDyn365 from \"@msdyn365-commerce/core\";\r\nimport { IInvoicesListViewProps } from '@msdyn365-commerce-modules/invoice/src/modules/invoices-list/./invoices-list';\r\n\r\nexport const InvoiceListView: React.FC = props => {\r\n const { header, filter, content, invoiceRequestModal, pagination } = props;\r\n // if (MsDyn365.isBrowser) {\r\n // const linksElements = document.querySelectorAll('a.msc-invoices-list__container__content__table__row__open-invoice');\r\n // console.log(linksElements);\r\n // linksElements.forEach(l => l.setAttribute('href', '#'));\r\n // }\r\n return (\r\n \r\n {header}\r\n {invoiceRequestModal}\r\n {filter}\r\n {content}\r\n {pagination}\r\n \r\n );\r\n};\r\n\r\nexport default InvoiceListView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { IMediaGalleryThumbnailItemViewProps,\r\n IMediaGalleryThumbnailsViewProps,\r\n IMediaGalleryViewProps\r\n} from '@msdyn365-commerce-modules/media-gallery';\r\nimport { Button, KeyCodes, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\n/**\r\n * Render the thumbnail item images.\r\n * @param thumbnail - The carousel thumbnail line props.\r\n * @returns Return HTML having thumnailcontainer props with image.\r\n */\r\nconst renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\r\n\r\n return (\r\n \r\n {Picture}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Gets the thumbnail item to display media gallery images.\r\n * @param image - The media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param imageId - Image id.\r\n * @param modifiedActiveIndex - Modified Index of the images when selection changes.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render images.\r\n */\r\nconst GetThumbnailItemComponent = (\r\n image: IImageData,\r\n imageSettings: IImageSettings,\r\n imageId: number,\r\n modifiedActiveIndex: number,\r\n props: IMediaGalleryViewProps\r\n): IMediaGalleryThumbnailItemViewProps => {\r\n\r\n /**\r\n * OnClick method of media gallery item.\r\n * */\r\n const onClick = () => {\r\n props.callbackToggle?.();\r\n props.callbackThumbnailClick?.(imageId);\r\n props.state.activeIndex = imageId;\r\n };\r\n\r\n const classes = classnames(\r\n 'ms-media-gallery__thumbnail-item',\r\n modifiedActiveIndex === imageId ? 'ms-media-gallery__thumbnail-item-active' : ''\r\n );\r\n\r\n /**\r\n * Keydown event of media gallery item.\r\n * @param event - React.KeyboardEvent.\r\n * */\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === KeyCodes.Enter) {\r\n event.preventDefault();\r\n onClick();\r\n }\r\n };\r\n\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: classes,\r\n role: 'presentation',\r\n key: imageId\r\n },\r\n Picture: (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Gets the empty thumbnail item to display media gallery images.\r\n * @param imageSettings - Image settings for the image gallery items.\r\n * @param props - The Media gallery view props from business layer.\r\n * @returns Return thumbnail view props which will be used to render empty images.\r\n */\r\nconst GetEmptyThumbnailItemComponent = (imageSettings: IImageSettings, props: IMediaGalleryViewProps): IMediaGalleryThumbnailItemViewProps => {\r\n return {\r\n ThumbnailItemContainerProps: {\r\n tag: 'li' as NodeTag,\r\n className: 'ms-media-gallery__thumbnail-item',\r\n role: 'tab',\r\n tabIndex: 0,\r\n key: 0,\r\n 'aria-label': '',\r\n 'aria-selected': true\r\n },\r\n Picture: (\r\n \r\n )\r\n };\r\n};\r\n\r\n/**\r\n * Update media gallery items method.\r\n * @param items - The media gallery thumbnail item view props.\r\n * @returns The IImageData array.\r\n */\r\nconst getMediaGalleryItems = (items?: IMediaGalleryThumbnailItemViewProps[]): IImageData[] | undefined => {\r\n return items?.map(item => {\r\n return {\r\n altText: item.Picture.props.altText,\r\n src: item.Picture.props.src\r\n };\r\n });\r\n};\r\n\r\nconst defaultThumbnailImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 },\r\n xl: { q: 'w=295&h=295&q=80&m=6&f=jpg', w: 295, h: 295 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n};\r\n\r\n/**\r\n * Render the Media gallery thumbnails to represent images in grid view.\r\n * @param thumbnails - The thumbnail view props.\r\n * @param props - The media gallery view props.\r\n * @returns - The single slide carousel component to render as media gallery image.\r\n */\r\nconst renderThumbnails = (\r\n thumbnails: IMediaGalleryThumbnailsViewProps,\r\n props: IMediaGalleryViewProps\r\n): JSX.Element => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps } = thumbnails;\r\n const { state, Thumbnails } = props;\r\n const mediaGalleryItems = getMediaGalleryItems(Thumbnails.items);\r\n\r\n const items: IMediaGalleryThumbnailItemViewProps[] | undefined =\r\n // eslint-disable-next-line multiline-ternary -- need multiline for easy code reading\r\n state.lastUpdate && mediaGalleryItems && mediaGalleryItems[0].src === 'empty' ? [GetEmptyThumbnailItemComponent(defaultThumbnailImageSettings, props)] :\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery\r\n mediaGalleryItems?.map((item: IImageData, id: number) => GetThumbnailItemComponent(item,\r\n defaultThumbnailImageSettings, id, state.activeIndex, props));\r\n\r\n return (\r\n \r\n \r\n {items?.map(renderThumbnailItem)}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render the Media gallery items using viewprops.\r\n * @param props - The media gallery view props.\r\n * @returns The media gallery module wrapping up images node.\r\n */\r\nconst mediaGalleryView: React.FC = props => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from media-gallery.tsx file\r\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\r\n return (\r\n \r\n \r\n {Modal}\r\n {renderThumbnails(Thumbnails, props)}\r\n \r\n );\r\n};\r\n\r\nexport default mediaGalleryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IGroup, IGroupDelivery, IGroups, IHeader, IList, IOrderHistoryViewProps, IOrderInformation, ISalesOrder } from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({ deliveryProps, heading, count, processing, address, trackingInfo }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.salesLine}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink, expandProductsButton }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, Heading, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IAccountCustomerBalanceTileData } from './account-customer-balance-tile.data';\nimport { IAccountCustomerBalanceTileProps } from './account-customer-balance-tile.props.autogenerated';\nimport { CreditComponent, ErrorComponent } from './components/account-customer-balance-tile-info';\nimport LinksComponent from './components/account-customer-balance-tile-links';\n\nexport interface IAccountCustomerBalanceTileViewProps extends IAccountCustomerBalanceTileProps {\n AccountCustomerBalanceTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n content: React.ReactNode;\n links: React.ReactNode;\n}\n\nexport interface IAccountCustomerBalanceTileViewState {\n isDetailsLinkDisplayed: boolean;\n content: React.ReactNode;\n}\n\n/**\n *\n * AccountCustomerBalanceTile component.\n * @extends {React.Component>}\n */\nclass AccountCustomerBalanceTile extends React.Component<\n IAccountCustomerBalanceTileProps,\n IAccountCustomerBalanceTileViewState\n> {\n @computed get hasError(): boolean {\n return get(this.props, 'data.balance.status') !== 'SUCCESS';\n }\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountCustomerBalanceTileProps) {\n super(props);\n\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = { ...this._initState() };\n\n reaction(\n () => this.hasError,\n () => {\n this.props.context.telemetry.error('Error retrieving customer account balance');\n this.setState({\n content: \n });\n }\n );\n }\n\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerResult = get(this.props, 'data.customerInformation.result');\n\n const allowOnAccountPayment = customerResult ? customerResult.AllowOnAccountPayment : false;\n const isB2BSite = isChannelTypeB2B(this.props.context.request);\n const enableCustomerAccountPayment = get(this.props, 'context.request.app.platform.enableCustomerAccountPayment');\n\n return (\n allowOnAccountPayment &&\n (enableCustomerAccountPayment === 'all' ||\n (enableCustomerAccountPayment === 'b2b' && isB2BSite) ||\n (enableCustomerAccountPayment === 'b2c' && !isB2BSite))\n );\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountCustomerBalanceTileProps,\n nextState: IAccountCustomerBalanceTileViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n if (!this.isCustomerAccountPaymentEnabled) {\n return <>;\n }\n\n const { className, heading, links } = this.props.config;\n const viewProps = {\n ...this.props,\n AccountCustomerBalanceTile: {\n moduleProps: this.props,\n className: classnames('ms-account-customer-balance-tile', className)\n },\n heading: heading && (\n \n ),\n content: this.state.content,\n links: this.state.isDetailsLinkDisplayed && (\n (event: Msdyn365.ContentEditableEvent) => void 0,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n }}\n />\n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initState(): IAccountCustomerBalanceTileViewState {\n const account: CustomerBalances = get(this.props, 'data.balance.result');\n\n let content: React.ReactNode;\n let isDetailsLinkDisplayed = false;\n\n if (this.hasError) {\n this.props.telemetry.error('Error retrieving customer account balance');\n content = ;\n } else if (\n account.Balance === 0 &&\n account.CreditLimit === 0 &&\n account.InvoiceAccountBalance === 0 &&\n account.InvoiceAccountCreditLimit === 0\n ) {\n // Non-established credit\n content = ;\n } else {\n // Successfully retrieved balance\n const { accountCreditVerbagePrefix, accountCreditVerbagePostfix } = this.props.resources;\n const currencyCode = get(this.props, 'context.request.channel.Currency');\n const formatCurrency = get(this.props, 'context.cultureFormatter.formatCurrency');\n let customerCredit = 0;\n\n if (account.InvoiceAccountCreditLimit === 0) {\n customerCredit = account.CreditLimit - account.Balance;\n } else {\n customerCredit = account.InvoiceAccountCreditLimit - account.InvoiceAccountBalance;\n }\n\n const customerCreditFormatted = `${formatCurrency(customerCredit.toFixed(2), currencyCode)}`;\n\n isDetailsLinkDisplayed = true;\n content = (\n \n );\n }\n\n return { content, isDetailsLinkDisplayed };\n }\n}\n\nexport default AccountCustomerBalanceTile;\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 { IAccountCustomerBalanceTileViewProps } from './account-customer-balance-tile';\n\nconst AccountCustomerBalanceTileView: React.FC = props => {\n const { AccountCustomerBalanceTile, heading, content, links } = props;\n\n return (\n \n {heading}\n {content}\n {links}\n \n );\n};\n\nexport default AccountCustomerBalanceTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountCustomerBalanceTileInfo {\n label?: string;\n value?: string;\n verbagePrefix?: string;\n verbagePostfix?: string;\n className?: string;\n error?: string;\n}\n\nexport const ErrorComponent: React.FC = ({ error }) => (\n {error}\n);\n\nexport const CreditComponent: React.FC = ({ verbagePrefix, verbagePostfix, value, className }) => {\n return (\n
\n {verbagePrefix}\n {value}\n {verbagePostfix}\n
\n );\n};\n\nexport const InfoComponent: React.FC = ({ label, value, className }) => (\n
\n {label}\n {value}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountCustomerBalanceTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountCustomerBalanceTileLinks: React.FC = ({\n links,\n telemetryContent,\n onTextChange,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-customer-balance-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountCustomerBalanceTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\n\nexport const SignUpText: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { SignUpText } from './components/loyalty-sign-up-small-components';\nimport { ILoyaltySignUpData } from './loyalty-sign-up.data';\nimport { ILoyaltySignUpProps } from './loyalty-sign-up.props.autogenerated';\n\nexport interface IAccountLoyaltyJoinState {\n clicked: boolean;\n}\nexport interface ILoyaltySignUpViewProps extends ILoyaltySignUpProps {\n LoyaltySignUp: IModuleProps;\n heading: React.ReactNode;\n memberHeading: React.ReactNode;\n signInLink: React.ReactElement;\n signUpText: React.ReactElement;\n signUpButton: React.ReactElement;\n detailsLink: React.ReactElement;\n termsLink: React.ReactElement;\n loading: boolean;\n infoMessageBar?: React.ReactNode;\n}\n\n/**\n *\n * LoyaltySignUp component.\n * @extends {React.Component>}\n */\n@observer\nclass LoyaltySignUp extends React.Component, IAccountLoyaltyJoinState> {\n private readonly telemetryContent?: ITelemetryContent;\n private readonly loyaltySignInAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltySignUpAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyDetailsLinkAttributes: Msdyn365.IDictionary | undefined;\n private readonly loyaltyTermsLinkAttributes: Msdyn365.IDictionary | undefined;\n\n constructor(props: ILoyaltySignUpProps) {\n super(props);\n this.state = { clicked: false };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n this.loyaltySignInAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SignUp;\n this.loyaltySignUpAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyDetailLink;\n this.loyaltyDetailsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsLink;\n this.loyaltyTermsLinkAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltySignUpProps, nextState: IAccountLoyaltyJoinState): 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, memberHeading },\n resources,\n context: {\n actionContext,\n request: {\n user: { signInUrl, isAuthenticated }\n }\n },\n data\n } = this.props;\n\n const termsUrl = Msdyn365.getUrlSync('loyaltyTerms', actionContext);\n let loyaltyJoinUrl = `${Msdyn365.getUrlSync('loyaltyJoin', actionContext)}?joiningLoyalty=true`;\n if (MsDyn365.isBrowser) {\n loyaltyJoinUrl = `${window.location.origin}${loyaltyJoinUrl}`;\n }\n const signInurl = `${signInUrl}?ru=${loyaltyJoinUrl}`;\n const completeClass = classname('ms-loyalty-signup', className);\n const loyaltyCard = data.loyaltyCard;\n const hasLoyaltyAccount = loyaltyCard.result && loyaltyCard.result.CardTenderTypeValue !== undefined;\n const customerInformation = data.customerInformation?.result;\n\n const invalidAsyncCustomerState: boolean =\n (this.props.context.app?.config?.canRenderAsyncCustomerDataAsUnmodifiable || false) &&\n (customerInformation?.IsAsyncCustomer || false);\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltySignUp: {\n moduleProps: this.props,\n className: completeClass\n },\n infoMessageBar: invalidAsyncCustomerState && (\n \n ),\n loading: !this.props.context.request.params.isEditor && loyaltyCard?.status === 'LOADING',\n heading: !hasLoyaltyAccount && heading && heading.text && (\n \n ),\n memberHeading: hasLoyaltyAccount && memberHeading && memberHeading.text && (\n \n ),\n signInLink: !isAuthenticated && (\n \n ),\n signUpText: !hasLoyaltyAccount && ,\n signUpButton: !hasLoyaltyAccount && isAuthenticated && (\n \n {this.props.resources.joinLoyaltyButtonText}\n \n ),\n detailsLink: hasLoyaltyAccount && (\n \n {this.props.resources.viewLoyaltyPageText}\n \n ),\n termsLink: !hasLoyaltyAccount && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public handleMemberHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.memberHeading!.text = event.target.value);\n\n private readonly _issueLoyalty = () => {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(() => {\n if (MsDyn365.isBrowser) {\n window.location.assign(Msdyn365.getUrlSync('loyalty', this.props.context.actionContext) || '');\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n };\n}\n\nexport default LoyaltySignUp;\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 { ILoyaltySignUpViewProps } from './loyalty-sign-up';\n\nconst LoyaltySignUpView: React.FC = props => {\n const {\n LoyaltySignUp,\n heading,\n memberHeading,\n signInLink,\n signUpText,\n signUpButton,\n detailsLink,\n termsLink,\n loading,\n infoMessageBar\n } = props;\n\n if (loading) {\n props.context.telemetry.error('LoyaltySignUp data is empty, module wont render');\n return null;\n }\n\n return (\n \n {infoMessageBar}\n {memberHeading}\n {heading}\n {detailsLink}\n {signUpText}\n {termsLink}\n {signUpButton}\n {signInLink}\n \n );\n};\n\nexport default LoyaltySignUpView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ILoyaltyTermsModalProps {\n resources: ILoyaltyTermsModalResources;\n returnRef: React.RefObject | undefined;\n checked: boolean;\n isOpen: boolean;\n terms: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n onToggle(): void;\n onSubmit(): void;\n onCheck(): void;\n}\n\nexport interface ILoyaltyTermsModalResources {\n loyaltyTermsHeading: string;\n loyaltyAgreeToTerms: string;\n joinLoyaltyTermsText: string;\n cancelLoyaltyTermsText: string;\n}\n\nexport interface ILoyaltyTermsModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n heading: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n terms: React.ReactNode;\n checkbox: React.ReactElement;\n agreeText: React.ReactElement;\n agreeSection: INodeProps;\n}\n\nexport const LoyaltyTermsModal = (props: ILoyaltyTermsModalProps): ILoyaltyTermsModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.LoyaltyTermsCancel);\n const loyaltyTermCancelAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsSubmit;\n const loyaltyTermSubmitAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.LoyaltyTermsAgree;\n const loyaltyTermCheckboxAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: 'ms-loyalty-terms__modal',\n toggle: props.onToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, className: 'ms-loyalty-terms__modal-header', toggle: props.onToggle },\n modalFooter: { tag: ModalFooter, className: 'ms-loyalty-terms__modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-loyalty-terms__modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.joinLoyaltyTermsText}\n \n ),\n heading:

{props.resources.loyaltyTermsHeading}

,\n terms: props.terms,\n agreeSection: { className: 'ms-loyalty-terms__agree-section' },\n checkbox: (\n \n ),\n agreeText:

{props.resources.loyaltyAgreeToTerms}

\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 { getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { GetLoyaltyCardInput, issueLoyalty, IssueLoyaltyInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { ILoyaltyTermsModalViewProps, LoyaltyTermsModal } from './components/loyalty-terms-modal';\nimport { ILoyaltyTermsData } from './loyalty-terms.data';\nimport { ILoyaltyTermsProps } from './loyalty-terms.props.autogenerated';\n\nexport interface ILoyaltyTermsState {\n checked: boolean;\n clicked: boolean;\n isModalOpen: boolean;\n}\nexport interface ILoyaltyTermsViewProps extends ILoyaltyTermsProps {\n LoyaltyTerms: IModuleProps;\n modalToggle: React.ReactElement;\n modal: ILoyaltyTermsModalViewProps;\n loading: boolean;\n}\n\n/**\n *\n * LoyaltyTerms component.\n * @extends {React.Component>}\n */\nclass LoyaltyTerms extends React.Component, ILoyaltyTermsState> {\n private readonly toggleRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: ILoyaltyTermsProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this._submit = this._submit.bind(this);\n this._checkboxChecked = this._checkboxChecked.bind(this);\n this.toggleRef = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n let search = this.props.context.request.url.requestUrl.search;\n let isJoining = false;\n if (search) {\n search = search.substring(1);\n const qsps = search.split('&');\n for (const qsp of qsps) {\n const splitQsp = qsp.split('=');\n isJoining = splitQsp[0] === 'joiningLoyalty' && splitQsp[1] === 'true';\n if (isJoining) {\n break;\n }\n }\n }\n\n this.state = {\n isModalOpen: isJoining,\n checked: false,\n clicked: false\n };\n }\n\n public shouldComponentUpdate(nextProps: ILoyaltyTermsProps, nextState: ILoyaltyTermsState): 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, hideToggle },\n resources,\n slots: { serviceTerms },\n data: { loyaltyCard },\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const completeClass = classname('ms-loyalty-terms', className);\n\n const viewProps = {\n ...this.props,\n className: completeClass,\n LoyaltyTerms: {\n moduleProps: this.props,\n className: completeClass\n },\n loading: loyaltyCard.status === 'LOADING',\n modalToggle: hideToggle !== true && (\n \n ),\n modal:\n isAuthenticated &&\n loyaltyCard.result &&\n loyaltyCard.result.CardNumber === undefined &&\n LoyaltyTermsModal({\n resources: { ...resources },\n returnRef: this.toggleRef,\n checked: this.state.checked,\n isOpen: this.state.isModalOpen,\n terms: serviceTerms,\n telemetryContent: this.telemetryContent,\n onToggle: this._toggle,\n onSubmit: this._submit,\n onCheck: this._checkboxChecked\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _toggle(): void {\n this.setState({ isModalOpen: !this.state.isModalOpen, checked: false });\n }\n\n private _submit(): void {\n if (this.props.context.request.user.isAuthenticated && !this.state.clicked) {\n this.setState({ clicked: true });\n const input = new IssueLoyaltyInput(this.props.context.request.apiSettings);\n\n issueLoyalty(input, this.props.context.actionContext)\n .then(card => {\n if (this.props.config.redirectToLoyalty) {\n window.location.assign(getUrlSync('loyalty', this.props.context.actionContext) || '');\n } else {\n getLoyaltyCardAsync({ callerContext: this.props.context.actionContext }, card.CardNumber || '')\n .then(fullCard => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n fullCard\n );\n })\n .catch((error: Error) => {\n this.props.context.actionContext.update(\n new GetLoyaltyCardInput(this.props.context.request.apiSettings),\n card\n );\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to fetch loyalty card');\n });\n }\n })\n .catch((error: Error) => {\n this.setState({ clicked: false });\n this.props.telemetry.error(error.message);\n this.props.telemetry.debug('Unable to issue loyalty card');\n });\n }\n }\n\n private _checkboxChecked(): void {\n this.setState({ checked: !this.state.checked });\n }\n}\n\nexport default LoyaltyTerms;\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 { ILoyaltyTermsViewProps } from './loyalty-terms';\n\nconst LoyaltyTermsView: React.FC = props => {\n const { LoyaltyTerms, modalToggle, modal, loading } = props;\n\n return !loading && modal ? (\n \n {modalToggle}\n \n {modal.heading}\n \n {modal.terms}\n \n {modal.checkbox}\n {modal.agreeText}\n \n \n \n {modal.submitButton}\n {modal.cancelButton}\n \n \n \n ) : null;\n};\n\nexport default LoyaltyTermsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input.\n */\nexport class CheckoutStateInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CheckoutState', this.apiSettings);\n\n public getCacheObjectType = () => 'CheckoutState';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action.\n * @param input\n * @param ctx\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action.\n */\nexport const checkoutStateActionDataAction = createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n\nexport default checkoutStateActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, Note, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n @observable private _customerReference: string = '';\n @observable private _customerRequisition: string = '';\n @observable private _note: Note = {};\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @computed public get customerReference(): Readonly | string {\n return this._customerReference;\n }\n\n @computed public get customerRequisition(): Readonly | string {\n return this._customerRequisition;\n }\n\n @computed public get note(): Readonly | Note[] {\n return this._note;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(\n newGuestCheckoutEmail: string,\n customerReference: string,\n customerRequisition: string,\n note: Note\n ): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n this._customerReference = customerReference;\n this._customerRequisition = customerRequisition;\n this._note = note;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * EnabledPaymentsForOBO enum.\n */\n export enum EnabledPaymentsForOBO {\n OnCustomerAccount = 1,\n ExpressPayment = 0,\n Loyalty = 0,\n GiftCard = 0,\n PaymentInstrument = 0,\n ApplePay = 0\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport {\n CheckoutModule,\n ErrorCode,\n ErrorLocation,\n ErrorMessageResource,\n getCheckoutState,\n ICheckoutError,\n ICheckoutState\n} from '@msdyn365-commerce/global-state/';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- create global class\nexport class CheckoutErrors {\n public static readonly ActionError: ICheckoutError = {\n errorCode: ErrorCode.ActionError,\n errorMessageResource: ErrorMessageResource.checkoutTimeoutErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n errorMessageResource: ErrorMessageResource.blockedLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n errorMessageResource: ErrorMessageResource.customerAccountLimitSignDifferentFromAmountDueErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsAvailableCreditLimitErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_FraudRisk: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n errorMessageResource: ErrorMessageResource.fraudRiskErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n errorMessageResource: ErrorMessageResource.giftCardBalanceInquiryFailedErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n errorMessageResource: ErrorMessageResource.giftCardCurrencyMismatchErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n errorMessageResource: ErrorMessageResource.invalidCartVersionErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n errorMessageResource: ErrorMessageResource.invalidLoyaltyCardNumberErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n errorMessageResource: ErrorMessageResource.missingRequiredCartTenderLinesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n errorMessageResource: ErrorMessageResource.multipleCustomerAccountPaymentsNotAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n errorMessageResource: ErrorMessageResource.noMoreThanOneLoyaltyTenderErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n errorMessageResource: ErrorMessageResource.noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n errorMessageResource: ErrorMessageResource.noTenderLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n errorMessageResource: ErrorMessageResource.notEnoughRewardPointsErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n errorMessageResource: ErrorMessageResource.paymentAlreadyVoidedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n errorMessageResource: ErrorMessageResource.paymentAmountExceedsGiftBalanceErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n errorMessageResource: ErrorMessageResource.paymentUsingUnauthorizedAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n errorMessageResource: ErrorMessageResource.refundAmountMoreThanAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n errorMessageResource: ErrorMessageResource.unableToCancelPaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n errorMessageResource: ErrorMessageResource.unableToReadCardTokenInfoErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n errorMessageResource: ErrorMessageResource.unableToRetrieveCardPaymentAcceptResultErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly checkoutErrorsList: ICheckoutError[] = [\n CheckoutErrors.ActionError,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult\n ];\n}\n\nexport async function setCheckoutErrors(\n errorCode: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resources: any,\n isExpressCheckoutApplied: boolean,\n ctx: IActionContext,\n apiError?: string | undefined\n): Promise {\n let clientCheckoutError: ICheckoutError | undefined;\n const consoleCheckoutErrors: ICheckoutError[] = [];\n\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n // find the checkout errors\n for (const checkoutError of CheckoutErrors.checkoutErrorsList) {\n if (errorCode === checkoutError.errorCode) {\n if (checkoutError.errorLocation === ErrorLocation.Console) {\n const consoleCheckoutError: ICheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n consoleCheckoutErrors.push(consoleCheckoutError);\n } else {\n if (clientCheckoutError) {\n ctx.telemetry.exception(new Error('Invalid number of client checkout errors.'));\n throw new Error('Invalid number of client checkout errors.');\n } else {\n clientCheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n }\n }\n }\n }\n\n // log the console checkout errors\n for (const consoleCheckoutError of consoleCheckoutErrors) {\n consoleCheckoutError.errorMessage = getCheckoutErrorMessage(resources, consoleCheckoutError.errorMessageResource!, apiError!);\n console.log(consoleCheckoutError.errorMessage);\n }\n\n // handle the client checkout error\n if (clientCheckoutError) {\n clientCheckoutError.errorMessage = getCheckoutErrorMessage(resources, clientCheckoutError.errorMessageResource!, apiError!);\n\n if (isExpressCheckoutApplied && clientCheckoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument) {\n clientCheckoutError.errorLocation = ErrorLocation.Checkout;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: clientCheckoutError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n } else {\n // if could not map to any checkout error(s), show the API error message over generic error\n if (consoleCheckoutErrors.length === 0) {\n const genericError = {\n errorLocation: ErrorLocation.Checkout\n };\n if (apiError) {\n genericError['errorMessage'] = apiError;\n } else {\n genericError['errorMessage'] = resources.genericErrorMessage;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: genericError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n }\n }\n}\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: false });\n}\n\nexport async function setCheckoutErrorFocus(checkoutModuleId: string, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n for (const checkoutModule of Object.keys(CheckoutModule)) {\n if (checkoutModuleId.includes(CheckoutModule[checkoutModule])) {\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule[checkoutModule] });\n return;\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCheckoutErrorMessage(resources: any, errorMessageResource: ErrorMessageResource, errorMessageFromAPI: string): string {\n const errorResource = Object.keys(resources).find(resource => resource === errorMessageResource);\n // return API error when error resource string is not found in checkout definition file\n return errorResource !== undefined ? resources[errorResource] : errorMessageFromAPI;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n

\n

{title}

\n

{message}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { Alert, Button, INodeProps, NodeTag, getLocaleBasedCustomizedPrice, ILocalizedPrice } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentResources } from '../checkout-customer-account-payment.props.autogenerated';\n\nexport interface IGetAccountPaymentEditViewFormInput {\n resources: ICheckoutCustomerAccountPaymentResources;\n customizedAmt: string;\n amount: number;\n amountVariable: string;\n maxAmount: number;\n customer: Customer | undefined;\n customerCreatedDate: string;\n availableCredit: string;\n showCreditLimit: boolean;\n errorMessage: string | undefined;\n creditSectionIsExpanded: boolean;\n orderTotal: string;\n excessCredit: string | undefined;\n appliedAmount: string | undefined;\n locale: string;\n onAddPayment(): Promise;\n onChangePaymentAmount(customizedAmt: string, paymentAmount: number, amountVariable: string): void;\n onToggleCreditSection(): void;\n onRemovePayment(): Promise;\n skipOnChangeLogic?: boolean;\n}\n\nexport interface IAccountPaymentEditViewForm {\n formProps: INodeProps;\n inputLabel: React.ReactNode;\n inputAmount: React.ReactNode;\n addPaymentButton: React.ReactNode;\n customerName: React.ReactNode;\n customerAccountNumber: React.ReactNode;\n customerSince: React.ReactNode;\n accountCredit: React.ReactNode;\n alert: React.ReactNode;\n accountDetails: React.ReactNode;\n appliedLine: React.ReactNode;\n bottomBorder: React.ReactNode;\n}\n\n/**\n * On Add Account Payment Function.\n * @param onAddPayment -On Add Payment Function.\n * @returns Call of Add payment function.\n */\nconst onAddAccountPayment = (onAddPayment: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onAddPayment();\n};\n\n/**\n * On Change Amount Function.\n * @param onChangePaymentAmount -On Change Payment Amount Function.\n * @returns Call of Change payment Amount function.\n */\nconst onChangeAmountHandler = (\n customizedAmt: string,\n paymentAmount: number,\n amountVariable: string,\n locale: string,\n onChangePaymentAmount: (customizedAmt: string, paymentAmount: number, amountVariable: string) => void\n) => (event: React.ChangeEvent) => {\n const value = event.target.value;\n const customState: ILocalizedPrice = {\n customizedAmount: customizedAmt,\n amountVariable: amountVariable,\n paymentAmount: paymentAmount\n };\n const returnModifiedState = getLocaleBasedCustomizedPrice(value, customState, locale, keyCode);\n customizedAmt = returnModifiedState.customizedAmount as string;\n paymentAmount = returnModifiedState.paymentAmount as number;\n amountVariable = returnModifiedState.amountVariable as string;\n onChangePaymentAmount(customizedAmt, paymentAmount, amountVariable);\n keyCode = 0;\n};\n\nlet keyCode: number = 0;\nexport const getAccountPaymentFormEditMode = (options: IGetAccountPaymentEditViewFormInput): IAccountPaymentEditViewForm => {\n const {\n resources,\n onAddPayment,\n amount,\n customizedAmt,\n amountVariable,\n onChangePaymentAmount,\n maxAmount,\n customer,\n customerCreatedDate,\n availableCredit,\n showCreditLimit,\n errorMessage,\n onToggleCreditSection,\n creditSectionIsExpanded,\n orderTotal,\n excessCredit,\n onRemovePayment,\n appliedAmount,\n locale,\n skipOnChangeLogic\n } = options;\n\n const {\n addPaymentButtonLabel,\n inputAmountLabel,\n inputAmountAriaLabel,\n customerSinceLabel,\n accountCreditLabel,\n creditDetailsSectionLabel,\n orderTotalLabel,\n availableCreditLabel,\n creditExcessLabel,\n appliedCustomerAccountPaymentLabel,\n removeCustomerAccountPaymentLabel,\n accountCreditDetails\n } = resources;\n\n const inputLabel = (\n \n {inputAmountLabel}\n \n );\n\n const formProps = {\n className: 'ms-checkout-customer-account__form-edit',\n onSubmit: onAddAccountPayment(onAddPayment),\n tag: 'form' as NodeTag\n };\n\n const addPaymentButton = (\n maxAmount || amount < 0 || Number.isNaN(amount)}\n >\n {addPaymentButtonLabel}\n \n );\n\n const inputAmount = (\n onChangePaymentAmount(value, Number(value), value)\n : onChangeAmountHandler(customizedAmt, amount, amountVariable, locale, onChangePaymentAmount)\n }\n onKeyDown={event => (keyCode = event.which)}\n aria-label={inputAmountAriaLabel}\n aria-valuemin={0}\n aria-valuemax={maxAmount}\n aria-valuenow={amount}\n min={0}\n max={maxAmount}\n />\n );\n\n const customerName =
{customer?.Name}
;\n\n const customerAccountNumber =
#{customer?.AccountNumber}
;\n\n const customerSince = (\n
\n {customerSinceLabel}\n {customerCreatedDate}\n
\n );\n\n const accountCredit = (\n <>\n {accountCreditLabel}\n {showCreditLimit && {availableCredit}}\n \n \n );\n\n const accountDetails = creditSectionIsExpanded ? (\n
\n <>\n
\n \n \n {creditDetailsSectionLabel}\n \n
\n \n
\n {availableCreditLabel}\n {availableCredit}\n
\n
\n {orderTotalLabel}\n {orderTotal}\n
\n
\n {creditExcessLabel}\n {excessCredit ?? '0'}\n
\n
\n ) : (\n undefined\n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const appliedLine = appliedAmount ? (\n
\n {appliedCustomerAccountPaymentLabel}\n {appliedAmount}\n \n {removeCustomerAccountPaymentLabel}\n \n
\n ) : (\n undefined\n );\n\n const bottomBorder =
;\n\n return {\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentResources } from '../checkout-customer-account-payment.props.autogenerated';\n\nexport interface IGetAccountPaymentSummaryViewFormInput {\n resources: ICheckoutCustomerAccountPaymentResources;\n amount: number;\n appliedAmount: string | undefined;\n}\n\nexport interface IAccountPaymentSummaryViewForm {\n formProps: INodeProps;\n label: React.ReactNode;\n paymentAmount: React.ReactNode;\n addPaymentButton: React.ReactNode;\n appliedLine: React.ReactNode;\n bottomBorder: React.ReactNode;\n alert?: React.ReactNode;\n paymentAmountInput?: React.ReactNode;\n}\n\nexport const getAccountPaymentFormSummaryMode = (options: IGetAccountPaymentSummaryViewFormInput): IAccountPaymentSummaryViewForm => {\n const { resources, amount, appliedAmount } = options;\n\n const { addPaymentButtonLabel, inputAmountSummaryLabel, appliedCustomerAccountPaymentLabel, inputAmountAriaLabel } = resources;\n\n const label = (\n \n );\n\n const formProps = {\n className: 'ms-checkout-customer-account__form-summary',\n tag: 'form' as NodeTag\n };\n\n const paymentAmount = ;\n\n const paymentAmountInput = (\n \n );\n\n const addPaymentButton = (\n \n );\n\n const appliedLine = appliedAmount ? (\n
\n {appliedCustomerAccountPaymentLabel}\n {appliedAmount}\n
\n ) : (\n undefined\n );\n\n const bottomBorder =
;\n\n return {\n formProps,\n label,\n paymentAmount,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateManager, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentData } from './checkout-customer-account-payment.data';\nimport { ICheckoutCustomerAccountPaymentProps } from './checkout-customer-account-payment.props.autogenerated';\nimport { getAccountPaymentFormEditMode, IAccountPaymentEditViewForm } from './components/get-account-payment-form-edit-mode';\nimport { getAccountPaymentFormSummaryMode, IAccountPaymentSummaryViewForm } from './components/get-account-payment-form-summary-mode';\nimport { ErrorComponent } from '../../common/error';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutCustomerAccountPaymentViewProps\n extends ICheckoutCustomerAccountPaymentProps {\n checkoutCustomerAccount: IModuleProps;\n summaryView: IAccountPaymentSummaryViewForm;\n editView: IAccountPaymentEditViewForm;\n moduleState: IModuleStateManager;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\nexport interface ICheckoutCustomerAccountPaymentState {\n paymentAmount: number;\n isCreditSectionExpanded: boolean;\n customizedAmt: string;\n amountVariable: string;\n errorMessage?: string;\n handleSaveAndContinue?: boolean;\n}\n\n/**\n *\n * CheckoutCustomerAccount component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nexport class CheckoutCustomerAccountPayment extends React.Component<\n ICheckoutCustomerAccountPaymentViewProps,\n ICheckoutCustomerAccountPaymentState\n> {\n private readonly defaultLocale: string = 'en-us';\n @computed get isCustomerAccountPaymentEnabled(): boolean {\n const customerInfo = get(this.props, 'data.customerInformation.result');\n const request = get(this.props, 'context.request');\n const b2bChannel = isChannelTypeB2B(request);\n const platform = get(this.props, 'context.request.app.platform');\n\n return (\n customerInfo &&\n customerInfo.AllowOnAccountPayment === true &&\n platform &&\n (platform.enableCustomerAccountPayment === 'all' ||\n (platform.enableCustomerAccountPayment === 'b2b' && b2bChannel) ||\n (platform.enableCustomerAccountPayment === 'b2c' && !b2bChannel))\n );\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get maxPaymentAmount(): number {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return 0;\n }\n\n // Use customer account after loyalty.\n const amountDue = Math.max(0, (cart.TotalAmount || 0) - this.getLoyaltyAmount);\n\n // If the user has a mandatory credit limit, then the max amount must not be more than that\n if (this.props.data.customerInformation?.result?.MandatoryCreditLimit) {\n return Math.min(this.getAvailableCredit(this.props.data.creditBalances?.result), amountDue);\n }\n return amountDue;\n }\n\n @computed get errorMessage(): string | undefined {\n if (this.state.paymentAmount > this.maxPaymentAmount) {\n return this.props.resources.invalidAmountExceedAmountDueMessage;\n }\n\n if (this.state.paymentAmount < 0) {\n return this.props.resources.invalidAmountNegativeMessage;\n }\n\n return undefined;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\n }\n\n @computed get availableCredit(): number {\n const creditBalances = get(this.props, 'data.creditBalances.result');\n\n return creditBalances ? this.getAvailableCredit(creditBalances) : 0;\n }\n\n @computed get orderTotal(): number {\n const orderTotal = get(this.props, 'data.checkout.result.checkoutCart.cart.TotalAmount');\n\n return orderTotal ? orderTotal : 0;\n }\n\n @computed get formattedExcessCredit(): string | undefined {\n const excessCredit = this.availableCredit - this.orderTotal;\n return excessCredit < 0 ? this.props.context.cultureFormatter.formatCurrency(excessCredit, this.currencyCode) : undefined;\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n private readonly baseClassName: string = 'ms-checkout-customer-account';\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutCustomerAccountPaymentViewProps) {\n super(props);\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\n this.state = {\n paymentAmount: this.maxPaymentAmount,\n isCreditSectionExpanded: false,\n customizedAmt: new Intl.NumberFormat(locale).format(this.maxPaymentAmount),\n amountVariable: this.maxPaymentAmount.toString(),\n handleSaveAndContinue: false\n };\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n // When the cart.TotalAmount gets updated (like if selecting the delivery option adds a charge) we need to update the amount based on the new total amount.\n reaction(\n () =>\n this.props.data.checkout.result &&\n this.props.data.checkout.result.checkoutCart.cart &&\n this.props.data.checkout.result.checkoutCart.cart.TotalAmount,\n totalAmount => {\n this.updateMaxAmount(this.maxPaymentAmount);\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutCustomerAccountPayment &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutCustomerAccountPayment) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutCustomerAccountPaymentProps,\n nextState: ICheckoutCustomerAccountPaymentState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const customerInfo = this.props.data.customerInformation?.result;\n\n if (!this.isCustomerAccountPaymentEnabled) {\n this.props.context.telemetry.information(\n 'customer account payments will not display, because the feature is disabled or not enabled for this type of customer'\n );\n return null;\n }\n\n const checkoutState = this.props.data.checkout.result;\n const cart = checkoutState ? checkoutState.checkoutCart.cart : undefined;\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n const creditBalances = this.props.data.creditBalances.result;\n\n if (!cart || hasInvoiceLine) {\n return null;\n }\n const resources = this.props.resources;\n const locale = get(this.props, 'context.request.locale') || this.defaultLocale;\n\n const customerSinceDate = new Date(customerInfo?.CreatedDateTime || 0).toLocaleDateString(locale);\n\n const hasError = this.props.moduleState.hasError;\n const errorMessage = this.state.errorMessage;\n\n const props = {\n ...this.props,\n checkoutErrorRef: this.checkoutErrorRef,\n checkoutCustomerAccount: {\n moduleProps: this.props,\n className: classnames(this.baseClassName)\n },\n alert: hasError && errorMessage && (\n \n ),\n editView: getAccountPaymentFormEditMode({\n onAddPayment: this.addPayment,\n resources,\n customizedAmt: this.state.customizedAmt,\n amountVariable: this.state.amountVariable,\n amount: this.state.paymentAmount,\n onChangePaymentAmount: this.onChangePaymentAmount,\n maxAmount: this.maxPaymentAmount,\n customer: customerInfo,\n customerCreatedDate: customerSinceDate,\n availableCredit: this.props.context.cultureFormatter.formatCurrency(\n this.getAvailableCredit(creditBalances),\n this.currencyCode\n ),\n showCreditLimit: customerInfo?.MandatoryCreditLimit || false,\n errorMessage: this.errorMessage,\n onToggleCreditSection: this.toggleCreditSection,\n creditSectionIsExpanded: this.state.isCreditSectionExpanded,\n orderTotal: this.props.context.cultureFormatter.formatCurrency(this.orderTotal, this.currencyCode),\n excessCredit: this.formattedExcessCredit,\n onRemovePayment: this.removePayment,\n appliedAmount:\n checkoutState && checkoutState.customerAccountAmount > 0\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\n : undefined,\n locale:\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : this.defaultLocale,\n skipOnChangeLogic: this.props.context.request.features?.skipCheckoutOnChangeLogic\n }),\n summaryView: getAccountPaymentFormSummaryMode({\n resources,\n amount: this.state.paymentAmount,\n appliedAmount:\n checkoutState && checkoutState.customerAccountAmount > 0\n ? this.props.context.cultureFormatter.formatCurrency(checkoutState.customerAccountAmount, this.currencyCode)\n : undefined\n })\n };\n\n return this.props.renderView(props) as React.ReactElement;\n }\n\n private readonly getAvailableCredit = (creditBalances: CustomerBalances | undefined) => {\n let availableCredit = 0;\n\n if (!creditBalances) {\n return 0;\n }\n\n if (creditBalances.InvoiceAccountCreditLimit === 0) {\n availableCredit = creditBalances.CreditLimit - creditBalances.Balance - creditBalances.PendingBalance;\n } else {\n availableCredit =\n creditBalances.InvoiceAccountCreditLimit -\n creditBalances.InvoiceAccountBalance -\n creditBalances.InvoiceAccountPendingBalance;\n }\n\n return availableCredit;\n };\n\n private readonly addPayment = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n this.props.context.telemetry.error('checkout state not found');\n return;\n }\n\n this.setState({ handleSaveAndContinue: true });\n this._clearError();\n await checkoutState.updateCustomerAccountAmount({ newAmount: this.state.paymentAmount });\n this.props.context.telemetry.information('customer account payment amount updated');\n };\n\n private readonly toggleCreditSection = (): void => {\n this.setState({\n isCreditSectionExpanded: !this.state.isCreditSectionExpanded\n });\n };\n\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onCancel: this.handleCancelOrSubmit,\n onSubmit: this.handleCancelOrSubmit,\n onEdit: this.onEdit\n });\n\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount !== 0) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onChangePaymentAmount = (customizedAmt: string, paymentAmount: number, amountVariable: string): void => {\n this.setState({\n customizedAmt: customizedAmt,\n paymentAmount: paymentAmount,\n amountVariable: amountVariable\n });\n };\n\n private readonly updateMaxAmount = (newAmount: number): void => {\n // If the user has already set an amount, we should not override that in the UI because it will be confusing.\n if (this.props.data.checkout.result && this.props.data.checkout.result.customerAccountAmount === 0) {\n this.setState({\n // We should never allow a negative amount.\n paymentAmount: Math.max(0, newAmount),\n customizedAmt: Math.max(0, newAmount).toString()\n });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section customer account payment onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly handleCancelOrSubmit = () => {\n const checkoutState = this.props.data.checkout.result;\n if (checkoutState && checkoutState.customerAccountAmount > 0) {\n this.setState({ handleSaveAndContinue: false });\n this.props.telemetry.information('Payment section customer account payment onSubmit is called.');\n\n if (\n Msdyn365.isOboRequest(this.props.context.request) &&\n checkoutState?.customerAccountAmount !== checkoutState?.checkoutCart.cart.TotalAmount\n ) {\n this._setErrorMessage(this.props.resources.invalidAmountForOBOMessage);\n } else {\n this.props.moduleState.onReady();\n }\n } else if (\n checkoutState?.customerAccountAmount === 0 &&\n !this.state.handleSaveAndContinue &&\n this.props.config.isCheckoutCustomerAccountPaymentRequired\n ) {\n this._setErrorMessage(this.props.resources.customerAccountCreditErrorMessage);\n } else {\n this.props.telemetry.information('Payment section customer account payment onCancel is called.');\n\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly removePayment = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n if (!checkoutState) {\n this.props.context.telemetry.error('checkout state not found');\n return;\n }\n\n this.setState({\n paymentAmount: 0\n });\n\n this.onChangePaymentAmount('', NaN, '0');\n\n this._clearError();\n await checkoutState.updateCustomerAccountAmount({ newAmount: 0 });\n this.props.context.telemetry.information('customer account payment removed');\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n}\n\nexport default CheckoutCustomerAccountPayment;\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 { ICheckoutCustomerAccountPaymentViewProps, IAccountPaymentEditViewForm, IAccountPaymentSummaryViewForm } from './index';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n paymentAmount,\n addPaymentButton,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {label}\n {paymentAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IModule } from '@msdyn365-commerce/core';\nimport {\n Address,\n CartLine,\n LineDeliverySpecification,\n PickupTimeslotAvailability,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface ICheckoutPickupGroupKey {\n pickupStoreId: string;\n deliveryMode: string;\n}\n\nexport interface ICheckoutPickupGroup extends ICheckoutPickupGroupKey {\n pickupModeName: string;\n storeName: string;\n pickupAddress?: Address;\n availabilityState: PickupTimeslotAvailabilityState;\n groupErrorMessage?: string;\n dateErrorMessage?: string;\n timeslotErrorMessage?: string;\n lineDeliverySpecs: LineDeliverySpecification[];\n cartLines: ICartLineWithProduct[];\n\n availableDates: Date[];\n availableTimeslots: PickupTimeslotAvailability[];\n\n selectedDate?: Date;\n selectedTimeslot?: PickupTimeslotAvailability;\n}\n\nexport enum PickupTimeslotAvailabilityState {\n None,\n Available,\n NotDefined,\n NotAvailable // All slots occupied\n}\n\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\nexport interface ICheckoutPickupGroupViewProps {\n moduleProps: IModule;\n\n pickupGroupContainer: INodeProps;\n dateTimeslotContainer: INodeProps;\n\n pickupStoreId: string;\n pickupModeName: string;\n deliveryMode: string;\n\n groupDivider: React.ReactNode;\n groupHeader: React.ReactNode;\n groupErrorMessage: React.ReactNode;\n cartLineImages: React.ReactNode;\n pickupDateDropdown: React.ReactNode;\n pickupTimeslotDropdown: React.ReactNode;\n\n selectedDateTimeslot: React.ReactNode;\n pickupAddress: React.ReactNode;\n}\n\nexport interface ICheckoutPickupErrorProps {\n errorMessage?: string;\n}\n\nexport const CheckoutPickupError: React.FC = ({ errorMessage }) => {\n if (!errorMessage) {\n return null;\n }\n\n return (\n \n \n );\n};\n\nexport interface ICheckoutPickupGroupHeaderProps {\n moduleClassName: string;\n storeInfo: string;\n items: string;\n}\n\nexport const CheckoutPickupGroupHeader: React.FC = ({ moduleClassName, storeInfo, items }) => {\n return (\n
\n
{storeInfo}
\n
{items}
\n
\n );\n};\n\nexport interface ICheckoutPickupTimeslotInfoProps {\n moduleClassName: string;\n title: string;\n content: string;\n}\n\nexport const CheckoutPickupTimeslotInfo: React.FC = ({ moduleClassName, title, content }) => {\n return (\n
\n
{title}
\n
{content}
\n
\n );\n};\n\nexport interface ICheckoutPickupAddressProps {\n moduleClassName: string;\n title: string;\n address?: Address;\n}\n\nexport const CheckoutPickupAddress: React.FC = ({ moduleClassName, title, address }) => {\n if (!address) {\n return null;\n }\n\n return (\n
\n
{title}
\n {address.Name && {address.Name}}\n <>\n {address.Street && {address.Street}}\n {address.City && {address.City}}\n {address.State && {`, ${address.State}`}}\n {address.County && {`, ${address.County}`}}\n {address.ZipCode && {` ${address.ZipCode}`}}\n {address.ThreeLetterISORegionName && (\n \n {` ${address.ThreeLetterISORegionName}`}\n \n )}\n \n
\n );\n};\n\nexport interface ICheckoutPickupCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n}\n\nexport interface ICheckoutPickupCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutPickupCartLineInfo[];\n}\n\nexport const CheckoutPickupCartLines: React.FC = ({ moduleClassName, cartLines }) => {\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n return (\n
\n {cartLines.map(prop => {\n const showQty = prop.quantity > 1;\n let className = `${moduleClassName}__group-product-image`;\n if (showQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
\n \n {showQty &&
{prop.quantity}
}\n
\n );\n })}\n
\n );\n};\n\nexport const DefaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg\"', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { format } from '@msdyn365-commerce-modules/utilities';\n\nexport function getDate(date: Date | undefined, locale: string): string {\n if (!date) {\n return '';\n }\n const options: Intl.DateTimeFormatOptions = {\n timeZone: 'UTC'\n };\n const formatter = new Intl.DateTimeFormat(locale, options);\n return formatter.format(new Date(date));\n}\n\nexport const getTimeslot = (\n placeHolder: string,\n startDate: Date | undefined,\n endDate: Date | undefined,\n locale: string,\n useHour12TimeFormat?: boolean\n): string => {\n if (!startDate || !endDate) {\n return '';\n }\n let options: Intl.DateTimeFormatOptions = { hour: 'numeric', minute: 'numeric' };\n options = useHour12TimeFormat\n ? { hour: 'numeric', minute: 'numeric', timeZone: 'UTC' }\n : { hour: 'numeric', minute: 'numeric', timeZone: 'UTC', hour12: true };\n const formatter = new Intl.DateTimeFormat(locale, options);\n return format(placeHolder, formatter.format(new Date(startDate)), formatter.format(new Date(endDate)));\n};\n\nexport const getUTCDateWithoutTime = (input: Date): Date => {\n const date: Date = new Date(input);\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0));\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\nimport {\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { CheckoutPickupError } from './checkout-pickup-group';\nimport { getDate } from './checkout-pickup-utility';\n\nexport interface IPickupDropdownProps {\n pickupStoreId: string;\n deliveryMode: string;\n\n className: string;\n labelClassname?: string;\n labelText: string;\n defaultText: string;\n errorMessage?: string;\n\n locale: string;\n\n // Props for the LabeledDropdown component\n dropdownId: string;\n controlledByParent: boolean;\n toggleColor?: string;\n dropdownClassname?: string;\n}\n\nexport interface IPickupDateDropdownProps extends IPickupDropdownProps {\n availableDates: Date[];\n selectedDate?: Date;\n setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): void;\n}\n\n/**\n *\n * CheckoutPickupDateDropdown component.\n * @extends {React.Component}\n */\nexport class CheckoutPickupDateDropdown extends React.PureComponent {\n private readonly defaultKey: number = -1;\n\n private readonly defaultOption: ILabeledDropdownOption;\n\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\n @computed get getDateMap(): Map {\n const map = new Map();\n this.props.availableDates.forEach((value, index) => {\n map.set(index.toString(), value);\n });\n return map;\n }\n\n constructor(props: IPickupDateDropdownProps) {\n super(props);\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\n this.updateDateSelection = this.updateDateSelection.bind(this);\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n labelClassname,\n labelText,\n errorMessage,\n dropdownId,\n availableDates,\n selectedDate,\n controlledByParent,\n toggleColor,\n dropdownClassname\n } = this.props;\n\n const { dropdownOptions, selectedOption } = this.mapDatesToOptions(availableDates, selectedDate);\n\n return (\n
\n \n \n \n
\n );\n }\n\n private readonly updateDateSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\n const { pickupStoreId, deliveryMode, setDateHandler } = this.props;\n const date: Date | undefined = this.getDate(notification);\n setDateHandler(pickupStoreId, deliveryMode, date);\n };\n\n private readonly getDate = (notification: ILabeledDropdownOnChangeNotification): Date | undefined => {\n const key: string = notification.selectedOption.key;\n if (key === this.defaultKey.toString() || !this.getDateMap.has(key)) {\n return undefined;\n }\n return this.getDateMap.get(key);\n };\n\n private readonly mapDatesToOptions = (\n dates: Date[],\n selectedDate: Date | undefined\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\n const { locale } = this.props;\n let options: ILabeledDropdownOption[] = [];\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\n\n options = dates.map((value: Date, index: number) => {\n return {\n key: index.toString(),\n value: getDate(value, locale)\n };\n });\n options.unshift(this.defaultOption);\n\n const index: number = dates.findIndex((value: Date) => selectedDate !== undefined && selectedDate.getTime() === value.getTime());\n if (index >= 0 && selectedDate) {\n selectedOption = {\n key: index.toString(),\n value: getDate(selectedDate, locale)\n };\n }\n\n return {\n dropdownOptions: options,\n selectedOption\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 { PickupTimeslotAvailability } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { LabeledDropdown } from '@msdyn365-commerce-modules/utilities';\nimport {\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption\n} from '@msdyn365-commerce-modules/utilities/dist/types/labeled-dropdown/LabeledDropdown.props';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { IPickupDropdownProps } from './checkout-pickup-date-dropdown';\nimport { CheckoutPickupError } from './checkout-pickup-group';\nimport { getTimeslot } from './checkout-pickup-utility';\n\nexport interface IPickupTimeslotDropdownProps extends IPickupDropdownProps {\n availableTimeslots: PickupTimeslotAvailability[];\n selectedTimeslot?: PickupTimeslotAvailability;\n timeslotPlaceHolder: string;\n setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void;\n useHour12TimeFormat?: boolean;\n}\n\n/**\n *\n * CheckoutPickupTimeslotDropdown component.\n * @extends {React.Component}\n */\nexport class CheckoutPickupTimeslotDropdown extends React.PureComponent {\n private readonly defaultKey: number = -1;\n\n private readonly defaultOption: ILabeledDropdownOption;\n\n // As the LabeledDropdown control only offers key and value, we need to map the key with date and timeslot data\n @computed get getTimeslotMap(): Map {\n const map = new Map();\n this.props.availableTimeslots.forEach((value, index) => {\n map.set(index.toString(), value);\n });\n return map;\n }\n\n constructor(props: IPickupTimeslotDropdownProps) {\n super(props);\n this.defaultOption = { key: this.defaultKey.toString(), value: props.defaultText };\n this.updateTimeslotSelection = this.updateTimeslotSelection.bind(this);\n }\n\n public render(): JSX.Element | null {\n const {\n className,\n labelClassname,\n labelText,\n errorMessage,\n dropdownId,\n availableTimeslots,\n selectedTimeslot,\n controlledByParent,\n toggleColor,\n dropdownClassname\n } = this.props;\n\n const { dropdownOptions, selectedOption } = this.mapTimeslotsToOptions(availableTimeslots, selectedTimeslot);\n\n return (\n
\n \n \n \n
\n );\n }\n\n private readonly updateTimeslotSelection = (notification: ILabeledDropdownOnChangeNotification): void => {\n const { pickupStoreId, deliveryMode, setTimeslotHandler } = this.props;\n const timeslot: PickupTimeslotAvailability | undefined = this.getTimeslot(notification);\n setTimeslotHandler(pickupStoreId, deliveryMode, timeslot);\n };\n\n private readonly getTimeslot = (notification: ILabeledDropdownOnChangeNotification): PickupTimeslotAvailability | undefined => {\n const key: string = notification.selectedOption.key;\n if (key === this.defaultKey.toString() || !this.getTimeslotMap.has(key)) {\n return undefined;\n }\n return this.getTimeslotMap.get(key);\n };\n\n private readonly mapTimeslotsToOptions = (\n timeslots: PickupTimeslotAvailability[],\n selectedTimeslot: PickupTimeslotAvailability | undefined\n ): { dropdownOptions: ILabeledDropdownOption[]; selectedOption: ILabeledDropdownOption | undefined } => {\n const { timeslotPlaceHolder, locale, useHour12TimeFormat } = this.props;\n let options: ILabeledDropdownOption[] = [];\n let selectedOption: ILabeledDropdownOption = this.defaultOption;\n\n options = timeslots.map((value: PickupTimeslotAvailability, index: number) => {\n return {\n key: index.toString(),\n value: getTimeslot(timeslotPlaceHolder, value.StartDateTime, value.EndDateTime, locale, useHour12TimeFormat)\n };\n });\n options.unshift(this.defaultOption);\n\n const index: number = timeslots.findIndex(\n value =>\n selectedTimeslot !== undefined &&\n selectedTimeslot.StartDateTime?.getTime() === value.StartDateTime?.getTime() &&\n selectedTimeslot.EndDateTime?.getTime() === value.EndDateTime?.getTime()\n );\n if (index >= 0 && selectedTimeslot) {\n selectedOption = {\n key: index.toString(),\n value: getTimeslot(\n timeslotPlaceHolder,\n selectedTimeslot.StartDateTime,\n selectedTimeslot.EndDateTime,\n locale,\n useHour12TimeFormat\n )\n };\n }\n\n return {\n dropdownOptions: options,\n selectedOption\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 { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { getEstimatedPickupTimeslotAvailabilitiesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CartLine,\n LineDeliverySpecification,\n OrgUnitLocation,\n PickupTimeslotAvailability,\n PickupTimeslotAvailabilitySearchCriteria,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, IModuleProps, isNullOrWhiteSpace, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutPickupData } from './checkout-pickup.data';\nimport { ICheckoutPickupProps } from './checkout-pickup.props.autogenerated';\nimport {\n CheckoutPickupDateDropdown,\n CheckoutPickupError,\n CheckoutPickupTimeslotDropdown,\n getDate,\n getTimeslot,\n getUTCDateWithoutTime\n} from './components';\nimport {\n CheckoutPickupAddress,\n CheckoutPickupCartLines,\n CheckoutPickupGroupHeader,\n CheckoutPickupTimeslotInfo,\n DefaultImageSettings,\n ICheckoutPickupAddressProps,\n ICheckoutPickupCartLineInfo,\n ICheckoutPickupCartLinesProps,\n ICheckoutPickupGroup,\n ICheckoutPickupGroupHeaderProps,\n ICheckoutPickupGroupViewProps,\n ICheckoutPickupTimeslotInfoProps,\n PickupTimeslotAvailabilityState\n} from './components/checkout-pickup-group';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutPickupModuleProps extends ICheckoutPickupProps, IModuleStateProps {}\n\nexport interface ICheckoutPickupState {\n pickupGroups: ICheckoutPickupGroup[];\n}\n\nexport interface ICheckoutPickupViewState {\n isLoading: boolean;\n isHeaderError: boolean;\n isShowDropdown: boolean;\n isShowSelected: boolean;\n}\n\nexport interface ICheckoutPickupViewProps extends ICheckoutPickupProps<{}> {\n checkoutPickup: IModuleProps;\n viewState: ICheckoutPickupViewState;\n headerError: React.ReactNode;\n waiting: React.ReactNode;\n pickupGroups: ICheckoutPickupGroupViewProps[];\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutPickup component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutPickup extends React.Component {\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isLoading: boolean = false;\n\n @observable private headerErrorMessage?: string;\n\n @computed get isDataReady(): boolean {\n return (\n (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS' &&\n (this.props.data.orgUnitLocations.result && this.props.data.orgUnitLocations.status) === 'SUCCESS'\n );\n }\n\n constructor(props: ICheckoutPickupModuleProps) {\n super(props);\n this.state = { pickupGroups: [] };\n\n this.setDateHandler = this.setDateHandler.bind(this);\n this.setTimeslotHandler = this.setTimeslotHandler.bind(this);\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.initPickupGroup();\n this.initModuleState();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutPickup && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutPickup) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutPickupModuleProps, nextState: ICheckoutPickupState): 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 if (!this.isDataReady || !this.canPickup()) {\n return null;\n }\n\n const { resources, config, context } = this.props;\n\n const {\n pickupDateLabel,\n pickupTimeslotLabel,\n pickupDateDefaultText,\n pickupTimeslotDefaultText,\n itemsText,\n singleItemText,\n pickupDateTimeslotText,\n pickupTimeslotPlaceHolder,\n pickupLocationLabel\n } = resources;\n\n const { locale } = context.request;\n const { className, imageSettings, useHour12TimeFormat } = config;\n const defaultClassName = 'ms-checkout-pickup';\n const groupsViewProps: ICheckoutPickupGroupViewProps[] = [];\n\n this.state.pickupGroups.forEach((value, index) => {\n // Divider line for each pickup group\n const groupDivider: React.ReactNode = index !== 0 &&
;\n\n // Line images\n const cartlines: ICheckoutPickupCartLineInfo[] = value.cartLines\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId || '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: `${defaultClassName}__group-line-image`,\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl || '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings || DefaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity || 0\n }));\n\n // Heading for each group\n const numberOfCartLines = this._countItems(cartlines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n const headerProps: ICheckoutPickupGroupHeaderProps = {\n moduleClassName: defaultClassName,\n storeInfo: `${value.pickupModeName}, ${value.storeName}`,\n items: itemTitle\n };\n const groupHeader: React.ReactNode = ;\n\n const lineImageProps: ICheckoutPickupCartLinesProps = {\n moduleClassName: defaultClassName,\n cartLines: cartlines.filter(x => !ObjectExtensions.isNullOrUndefined(x))\n };\n const cartLineImages: React.ReactNode = ;\n\n // Selected pickup date and timeslot node\n const dateString = getDate(value.selectedDate, locale);\n const timeslotString = getTimeslot(\n pickupTimeslotPlaceHolder,\n value.selectedTimeslot?.StartDateTime,\n value.selectedTimeslot?.EndDateTime,\n locale,\n useHour12TimeFormat\n );\n const timeslotInfoProps: ICheckoutPickupTimeslotInfoProps = {\n moduleClassName: defaultClassName,\n title: pickupDateTimeslotText,\n content: `${dateString} ${timeslotString}`\n };\n const selectedDateTimeslotNode: React.ReactNode = ;\n\n // Pickup address\n const addressProps: ICheckoutPickupAddressProps = {\n moduleClassName: defaultClassName,\n title: pickupLocationLabel,\n address: value.pickupAddress\n };\n const pickupAddress: React.ReactNode = ;\n\n // Pickup date and timeslot dropdown list\n const dropdownClassName = `${defaultClassName}__group-datetime-dropdown`;\n const labelClassName = `${dropdownClassName}-label`;\n const dropdownSelectClassName = `${dropdownClassName}-select`;\n const dateDropdownNode: React.ReactNode = (\n \n );\n\n const timeslotDropdownNode: React.ReactNode = (\n \n );\n\n const viewProp: ICheckoutPickupGroupViewProps = {\n moduleProps: { ...this.props },\n pickupGroupContainer: { className: `${defaultClassName}__group` },\n dateTimeslotContainer: { className: `${defaultClassName}__group-datetime` },\n pickupStoreId: value.pickupStoreId,\n pickupModeName: value.pickupModeName,\n deliveryMode: value.deliveryMode,\n groupDivider,\n groupHeader,\n groupErrorMessage: ,\n cartLineImages,\n pickupDateDropdown: dateDropdownNode,\n pickupTimeslotDropdown: timeslotDropdownNode,\n selectedDateTimeslot: selectedDateTimeslotNode,\n pickupAddress\n };\n\n groupsViewProps.push(viewProp);\n });\n\n const {\n moduleState: { isReady, hasError }\n } = this.props;\n const isHeaderError = !this.isLoading && this.headerErrorMessage !== undefined;\n const isShowDropdown = !this.isLoading && !isReady;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n\n const viewProps: ICheckoutPickupViewProps = {\n ...this.props,\n checkoutPickup: {\n moduleProps: this.props,\n className: classname(defaultClassName, className)\n },\n viewState: {\n isLoading: this.isLoading,\n isHeaderError,\n isShowSelected,\n isShowDropdown\n },\n headerError: ,\n waiting: ,\n pickupGroups: groupsViewProps,\n checkoutErrorRef: this.checkoutErrorRef\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n public async setDateHandler(pickupStoreId: string, deliveryMode: string, pickupDate: Date | undefined): Promise {\n const oldGroup = this.state.pickupGroups.find(\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\n );\n if (!oldGroup) {\n return;\n }\n\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\n newGroup.selectedDate = pickupDate;\n newGroup.selectedTimeslot = undefined; // Clear the selected timeslot in any case\n newGroup.timeslotErrorMessage = undefined; // Clear the timeslot error message if any\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\n if (lineSpec.DeliverySpecification) {\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = undefined;\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = undefined;\n }\n });\n\n if (pickupDate) {\n // Date is set\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n StartDate: pickupDate,\n EndDate: pickupDate,\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\n };\n const timeslotResults: PickupTimeslotAvailability[] = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\n searchCriteria\n );\n\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\n newGroup.dateErrorMessage =\n newGroup.availableTimeslots.length === 0 ? this.props.resources.noAvailableTimeslotError : undefined;\n } else {\n // Date is not set\n newGroup.availableTimeslots = [];\n newGroup.dateErrorMessage = undefined;\n }\n\n const groups = this.state.pickupGroups.map(group => {\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\n return newGroup;\n }\n return group;\n });\n\n this.setState({ pickupGroups: groups });\n }\n\n @action\n public setTimeslotHandler(pickupStoreId: string, deliveryMode: string, pickupTimeslot: PickupTimeslotAvailability | undefined): void {\n const oldGroup = this.state.pickupGroups.find(\n group => group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode\n );\n if (!oldGroup) {\n return;\n }\n\n const newGroup: ICheckoutPickupGroup = { ...oldGroup };\n\n newGroup.selectedTimeslot = pickupTimeslot;\n newGroup.lineDeliverySpecs.forEach((lineSpec: LineDeliverySpecification) => {\n if (lineSpec.DeliverySpecification) {\n lineSpec.DeliverySpecification.PickupTimeslotStartDateTime = pickupTimeslot?.StartDateTime;\n lineSpec.DeliverySpecification.PickupTimeslotEndDateTime = pickupTimeslot?.EndDateTime;\n }\n });\n\n if (pickupTimeslot) {\n newGroup.timeslotErrorMessage = undefined;\n }\n\n const groups = this.state.pickupGroups.map(group => {\n if (group.pickupStoreId === pickupStoreId && group.deliveryMode === deliveryMode) {\n return newGroup;\n }\n return group;\n });\n\n this.setState({ pickupGroups: groups });\n }\n\n @action\n private readonly initModuleState = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onSubmit: this.onSubmit,\n status: this.canPickup() ? (this.isPickupTimeSlotSet() ? 'ready' : 'updating') : 'disabled'\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly onReady = (): void => {\n this.props.moduleState.onReady();\n };\n\n private readonly onPending = (): void => {\n this.props.moduleState.onPending();\n };\n\n private readonly onSubmit = async (): Promise => {\n await this.updateCartLinePickupDateTimeslot();\n };\n\n private readonly setError = (errorMessage: string, isHeaderError: boolean = true): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n if (isHeaderError) {\n this.headerErrorMessage = errorMessage;\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.headerErrorMessage = undefined;\n };\n\n @action\n private readonly initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this.getCartLinesforPickup();\n let products: SimpleProduct[] = [];\n try {\n products = await this.getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n const pickupGroups: ICheckoutPickupGroup[] = [];\n const locations: OrgUnitLocation[] = this.props.data.orgUnitLocations.result || [];\n this.isLoading = true;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState, deliveryOptions } = this.props?.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n for (const line of pickupCartLines) {\n const group: ICheckoutPickupGroup | undefined = pickupGroups.find(\n x => x.pickupStoreId === line.FulfillmentStoreId && x.deliveryMode === line.DeliveryMode\n );\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n const lineDeliverySpecification: LineDeliverySpecification = {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: line.DeliveryMode,\n DeliveryPreferenceTypeValue: 2,\n PickUpStoreId: line.FulfillmentStoreId,\n PickupTimeslotStartDateTime: line.PickupTimeslotStartDateTime,\n PickupTimeslotEndDateTime: line.PickupTimeslotEndDateTime,\n DeliveryAddress: line.ShippingAddress\n }\n };\n if (group) {\n group.lineDeliverySpecs.push(lineDeliverySpecification);\n group.cartLines.push({ cartLine: line, product });\n } else {\n // Group not exists yet\n const location: OrgUnitLocation | undefined = locations.find(x => x.OrgUnitNumber === line.FulfillmentStoreId);\n const storeName: string = this.getStoreName(location, line);\n const selectedDate: Date | undefined =\n line.PickupTimeslotStartDateTime && getUTCDateWithoutTime(line.PickupTimeslotStartDateTime);\n const selectedTimeslot =\n line.PickupTimeslotStartDateTime && line.PickupTimeslotEndDateTime\n ? { StartDateTime: line.PickupTimeslotStartDateTime, EndDateTime: line.PickupTimeslotEndDateTime }\n : undefined;\n const newGroup: ICheckoutPickupGroup = {\n pickupModeName: retailMultiplePickUpOptionEnabled\n ? this.getPickupModeDescription(\n this.props.resources.generalPickupText,\n line.DeliveryMode,\n deliveryOptions?.result,\n product\n )\n : this.props.resources.generalPickupText,\n pickupStoreId: line.FulfillmentStoreId || '',\n deliveryMode: line.DeliveryMode || '',\n storeName,\n pickupAddress: line.ShippingAddress,\n availabilityState: PickupTimeslotAvailabilityState.None,\n lineDeliverySpecs: [lineDeliverySpecification],\n cartLines: [{ cartLine: line, product }],\n availableDates: [],\n availableTimeslots: [],\n selectedDate,\n selectedTimeslot\n };\n\n let dailyGroupingResults: PickupTimeslotAvailability[] = [];\n try {\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n SearchOptionValue: 1 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.DailyGroupingTimeslotOnly\n };\n dailyGroupingResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {} },\n searchCriteria\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n newGroup.availabilityState = this.getPickupTimeslotAvailabilityState(dailyGroupingResults);\n if (newGroup.availabilityState === PickupTimeslotAvailabilityState.NotAvailable) {\n newGroup.groupErrorMessage = this.props.resources.noAvailableDateError;\n this.setError(newGroup.groupErrorMessage, false);\n }\n dailyGroupingResults.forEach(value => {\n if (value.StartDateTime && (value.AvailableCapacity || 0) > 0) {\n newGroup.availableDates.push(getUTCDateWithoutTime(value.StartDateTime));\n }\n });\n\n if (selectedDate) {\n let timeslotResults: PickupTimeslotAvailability[] = [];\n try {\n const searchCriteria: PickupTimeslotAvailabilitySearchCriteria = {\n DeliveryModeCode: newGroup.deliveryMode,\n StoreId: newGroup.pickupStoreId,\n StartDate: selectedDate,\n EndDate: selectedDate,\n SearchOptionValue: 2 // Test runtime does not recognize PickupTimeslotAvailabilitySearchOption.All\n };\n timeslotResults = await getEstimatedPickupTimeslotAvailabilitiesAsync(\n { callerContext: this.props.context.actionContext, queryResultSettings: {}, bypassCache: 'get' },\n searchCriteria\n );\n } catch (error) {\n this.props.telemetry.error(error);\n }\n newGroup.availableTimeslots = timeslotResults.filter(value => (value.AvailableCapacity || 0) > 0);\n }\n pickupGroups.push(newGroup);\n }\n }\n\n const filteredPickupGroups = pickupGroups.filter(\n group =>\n group.availabilityState === PickupTimeslotAvailabilityState.Available ||\n group.availabilityState === PickupTimeslotAvailabilityState.NotAvailable\n );\n\n if (!ArrayExtensions.hasElements(filteredPickupGroups)) {\n this.props.context.telemetry.error('Data is not ready or pickup group is empty, module wont render.');\n }\n this.isLoading = false;\n this.setState({ pickupGroups: filteredPickupGroups });\n };\n\n @action\n private readonly updateCartLinePickupDateTimeslot = async (): Promise => {\n if (!this.validateTimeslot()) {\n return;\n }\n const { resources } = this.props;\n let lineSpecs: LineDeliverySpecification[] = [];\n\n this.state.pickupGroups.forEach(group => {\n lineSpecs = lineSpecs.concat(group.lineDeliverySpecs);\n });\n\n this.clearError();\n this.onPending();\n\n try {\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const response = await checkoutState.checkoutCart.updateCartLinePickupDateTimeslot({ lineDeliverySpecifications: lineSpecs });\n\n if (response.status === 'FAILED') {\n this.setError(resources.genericErrorMessage);\n } else {\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n };\n\n private readonly getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n private readonly validateTimeslot = (): boolean => {\n let validationResult = true;\n this.state.pickupGroups.forEach(group => {\n switch (group.availabilityState) {\n case PickupTimeslotAvailabilityState.NotAvailable:\n // Need customer to select another store in this case\n validationResult = false;\n break;\n case PickupTimeslotAvailabilityState.Available:\n if (!group.selectedDate || !group.selectedTimeslot) {\n if (!group.selectedDate) {\n group.dateErrorMessage = this.props.resources.pickupDateRequired;\n }\n if (!group.selectedTimeslot) {\n group.timeslotErrorMessage = this.props.resources.pickupTimeslotRequired;\n }\n this.setError(this.props.resources.pickupDateTimeslotRequired, false);\n validationResult = false;\n } else {\n group.dateErrorMessage = undefined;\n group.timeslotErrorMessage = undefined;\n }\n break;\n\n // We consider timeslot not defined as fallback case\n case PickupTimeslotAvailabilityState.NotDefined:\n default:\n }\n });\n\n return validationResult;\n };\n\n private readonly getStoreName = (orgUnitLocation: OrgUnitLocation | undefined, cartLine: CartLine): string => {\n return orgUnitLocation?.OrgUnitName || cartLine.ShippingAddress?.Name || cartLine.FulfillmentStoreId || '';\n };\n\n private readonly canPickup = (): boolean => {\n return ArrayExtensions.hasElements(this.state.pickupGroups);\n };\n\n private readonly isPickupTimeSlotSet = (): boolean => {\n return (\n ArrayExtensions.hasElements(this.state.pickupGroups) &&\n this.state.pickupGroups.every(\n group =>\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.StartDateTime) &&\n !ObjectExtensions.isNullOrUndefined(group.selectedTimeslot?.EndDateTime)\n )\n );\n };\n\n private readonly getCartLinesforPickup = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this.isPickupLine(line)) || [];\n };\n\n private readonly isPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props?.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.includes(deliveryMode);\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode === pickupDeliveryModeCode;\n };\n\n private readonly isPickupLine = (line: CartLine): boolean => {\n return (\n this.isPickupMode(line.DeliveryMode) && line.FulfillmentStoreId !== undefined && !isNullOrWhiteSpace(line.FulfillmentStoreId)\n );\n };\n\n private readonly getPickupModeDescription = (\n resourceString: string,\n deliveryMode?: string,\n deliveryOptions?: ProductDeliveryOptions[],\n product?: SimpleProduct\n ): string => {\n let deliveryOption: string = resourceString;\n if (ArrayExtensions.hasElements(deliveryOptions) && product !== undefined) {\n let foundProductDeliveryOption;\n foundProductDeliveryOption = deliveryOptions?.find(deliveryO => {\n return deliveryO && deliveryO.ProductId === product.RecordId;\n });\n const deliveryDesc = foundProductDeliveryOption?.DeliveryOptions\n ? foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === deliveryMode)?.Description\n : resourceString;\n if (deliveryDesc !== undefined) {\n deliveryOption = deliveryDesc;\n }\n }\n return deliveryOption;\n };\n\n private readonly getPickupTimeslotAvailabilityState = (dailyResult: PickupTimeslotAvailability[]) => {\n let state: PickupTimeslotAvailabilityState = PickupTimeslotAvailabilityState.None;\n if (!ArrayExtensions.hasElements(dailyResult)) {\n state = PickupTimeslotAvailabilityState.NotDefined;\n } else if (dailyResult.every(date => (date.AvailableCapacity || 0) <= 0)) {\n state = PickupTimeslotAvailabilityState.NotAvailable;\n } else {\n state = PickupTimeslotAvailabilityState.Available;\n }\n return state;\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout pickup cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutPickupCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutPickup;\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 { ICheckoutPickupGroupViewProps, ICheckoutPickupViewProps } from './index';\n\nconst CheckoutPickupView: React.FC = props => {\n const { checkoutPickup, checkoutErrorRef, viewState, headerError, waiting, pickupGroups } = props;\n\n return (\n \n {viewState.isLoading && waiting}\n {viewState.isHeaderError && headerError}\n {pickupGroups.map(\n (pickupGroupViewProps: ICheckoutPickupGroupViewProps, index: number): React.ReactElement => {\n const {\n pickupGroupContainer,\n dateTimeslotContainer,\n groupDivider,\n groupHeader,\n groupErrorMessage,\n cartLineImages,\n pickupDateDropdown,\n pickupTimeslotDropdown,\n selectedDateTimeslot,\n pickupAddress\n } = pickupGroupViewProps;\n\n return (\n \n {groupDivider}\n {groupHeader}\n {groupErrorMessage}\n {cartLineImages}\n {viewState.isShowDropdown && (\n \n {pickupDateDropdown}\n {pickupTimeslotDropdown}\n \n )}\n {viewState.isShowSelected && pickupAddress}\n {viewState.isShowSelected && selectedDateTimeslot}\n \n );\n }\n )}\n \n );\n};\n\nexport default CheckoutPickupView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\n isChecked: boolean;\n ariaLabel?: string;\n disabled: boolean;\n id?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.ariaLabel\n * @param root0.disabled\n * @param root0.telemetryContent\n * @param root0.onChange\n * @param root0.id\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\n isChecked,\n ariaLabel,\n disabled,\n telemetryContent,\n onChange,\n id\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n \n \n );\n};\n\nexport default CheckoutTermsAndConditionsCheckbox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutTermsAndConditionsData } from './checkout-terms-and-conditions.data';\nimport { ICheckoutTermsAndConditionsProps } from './checkout-terms-and-conditions.props.autogenerated';\nimport CheckboxComponent from './components/checkout-terms-and-conditions.check-box';\nimport ErrorMessageComponent from './components/checkout-terms-and-conditions.error-message';\nimport ErrorTitleComponent from './components/checkout-terms-and-conditions.error-title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutTermsAndConditionsModuleProps\n extends ICheckoutTermsAndConditionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutTermsAndConditions {\n termsAndConditionAcceptance: INodeProps;\n checkBox: React.ReactNode;\n description: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsError {\n error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsViewState {\n isError: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutTermsAndConditionsViewProps extends ICheckoutTermsAndConditionsProps<{}> {\n checkoutTermsAndConditions: IModuleProps;\n isTermsAccepted: boolean;\n errorMessageData: string;\n viewState: ICheckoutTermsAndConditionsViewState;\n termsAndConditionsContent: ICheckoutTermsAndConditions;\n errorMessage?: ICheckoutTermsAndConditionsError;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutTermsAndConditions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutTermsAndConditions extends React.Component {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isTermsAccepted: boolean = true;\n\n @observable private errorMessage?: string;\n\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get isShowButtons(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\n }\n\n @computed get isAutoSave(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\n }\n\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\n const { showCheckbox } = this.props.config;\n return !showCheckbox;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.isTermsAndConditionAccepted,\n async () => {\n this.isTermsAccepted =\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutTermsAndConditions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutTermsAndConditions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutTermsAndConditionsModuleProps,\n nextState: ICheckoutTermsAndConditionsViewState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n moduleState: { isReady, hasError },\n config: { className }\n } = this.props;\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\n const isError = hasError;\n const isShowContent = !isReady;\n const isShowSelected = !hasError && isReady;\n\n const viewProps = {\n ...this.props,\n ...this.state,\n isTermsAccepted: this.isTermsAccepted,\n errorMessageData: this.errorMessage,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isError,\n isShowSaveButton: isShowContent && this.isShowButtons,\n isShowEditButton: isShowSelected && this.isShowButtons,\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\n },\n checkoutTermsAndConditions: {\n moduleProps: this.props,\n className: classname('ms-checkout-terms-and-conditions', className)\n },\n termsAndConditionsContent: this.getTermsAndConditions(),\n errorMessage: this.getErrorMessage(),\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSubmit,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onChange: this.onChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\n\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\n const {\n moduleState: { isReady },\n config: { showCheckbox, description }\n } = this.props;\n const isDisabled = isReady && !this.isAutoSave;\n const isTermsAndConditionAccepted = this.isTermsAccepted;\n const { checkboxAriaLabel } = this.props.resources;\n return {\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\n checkBox: showCheckbox && (\n \n ),\n description: (\n \n )\n };\n };\n\n @action\n private readonly init = async (): Promise => {\n const {\n data,\n config: { showCheckbox }\n } = this.props;\n\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(true);\n this.isTermsAccepted = true;\n } else if (showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(false);\n this.isTermsAccepted = false;\n }\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\n });\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\n return (\n \n {cancelBtnLabel}\n \n );\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\n return (\n \n {editBtnLabel}\n \n );\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Terms and conditions onEdit is called.');\n\n this.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\n\n if (!this.isTermsAccepted) {\n if (this.isAutoSave) {\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n } else {\n this.setError(this.props.resources.errorMessage);\n this.props.moduleState.setHasError(true);\n }\n } else {\n this.clearError();\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n this.props.moduleState.onUpdating();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Terms and conditions onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\n if (!isTermsAccepted) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onChange = async (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n this.isTermsAccepted = checked;\n\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\n }\n\n if (this.isAutoSave) {\n await this.onSubmit();\n }\n };\n}\n\nexport default CheckoutTermsAndConditions;\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 {\n ICheckoutTermsAndConditions,\n ICheckoutTermsAndConditionsError,\n ICheckoutTermsAndConditionsViewProps\n} from './checkout-terms-and-conditions';\n\nconst TermsAndCondition: React.FC = ({ termsAndConditionAcceptance, checkBox, description }) => {\n return (\n \n {checkBox}\n {description}\n \n );\n};\n\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\n return (\n \n {title}\n {message}\n \n );\n};\n\nconst CheckoutTermsAndConditionsView: React.FC = props => {\n const {\n checkoutTermsAndConditions,\n checkoutErrorRef,\n viewState,\n termsAndConditionsContent,\n errorMessage,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isError && errorMessage && }\n \n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutTermsAndConditionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
\n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { BackToTop, getTelemetryObject, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBackTopFooterProps } from './back-top-footer.props.autogenerated';\n\n/**\n *\n * BackTopFooter component.\n * @extends {React.PureComponent>}\n */\nclass BackTopFooter extends React.PureComponent> {\n private readonly editProps: Msdyn365.ITextEditProps = {\n requestContext: this.props.context.request,\n onEdit: (event: Msdyn365.ContentEditableEvent) => (this.props.config.backtoTopText = event.target.value)\n };\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IBackTopFooterProps<{}>) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element | null {\n if (!this.props.config.destination) {\n this.props.telemetry.error('BackToTop.destination has not been provided, module wont render.');\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default BackTopFooter;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult, Customer, ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ProductComparisonItem, ProductComparisonState } from '../product-comparison-state';\nimport { IProductComparisonButtonProps } from './product-comparison-button.props.autogenerated';\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonButtonViewProps extends IProductComparisonButtonProps<{}> {\n moduleProps: IModuleProps;\n productComparisonButton?: React.ReactNode;\n productComparisonPreview?: React.ReactNode;\n}\n\n/**\n * Represents the data which is required for the product comparison button to be rendered.\n */\nexport interface IProductComparisonButtonData {\n accountInformation?: AsyncResult;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonFullProps extends IProductComparisonButtonProps {\n product: ProductSearchResult | SimpleProduct;\n catalogId: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonButtonState {\n canProductBeAddedToProductComparison: boolean;\n currentProductsCount: number;\n comparisonItemId: string;\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonButton extends React.PureComponent {\n private static _productComparisonPreview?: React.ReactNode;\n\n private readonly _className: string;\n\n private readonly _instanceId: string;\n\n private readonly _shouldUsePreview: boolean;\n\n private static _renderProductComparisonPreview(props: IProductComparisonButtonFullProps): React.ReactNode {\n if (!ProductComparisonButton._productComparisonPreview && ArrayExtensions.hasElements(props.slots.productComparisonPreview)) {\n ProductComparisonButton._productComparisonPreview = props.slots.productComparisonPreview[0];\n }\n\n return ProductComparisonButton._productComparisonPreview;\n }\n\n private static _renderProductComparisonButton(\n className: string,\n buttonText: string | undefined,\n title: string,\n onClickHandler?: () => void\n ): React.ReactNode {\n const isDisabled = ObjectExtensions.isNullOrUndefined(onClickHandler);\n let content: React.ReactNode;\n if (buttonText) {\n content = (\n <>\n
\n
{buttonText}
\n \n );\n }\n return (\n \n );\n }\n\n public constructor(props: IProductComparisonButtonFullProps) {\n super(props);\n\n this._className = 'ms-product-comparison-button';\n this._instanceId = `${this._className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n\n this.state = this._getNewState();\n\n this._shouldUsePreview = !ProductComparisonButton._productComparisonPreview;\n ProductComparisonButton._renderProductComparisonPreview(this.props);\n }\n\n public componentDidMount(): void {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this.setState(this._getNewState());\n }\n }\n );\n }\n\n public getSnapshotBeforeUpdate(previousProps: Readonly): void {\n if (previousProps.product.RecordId !== this.props.product.RecordId || previousProps.catalogId !== this.props.catalogId) {\n this.setState(this._getNewState());\n }\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode | null {\n const isConsentGiven = this.props.context.request.cookies.isConsentGiven();\n if (!isConsentGiven) {\n return null;\n }\n\n const viewProps: IProductComparisonButtonViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: this._className\n }\n };\n\n if (this._shouldUsePreview) {\n viewProps.productComparisonPreview = ProductComparisonButton._productComparisonPreview;\n }\n\n const buttonClassName = this.props.config.shouldDisplayText ? `${this._className}__button` : `${this._className}__icon`;\n\n if (!this.state.canProductBeAddedToProductComparison) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.removeFromComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n classnames(`${buttonClassName}__removing`, buttonClassName),\n buttonText,\n this.props.resources.removeFromComparisonButtonText,\n this._removeFromProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit) && productsLimit <= this.state.currentProductsCount) {\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonLimitReachedButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonLimitReachedButtonText\n );\n return this.props.renderView(viewProps);\n }\n\n const buttonText = this.props.config.shouldDisplayText ? this.props.resources.addToComparisonButtonText : undefined;\n viewProps.productComparisonButton = ProductComparisonButton._renderProductComparisonButton(\n buttonClassName,\n buttonText,\n this.props.resources.addToComparisonButtonText,\n this._addToProductComparison\n );\n return this.props.renderView(viewProps);\n }\n\n private _getProductsLimit(): number | undefined | null {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Adds current product to a product comparison list.\n */\n private readonly _addToProductComparison: () => void = () => {\n const item = new ProductComparisonItem(this.props.product.RecordId, this.props.catalogId);\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).addItem(item);\n };\n\n /**\n * Removes current product from the product comparison list where it was added earlier.\n */\n private readonly _removeFromProductComparison: () => void = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(\n this.state.comparisonItemId\n );\n };\n\n private _getProdutComparisonDataByCatalogId(): ProductComparisonItem[] {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const catalogId = getCatalogId(this.props.context.request);\n const productByCatalogId = items?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n\n /**\n * Retrieves the state of the component based on the comparison data.\n * @returns State object for the component.\n */\n private readonly _getNewState: () => IProductComparisonButtonState = () => {\n const comparisonItemId = ProductComparisonItem.getItemId(this.props.product.RecordId, this.props.catalogId);\n const products = this._getProdutComparisonDataByCatalogId();\n return {\n comparisonItemId,\n canProductBeAddedToProductComparison: !ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).hasItemById(comparisonItemId),\n currentProductsCount: products.length\n };\n };\n}\n\nexport default ProductComparisonButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductComparisonButtonViewProps } from './product-comparison-button';\n\n/**\n * Represents product comparison button view.\n * @param props - View props for product comparison button.\n * @returns Functional component of product comparison button.\n */\nexport const ProductComparisonButtonViewFunctionalComponent: React.FC = props => {\n const { productComparisonButton, productComparisonPreview } = props;\n\n return (\n \n {productComparisonButton}\n {productComparisonPreview}\n \n );\n};\n\nexport default ProductComparisonButtonViewFunctionalComponent;\n","/*!\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 { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\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 IContentBlockAdditionalContentItemViewProps,\n IContentBlockAdditionalContentViewProps,\n IContentBlockViewProps\n} from '@msdyn365-commerce-modules/content-block';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nconst contentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n // @ts-expect-error HTML element need to be clear on run time.\n const hasImage: boolean = image.props.src;\n const imageClass: string = hasImage ? `${detailsContainer.className} withImage` : `${detailsContainer.className} withoutImage`;\n\n if (imageLink) {\n return (\n \n \n {image}\n \n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default contentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n *\n * FooterItemView component.\n * @extends {React.PureComponent}\n */\nexport class FooterItemView extends React.PureComponent {\n public render(): JSX.Element | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { FooterItem } = this.props;\n return {this._renderElement(this.props)};\n }\n\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\n if (heading) {\n return (\n \n {' '}\n \n );\n } else if (Link && image) {\n return (\n \n {linkText}\n {image}\n \n );\n } else if (Link) {\n return EditableLink;\n }\n return (\n <>\n {text}\n {image}\n \n );\n }\n}\n\nexport default FooterItemView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\n"],"names":["OrderConfirmationOrderInfomation","_ref","orderInformationProps","React","Node","Object","assign","OrderConfirmationSalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","OrderConfirmationGroupDelivery","_ref3","deliveryProps","heading","count","processing","address","pickupDateTimeslot","trackingInfo","OrderConfirmationGroup","_ref4","groupProps","delivery","salesLinesProps","salesLines","map","key","data","LineId","OrderConfirmationGroups","_ref5","groupsProps","groups","group","index","OrderConfirmationOrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","OrderConfirmationPayment","_ref7","paymentMethodsProps","title","methods","OrderConfirmationHelp","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","moduleProps","backToShoppingLink","alert","loading","orderSummary","payment","help","Module","InvoiceListView","props","header","filter","content","invoiceRequestModal","pagination","MsDyn365","isBrowser","linksElements","document","querySelectorAll","console","log","forEach","l","setAttribute","renderThumbnailItem","thumbnail","ThumbnailItemContainerProps","Picture","GetEmptyThumbnailItemComponent","imageSettings","_props$config$thumbna2","tag","className","role","tabIndex","Image","requestContext","context","actionContext","src","gridSettings","request","config","thumbnailImageSettings","loadFailureBehavior","defaultThumbnailImageSettings","viewports","xs","q","w","h","xl","lazyload","cropFocalRegion","renderThumbnails","thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","state","Thumbnails","mediaGalleryItems","items","item","altText","getMediaGalleryItems","lastUpdate","id","GetThumbnailItemComponent","image","imageId","modifiedActiveIndex","_props$config$thumbna","onClick","_props$callbackToggle","_props$callbackThumbn","callbackToggle","call","callbackThumbnailClick","activeIndex","handleKeyDown","event","keyCode","KeyCodes","Enter","preventDefault","classnames","Button","onKeyDown","resources","fullScreenTitleText","CarouselProps","MediaGallery","Modal","OrderHistoryOrderInfomation","salesId","receiptId","channelName","createdDate","amount","OrderHistoryGroupDelivery","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","listProps","salesOrders","salesOrder","orderHistoryProps","emptyMessage","list","table","moreButton","buildReviewCard","isUserReview","cardProps","rating","date","name","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","undefined","wasReviewHelpfulText","like","dislike","edit","renderProductDescription","product","result","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","apiSettings","sm","md","lg","renderProductImage","Name","ItemId","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","ArrayExtensions","hasElements","isFilterApplied","review","reviewModal","modal","modalHeader","modalBody","form","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReviewModal","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","OrderConfirmationDetail","_salesOrder$ShippingA","_salesOrder$ShippingA2","_salesOrder$SalesLine","cultureFormatter","customer","deliveryMode","orderedProducts","attr","AttributeValues","find","s","window","print","TextValue","formatDate","CreatedDateTime","year","month","day","Comment","FirstName","AccountNumber","ShippingAddress","FullAddress","SalesLines","so","idx","LineNumber","itemId","_orderedProducts$find","p","Description","formatCurrency","Price","Quantity","TotalAmount","_rest$data$checkout$r","_rest$data$checkout$r2","rest","_objectWithoutProperties","_excluded","DLV_MODE_KEY","dlvMode","setDlvMode","checkout","sessionStorage","getItem","removeItem","customerInformation","channelReferenceId","AccountCustomerBalanceTile","constructor","super","this","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","_objectSpread","_initState","reaction","hasError","setState","ErrorComponent","value","apiGenericErrorMessage","get","isCustomerAccountPaymentEnabled","customerResult","allowOnAccountPayment","AllowOnAccountPayment","isB2BSite","isChannelTypeB2B","enableCustomerAccountPayment","shouldComponentUpdate","nextProps","nextState","render","links","viewProps","Heading","headingTag","text","isDetailsLinkDisplayed","LinksComponent","onTextChange","renderView","account","Balance","CreditLimit","InvoiceAccountBalance","InvoiceAccountCreditLimit","noCreditErrorMessage","accountCreditVerbagePrefix","accountCreditVerbagePostfix","currencyCode","customerCredit","customerCreditFormatted","toFixed","CreditComponent","verbagePrefix","verbagePostfix","__decorate","computed","_mapEditableLinks","linkdata","length","editableLinks","payLoad","getPayloadObject","link","contentAction","etext","linkText","attributes","getTelemetryAttributes","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","push","Msdyn365","editProps","SignUpText","LoyaltySignUp","handleHeadingChange","target","handleMemberHeadingChange","memberHeading","_issueLoyalty","user","isAuthenticated","clicked","input","IssueLoyaltyInput","issueLoyalty","then","location","catch","message","debug","TelemetryConstant","SignIn","loyaltySignInAttributes","SignUp","loyaltySignUpAttributes","LoyaltyDetailLink","loyaltyDetailsLinkAttributes","LoyaltyTermsLink","loyaltyTermsLinkAttributes","_data$customerInforma","_this$props$context$a","signInUrl","termsUrl","loyaltyJoinUrl","origin","signInurl","completeClass","classname","loyaltyCard","hasLoyaltyAccount","CardTenderTypeValue","invalidAsyncCustomerState","app","canRenderAsyncCustomerDataAsUnmodifiable","IsAsyncCustomer","infoMessageBar","accountProcessingPendingInfoMessage","params","isEditor","status","onEdit","signInLink","href","joinLoyaltyButtonText","signUpText","loyaltyProgramText","signUpButton","disabled","detailsLink","viewLoyaltyPageText","termsLink","loyaltyTermsLinkText","observer","LoyaltyTermsModal","LoyaltyTermsCancel","loyaltyTermCancelAttributes","LoyaltyTermsSubmit","loyaltyTermSubmitAttributes","LoyaltyTermsAgree","loyaltyTermCheckboxAttributes","toggle","onToggle","applicationNode","isOpen","returnFocusRef","returnRef","ModalHeader","ModalFooter","ModalBody","cancelLoyaltyTermsText","onSubmit","checked","joinLoyaltyTermsText","loyaltyTermsHeading","terms","agreeSection","checkbox","type","onChange","onCheck","agreeText","loyaltyAgreeToTerms","LoyaltyTerms","_toggle","bind","_submit","_checkboxChecked","toggleRef","search","url","requestUrl","isJoining","substring","qsps","split","qsp","splitQsp","isModalOpen","hideToggle","slots","serviceTerms","modalToggle","innerRef","joinLoyaltytermsToggleText","CardNumber","card","redirectToLoyalty","getUrlSync","getLoyaltyCardAsync","callerContext","fullCard","update","GetLoyaltyCardInput","CheckoutStateInput","_this","getCacheKey","buildCacheKey","getCacheObjectType","dataCacheType","createObservableDataAction","action","ctx","CheckoutState","inputData","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_customerReference","_customerRequisition","_note","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","prototype","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateShippingAddress","newShippingAddress","updateBillingAddress","newBillingAddress","updateCardPrefix","newCardPrefix","removeGiftCard","giftCardNumber","giftCard","Id","removeGiftCardExtend","addGiftCard","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","customerReference","customerRequisition","note","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","observable","EnabledPaymentsForOBO","ModuleStatesCacheKey","getModuleStates","cacheKey","moduleStates","updateModuleStates","WrappedComponent","_super","ModuleState","initializeState","_b","typeName","states","__assign","_a","hasInitialized","isRequired","isCancellable","isSubmitContainer","childIds","getModuleStateManager","moduleState","validate","isReady","isUpdating","isPending","isSkipped","isDisabled","isCancelAllowed","shouldSubmitContainer","hasExternalSubmitGroup","hasModuleState","setIsRequired","setIsCancellable","setIsSubmitContainer","setHasError","onReady","onUpdating","onPending","onSkip","onDisable","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","init","options","values","_moduleState","modules","_validateLeaf","source","module","isMatch","_validateContainer","allMatched","skipSkippableItem","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","includes","enableControl","__extends","CheckoutErrors","async","setCheckoutErrors","errorCode","isExpressCheckoutApplied","apiError","clientCheckoutError","consoleCheckoutErrors","checkoutState","getCheckoutState","exception","checkoutError","checkoutErrorsList","errorLocation","ErrorLocation","Console","consoleCheckoutError","errorMessageResource","Error","errorMessage","getCheckoutErrorMessage","CheckoutPaymentInstrument","Checkout","updateCheckoutError","newCheckoutError","updateShouldFocusOnCheckoutError","newShouldFocusOnCheckoutError","genericError","genericErrorMessage","focusOnCheckoutError","checkoutErrorRef","current","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","None","setCheckoutErrorFocus","checkoutModuleId","checkoutModule","keys","errorMessageFromAPI","errorResource","resource","ActionError","ErrorCode","ErrorMessageResource","checkoutTimeoutErrorMessage","Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard","blockedLoyaltyCardErrorMessage","CheckoutLoyalty","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue","customerAccountLimitSignDifferentFromAmountDueErrorMessage","CheckoutCustomerAccountPayment","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit","customerAccountPaymentExceedsAvailableCreditLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit","customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems","customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount","customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices","customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_FraudRisk","fraudRiskErrorMessage","Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed","giftCardBalanceInquiryFailedErrorMessage","CheckoutGiftCard","Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch","giftCardCurrencyMismatchErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion","invalidCartVersionErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber","invalidLoyaltyCardNumberErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest","invalidPaymentRequestErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console","invalidPaymentRequestConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines","missingRequiredCartTenderLinesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed","multipleCustomerAccountPaymentsNotAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender","noMoreThanOneLoyaltyTenderErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry","noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard","noTenderLoyaltyCardErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints","notEnoughRewardPointsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided","paymentAlreadyVoidedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance","paymentAmountExceedsGiftBalanceErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties","paymentRequiresMerchantPropertiesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console","paymentRequiresMerchantPropertiesConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount","paymentUsingUnauthorizedAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed","refundAmountMoreThanAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment","unableToAuthorizePaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired","unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported","unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment","unableToCancelPaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo","unableToReadCardTokenInfoErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult","unableToRetrieveCardPaymentAcceptResultErrorMessage","onAddAccountPayment","onAddPayment","onChangeAmountHandler","customizedAmt","paymentAmount","amountVariable","locale","onChangePaymentAmount","customState","customizedAmount","returnModifiedState","getLocaleBasedCustomizedPrice","getAccountPaymentFormEditMode","maxAmount","customerCreatedDate","availableCredit","showCreditLimit","onToggleCreditSection","creditSectionIsExpanded","orderTotal","excessCredit","onRemovePayment","appliedAmount","skipOnChangeLogic","addPaymentButtonLabel","inputAmountLabel","inputAmountAriaLabel","customerSinceLabel","accountCreditLabel","creditDetailsSectionLabel","orderTotalLabel","availableCreditLabel","creditExcessLabel","appliedCustomerAccountPaymentLabel","removeCustomerAccountPaymentLabel","accountCreditDetails","inputLabel","formProps","addPaymentButton","Number","isNaN","inputAmount","onInput","currentTarget","which","min","max","customerName","customerAccountNumber","customerSince","accountCredit","accountDetails","Alert","assertive","fade","includeAlertClass","appliedLine","bottomBorder","getAccountPaymentFormSummaryMode","inputAmountSummaryLabel","label","paymentAmountInput","defaultLocale","baseClassName","getAvailableCredit","creditBalances","PendingBalance","InvoiceAccountPendingBalance","addPayment","handleSaveAndContinue","_clearError","information","toggleCreditSection","isCreditSectionExpanded","onCancel","handleCancelOrSubmit","customerAccountAmount","updateMaxAmount","Math","toString","checkoutCart","cart","_setErrorMessage","invalidAmountForOBOMessage","isCheckoutCustomerAccountPaymentRequired","customerAccountCreditErrorMessage","removePayment","NaN","maxPaymentAmount","Intl","NumberFormat","format","customerInfo","b2bChannel","platform","getLoyaltyAmount","loyaltyAmount","_this$props$data$cust","amountDue","_this$props$data$cred","MandatoryCreditLimit","invalidAmountExceedAmountDueMessage","invalidAmountNegativeMessage","formattedExcessCredit","isDataReady","_this$props$data$chec","when","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec2","_this$props$data$chec3","checkoutErrorFocus","_this$props$data$cust2","_this$props$context$r","hasInvoiceLine","customerSinceDate","Date","toLocaleDateString","checkoutCustomerAccount","errorMessageTitle","editView","features","skipCheckoutOnChangeLogic","summaryView","withModuleState","SummaryForm","EditForm","ref","PickupTimeslotAvailabilityState","CheckoutPickupError","CheckoutPickupGroupHeader","moduleClassName","storeInfo","CheckoutPickupTimeslotInfo","CheckoutPickupAddress","Street","City","State","County","ZipCode","ThreeLetterISORegionName","CheckoutPickupCartLines","cartLines","prop","showQty","quantity","lineId","imageProps","DefaultImageSettings","quality","getDate","DateTimeFormat","timeZone","getTimeslot","placeHolder","startDate","endDate","useHour12TimeFormat","hour","minute","hour12","formatter","getUTCDateWithoutTime","UTC","getUTCFullYear","getUTCMonth","getUTCDate","CheckoutPickupDateDropdown","defaultKey","updateDateSelection","notification","pickupStoreId","setDateHandler","selectedOption","getDateMap","has","mapDatesToOptions","dates","selectedDate","defaultOption","unshift","findIndex","getTime","dropdownOptions","defaultText","Map","availableDates","set","labelClassname","labelText","dropdownId","controlledByParent","toggleColor","dropdownClassname","htmlFor","LabeledDropdown","onSelectOption","CheckoutPickupTimeslotDropdown","updateTimeslotSelection","setTimeslotHandler","getTimeslotMap","mapTimeslotsToOptions","timeslots","selectedTimeslot","timeslotPlaceHolder","StartDateTime","EndDateTime","_selectedTimeslot$Sta","_value$StartDateTime","_selectedTimeslot$End","_value$EndDateTime","availableTimeslots","CheckoutPickup","isLoading","initModuleState","canPickup","isPickupTimeSlotSet","updateCartLinePickupDateTimeslot","setError","isHeaderError","arguments","headerErrorMessage","clearError","initPickupGroup","_this$props","_featureState$result","pickupCartLines","getCartLinesforPickup","products","getProductsByCartLines","ChannelId","pickupGroups","locations","orgUnitLocations","featureState","deliveryOptions","retailMultiplePickUpOptionEnabled","feature","IsEnabled","line","x","FulfillmentStoreId","DeliveryMode","RecordId","ProductId","lineDeliverySpecification","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","PickUpStoreId","PickupTimeslotStartDateTime","PickupTimeslotEndDateTime","DeliveryAddress","lineDeliverySpecs","cartLine","OrgUnitNumber","storeName","getStoreName","newGroup","pickupModeName","getPickupModeDescription","generalPickupText","pickupAddress","availabilityState","dailyGroupingResults","searchCriteria","DeliveryModeCode","StoreId","SearchOptionValue","getEstimatedPickupTimeslotAvailabilitiesAsync","queryResultSettings","getPickupTimeslotAvailabilityState","NotAvailable","groupErrorMessage","noAvailableDateError","AvailableCapacity","timeslotResults","StartDate","EndDate","bypassCache","filteredPickupGroups","Available","validateTimeslot","lineSpecs","concat","lineDeliverySpecifications","_unused","channelId","productInputs","ObjectExtensions","isNullOrUndefined","ProductInput","getSimpleProducts","validationResult","dateErrorMessage","timeslotErrorMessage","pickupDateRequired","pickupTimeslotRequired","pickupDateTimeslotRequired","NotDefined","orgUnitLocation","_cartLine$ShippingAdd","OrgUnitName","every","_group$selectedTimesl","_group$selectedTimesl2","CartLines","isPickupLine","isPickupMode","_this$props2","_featureState$result2","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","channelDeliveryOptionConfig","_channelDeliveryOptio","pickupDeliveryMode","PickupDeliveryModeCodes","isNullOrWhiteSpace","resourceString","deliveryOption","_foundProductDelivery","_foundProductDelivery2","foundProductDeliveryOption","deliveryO","deliveryDesc","DeliveryOptions","option","Code","dailyResult","_countItems","cartlines","reduce","componentDidMount","_this$props$data$chec4","_this$props$data$chec5","pickupDateLabel","pickupTimeslotLabel","pickupDateDefaultText","pickupTimeslotDefaultText","itemsText","singleItemText","pickupDateTimeslotText","pickupTimeslotPlaceHolder","pickupLocationLabel","defaultClassName","groupsViewProps","_value$selectedTimesl","_value$selectedTimesl2","groupDivider","_line$product","_line$product2","_line$product3","_context$request$app","fallBackSrc","getFallbackImageUrl","OmniChannelMedia","numberOfCartLines","itemText","itemTitle","groupHeader","lineImageProps","cartLineImages","dateString","timeslotString","timeslotInfoProps","selectedDateTimeslotNode","addressProps","dropdownClassName","labelClassName","dropdownSelectClassName","dateDropdownNode","timeslotDropdownNode","viewProp","pickupGroupContainer","dateTimeslotContainer","pickupDateDropdown","pickupTimeslotDropdown","selectedDateTimeslot","isShowDropdown","isShowSelected","checkoutPickup","viewState","headerError","waiting","Waiting","pickupDate","oldGroup","lineSpec","noAvailableTimeslotError","pickupTimeslot","pickupGroupViewProps","isChecked","attribute","CheckoutTermsAndConditions","isTermsAccepted","handleTextChange","description","getTermsAndConditions","showCheckbox","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","termsAndConditionAcceptance","checkBox","CheckboxComponent","_data$checkout$result","isPaymentVerificationRedirection","getErrorMessage","ErrorTitleComponent","ErrorMessageComponent","getCancelButton","cancelBtnLabel","cancelBtnAriaLabel","color","getSaveButton","saveBtnLabel","saveBtnAriaLabel","getEditButton","editBtnLabel","editBtnAriaLabel","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","isShowButtons","showControlButtons","defaultTermsAndConditionAcceptedValue","_this$props$data$chec6","_this$props$data$chec7","_this$props$data$chec8","isError","isShowContent","errorMessageData","isShowSaveButton","isShowEditButton","isShowCancelButton","checkoutTermsAndConditions","termsAndConditionsContent","saveButton","editButton","onSave","TermsAndCondition","ErrorMessage","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","onClose","CookieComplianceLinks","onTelemetryClick","CookieCompliance","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","cookies","isConsentGiven","acceptCookiesAriaLabel","moduleConfig","onDismiss","CookieComplianceBanner","AlertProps","Content","acceptButton","setConsentCookie","reload","renderCustomerName","accountInformation","_renderReactFragment","slot","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","promotionalImage","promotionalContent","imageSrc","promotionalItemImageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","setTimeout","menuNode","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","navDrawerList","Array","from","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","defaultImageSettings","_categoryImage$imageS","ImageData","categoryImageSettings","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","isDrawerOpen","colProps","toggleButtonProps","collapseProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","i","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","round","_renderMenu","onFocus","hoverEffect","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","BackTopFooter","backtoTopText","destination","BackToTop","ProductComparisonButton","_addToProductComparison","_this$props$data$acco","ProductComparisonItem","catalogId","ProductComparisonState","instance","addItem","_removeFromProductComparison","_this$props$data$acco2","removeItemById","comparisonItemId","_getNewState","_this$props$data$acco3","getItemId","_getProdutComparisonDataByCatalogId","canProductBeAddedToProductComparison","hasItemById","currentProductsCount","_className","_instanceId","Random","Guid","generateGuid","_shouldUsePreview","_productComparisonPreview","_renderProductComparisonPreview","static","productComparisonPreview","onClickHandler","_this$props$data$acco4","listModifiedEvent","subscribe","instanceId","handler","getSnapshotBeforeUpdate","previousProps","_this$props$data$acco5","unsubscribe","buttonClassName","shouldDisplayText","removeFromComparisonButtonText","productComparisonButton","_renderProductComparisonButton","productsLimit","_getProductsLimit","addToComparisonLimitReachedButtonText","addToComparisonButtonText","viewport","isMobile","variant","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_this$props$data$acco6","_items$filter","getCatalogId","ProductComparisonButtonViewFunctionalComponent","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","renderAdditionalContent","additionalContent","_additionalContent$ad","additionalContentNode","additionalContentItems","additionalContentItemContainer","additionalContentItemLinks","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","imageAriaLabel","imageClass","FooterItemView","FooterItem","_renderElement","HeadingContainer","EditableLink","signInMessage","signInButton","paragraph","RichTextComponent"],"sourceRoot":""}