{"version":3,"file":"static/js/30.ac6d67f520062d0d47a9.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/components/cartlineitem.component.tsx?432c","webpack://Msdyn365.Commerce.Online/./src/themes/b2b/views/components/promocode.component.tsx?d99d","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/logo.tsx?f27e","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/nav-icon.tsx?2475","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.tsx?e91a","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.view.tsx?cf0f","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/order-template-list.tsx?86c4","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/orderTemplateList-status-message.tsx?183c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/create-order-template.tsx?ea38","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.tsx?18d0","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.view.tsx?103b","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/spinner.tsx?b423","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/add-line.tsx?5f8a","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/dropdown.tsx?1cba","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/not-found.tsx?392d","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/common/order-template-quantity.tsx?99a1","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-configuration.tsx?b256","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-list.tsx?4284","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/bulk-actions.tsx?dbe8","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-actions.tsx?8136","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines.tsx?3703","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines-status-message.tsx?2986","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-table-heading.tsx?665c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.tsx?4ecb","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.view.tsx?a45e","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/close-button.tsx?063b","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/links.tsx?2587","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/text.tsx?782b","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/promo-banner.tsx?9ee9","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/promo-banner.view.tsx?7f77","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://Msdyn365.Commerce.Online/./src/actions/submit-user-review.ts?ac78","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-user-review-input.ts?3afb","webpack://Msdyn365.Commerce.Online/./src/common/review-modal.tsx?54a9","webpack://Msdyn365.Commerce.Online/./src/common/rnrInterface.ts?f761","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/component/components.tsx?f324","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.tsx?f6bc","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.view.tsx?5bff","webpack://Msdyn365.Commerce.Online/./src/actions/report-review-concern.ts?bf43","webpack://Msdyn365.Commerce.Online/./src/actions/submit-helpfulness-vote.ts?a8ab","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/report-review-concern-input.ts?b071","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/components.tsx?033b","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/report-review-modal.tsx?53d3","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/review-card.tsx?6bbd","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-helpfulness-vote-input.ts?07aa","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.tsx?37e8","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.view.tsx?0e4a","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/components/components.tsx?3575","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.tsx?9afc","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.view.tsx?b867","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?15c5","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-item.tsx?d2da","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-status-message.tsx?cdb3","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.tsx?df8b","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.view.tsx?4d80","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product-v2.component.tsx?d155","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container-v2.view.tsx?6eaa","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { CartLine, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartlineResourceString: Interface for specifying the\r\n * resource strings that the component needs\r\n */\r\nexport interface ICartlineResourceString {\r\n /** Display string for discount label */\r\n discountStringText: string;\r\n /** String for size key */\r\n sizeString: string;\r\n /** String for color key */\r\n colorString: string;\r\n /** String associated with the configuration product dimension */\r\n configString: string;\r\n /** String for style key */\r\n styleString: string;\r\n /** String for amount key */\r\n amountString?: string;\r\n /** Display string for quantity label */\r\n quantityDisplayString: string;\r\n /** Display string for quantity label */\r\n inputQuantityAriaLabel: string;\r\n /** Aria label for the decrement button in quantity component */\r\n decrementButtonAriaLabel: string;\r\n /** Aria label for the increment button in quantity component */\r\n incrementButtonAriaLabel: string;\r\n /** original text screenreader */\r\n originalPriceText: string;\r\n /** current text screenreader */\r\n currentPriceText: string;\r\n /** shipping Charges Text */\r\n shippingChargesText: string;\r\n}\r\n\r\ninterface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n product: SimpleProduct;\r\n}\r\n\r\n/**\r\n * ICartLineProps: The props required to render cartLineitem\r\n */\r\nexport interface ICartLineProps extends IComponentProps {\r\n /** The flag to change the quantity component from interactible to static */\r\n disableQuantityInteractivity?: boolean;\r\n /** The primary image url */\r\n primaryImageUrl?: string;\r\n /** The product url */\r\n productUrl?: string;\r\n /** GridSettings for the product image in cartLine */\r\n gridSettings: IGridSettings;\r\n /** ImageSettings for the product image in cartLine */\r\n imageSettings: IImageSettings;\r\n /** Boolean flag to indicate if the item is out of stock */\r\n isOutOfStock?: boolean;\r\n /** Flag to make quantity section editable */\r\n isQuantityEditable?: boolean;\r\n /** Max quantity for line item */\r\n maxQuantity?: number;\r\n /** Current quantity for line item */\r\n currentQuantity?: number;\r\n /** Resource string for the component */\r\n resources: ICartlineResourceString;\r\n /** SalesLine flag */\r\n isSalesLine?: boolean;\r\n /** Error message to show in place of quantity */\r\n errorMessage?: string;\r\n /** Inventory information label */\r\n inventoryInformationLabel?: string;\r\n /** Inventory information class name */\r\n inventoryLabelClassName?: string;\r\n /** Flag to show/hide shipping charges for line items */\r\n showShippingChargesForLineItems?: boolean;\r\n /** Boolean flag to indicate if cart state status is ready */\r\n isCartStateReady?: boolean;\r\n /** Chanel Delivery Option configuration is from api. */\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n /** The telemetry content */\r\n telemetryContent?: ITelemetryContent;\r\n /** Quantity onChange callback */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number): boolean;\r\n}\r\n\r\ninterface IDimensionStrings {\r\n /** String for size key */\r\n sizeString: string;\r\n /** String for color key */\r\n colorString: string;\r\n /** String associated with the configuration product dimension */\r\n configString: string;\r\n /** String for style key */\r\n styleString: string;\r\n /** String for amount key */\r\n amountString?: string;\r\n}\r\n\r\nconst CartLineItemFunctions = {\r\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\r\n if (!Product || !Product.Dimensions) {\r\n return [];\r\n }\r\n\r\n return Product.Dimensions.map(productDimension => {\r\n if (productDimension.DimensionTypeValue === 1) {\r\n return (\r\n
\r\n \r\n {DimensionStrings.colorString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 2) {\r\n return (\r\n
\r\n \r\n {DimensionStrings.configString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 3) {\r\n return (\r\n
\r\n \r\n {DimensionStrings.sizeString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 4) {\r\n return (\r\n
\r\n \r\n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n });\r\n },\r\n renderDiscountLines: (props: ICartLineProps) => {\r\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\r\n return null;\r\n }\r\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\r\n return (\r\n
\r\n \r\n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\r\n \r\n \r\n \r\n \r\n {` (${discountLine.Percentage !== undefined ? discountLine.Percentage : ''}%)`}\r\n
\r\n );\r\n });\r\n },\r\n renderInventoryLabel: (props: ICartLineProps) => {\r\n if (!props.inventoryInformationLabel) {\r\n return null;\r\n }\r\n const inventoryCssName = props.inventoryLabelClassName\r\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\r\n : 'msc-cart-line__product-inventory-label';\r\n return {props.inventoryInformationLabel};\r\n },\r\n renderShippingLabel: (props: ICartLineProps) => {\r\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\r\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\r\n const cartline = props.data.cartLine;\r\n let hasShippingMethod = false;\r\n if (channelDeliveryOptionConfig !== undefined) {\r\n hasShippingMethod =\r\n !!cartline.DeliveryMode &&\r\n channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\r\n ? true\r\n : false;\r\n } else {\r\n hasShippingMethod = !!cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode ? true : false;\r\n }\r\n if (!hasShippingMethod) {\r\n return undefined;\r\n }\r\n\r\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\r\n\r\n if (shippingChargeLines.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\r\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\r\n }, 0);\r\n\r\n const priceComponent = (\r\n \r\n );\r\n return (\r\n <>\r\n \r\n {priceComponent}\r\n \r\n );\r\n },\r\n renderOtherCharges: (props: ICartLineProps) => {\r\n const cartline = props.data.cartLine;\r\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\r\n\r\n return (\r\n (otherCharges &&\r\n otherCharges.map((otherCharge, key) => {\r\n return otherCharge && otherCharge.CalculatedAmount ? (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n ) : (\r\n ''\r\n );\r\n })) ||\r\n undefined\r\n );\r\n }\r\n};\r\n\r\n// tslint:disable-next-line:max-func-body-length\r\nconst CartLine: React.FC = (props: ICartLineProps) => {\r\n const { isSalesLine, productUrl, resources } = props;\r\n const { product, cartLine } = props.data;\r\n\r\n const destructDimensionStrings = {\r\n sizeString: resources.sizeString,\r\n colorString: resources.colorString,\r\n styleString: resources.styleString,\r\n configString: resources.configString,\r\n amountString: resources.amountString\r\n };\r\n\r\n const fallbackImageUrl = product && getFallbackImageUrl(product.ItemId, props.context.actionContext.requestContext.apiSettings);\r\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\r\n const imageSettings = props.imageSettings;\r\n if (imageSettings) {\r\n imageSettings.cropFocalRegion = true;\r\n }\r\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\r\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\r\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\r\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\r\n const prodAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const productName = product?.Name || cartLine.Description;\r\n\r\n /** VSI Customization, COC don't add quantity feature */\r\n // const onChange = (newValue: number): boolean => {\r\n // if (props.quantityOnChange) {\r\n // return props.quantityOnChange(props.data.cartLine, newValue);\r\n // }\r\n // return true;\r\n // };\r\n\r\n const _generateErrorMessage = (): JSX.Element | null => {\r\n if (props.errorMessage) {\r\n return (\r\n
\r\n \r\n {props.errorMessage}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const _generateQuantityandPrice = (): JSX.Element[] | null => {\r\n const nodes = [];\r\n if (props.isOutOfStock) {\r\n const errorMessage = _generateErrorMessage();\r\n\r\n if (errorMessage) {\r\n return [errorMessage];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // No quantity selector for invoice line\r\n if (!props.data.cartLine.IsInvoiceLine) {\r\n if (props.isQuantityEditable) {\r\n /** VSI Customization, COC don't add quantity feature */\r\n /** Currently, we have all digital products but in the future, there is a chance we need this functionality for non-digital products.\r\n * For now, COC doesn't need this functionality. So, the functionality is commented. */\r\n // nodes.push(\r\n //
\r\n //
{resources.quantityDisplayString}
\r\n // {_generateErrorMessage()}\r\n // \r\n //
\r\n // );\r\n } else {\r\n /* VSI-Customization -- START Need to remove quantity from mini-cart */\r\n // nodes.push(\r\n //
\r\n // \r\n // {_generateErrorMessage()}\r\n // {props.data.cartLine.Quantity}\r\n //
\r\n // );\r\n /* VSI-Customization -- END */\r\n }\r\n }\r\n\r\n nodes.push(\r\n
\r\n \r\n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\r\n <>\r\n {` ${props.resources.discountStringText ||\r\n 'Discount'} `}\r\n \r\n \r\n )) ||\r\n null}\r\n
\r\n );\r\n\r\n return nodes;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {productName}\r\n \r\n {ArrayExtensions.hasElements(productDimensions) ? (\r\n
{productDimensions}
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n
\r\n {renderDisountLines}\r\n {renderInventoryLabel}\r\n {props.showShippingChargesForLineItems &&
{renderShippingLabel}
}\r\n {renderOtherCharges}\r\n
\r\n {_generateQuantityandPrice()}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CartLine;\r\n","import * as React from 'react';\r\n\r\nimport {\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nexport interface IPromoCodeProps extends IComponentProps<{}> {\r\n cart: ICartState | undefined;\r\n promoCodeHeadingText: string;\r\n appliedPromoCodeHeadingText: string;\r\n removePromoAriaLabelFormat: string;\r\n promoPlaceholderText: string;\r\n promoCodeApplyButtonText: string;\r\n collapseTimeOut: number;\r\n removePromoText: string;\r\n invalidPromoCodeErrorText: string;\r\n failedToAddPromoCodeErrorText: string;\r\n duplicatePromoCodeErrorText: string;\r\n failedToRemovePromoCodeErrorText: string;\r\n /** The telemetry content */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\ninterface IPromoCodeState {\r\n isCollapseOpen: boolean;\r\n promoCodeInputValue: string;\r\n error: string;\r\n canApply: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass PromoCode extends React.Component {\r\n private payLoad: IPayLoad;\r\n\r\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n isCollapseOpen: false,\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
{this.props.promoCodeHeadingText}
\r\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\r\n

\r\n {this.state.error}\r\n

\r\n {this._renderAppliedPromoCode(this.props)}\r\n
\r\n );\r\n }\r\n\r\n private _onInputChange = (e: React.ChangeEvent) => {\r\n const error = e.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: e.target.value,\r\n error: error,\r\n canApply: e.target.value ? true : false\r\n });\r\n };\r\n\r\n private _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart) {\r\n return;\r\n }\r\n const appliedPromo = this.state.promoCodeInputValue;\r\n\r\n cartState\r\n .addPromoCode({ promoCode: appliedPromo })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n // show success text\r\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\r\n } else if (result.substatus === 'ALREADYADDED') {\r\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\r\n } else {\r\n this.setState({ error: this.props.invalidPromoCodeErrorText });\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n private _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\r\n const _onSubmit = (event: React.FormEvent) => {\r\n event.preventDefault();\r\n this._applyPromotion(cartState);\r\n };\r\n const _applyPromotion = (event: React.MouseEvent) => {\r\n this._applyPromotion(cartState);\r\n };\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {promoCodeApplyButtonText}\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n private _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const code = event.currentTarget.getAttribute('data-value') || '';\r\n cartState\r\n .removePromoCodes({\r\n promoCodes: [code]\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n this.setState({ error: '' });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\r\n });\r\n };\r\n private _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\r\n return;\r\n }\r\n let discountAmount = 0;\r\n for (const line of cartState.cart.CartLines) {\r\n if (line.DiscountLines) {\r\n for (const discountLine of line.DiscountLines) {\r\n if (discountLine.DiscountCode === code) {\r\n discountAmount += discountLine.DiscountCost!;\r\n }\r\n }\r\n }\r\n }\r\n return discountAmount * -1;\r\n };\r\n\r\n private _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || !(props.cart.cart.Coupons.length > 0)) {\r\n return;\r\n }\r\n\r\n const _removePromotion = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n\r\n const promoCodTotalDiscount = props.cart.cart.Coupons.reduce((count: number, coupon: Coupon) => {\r\n return count + (this._calculateDiscount(coupon.Code || '', props.cart) || 0);\r\n }, 0);\r\n\r\n return (\r\n <>\r\n
\r\n
{this.props.appliedPromoCodeHeadingText}
\r\n \r\n
\r\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\r\n const ariaLabel = props.removePromoAriaLabelFormat\r\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\r\n : '';\r\n\r\n return (\r\n
\r\n
\r\n {coupon.Code} (\r\n \r\n )\r\n
\r\n \r\n {props.removePromoText}\r\n \r\n
\r\n );\r\n })}\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default PromoCode;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n /**\n * Handle click on the store selector.\n * @returns : Promise void.\n */\n public handleClick = () => {\n return this._findPreferredStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\n const storeName =\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\n ? storeSelectorStateManager.preferredStore.StoreName\n : resources.headerPreferredStoreText;\n\n return (\n
\n \n {storeName}\n \n {slots.storeSelector}\n
\n );\n }\n\n return undefined;\n }\n\n private async _findPreferredStoreOnClick(props: IHeaderProps): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n modules\n } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n await storeSelectorStateManager\n .openDialog({\n id: storeSelectorId,\n showMapViewLink: true,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n });\n }\n}\n\nexport default HeaderPreferredStore;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return
{this._renderLogo(this.props)}
;\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return this._renderImage(config);\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalHeader,\n onTelemetryClick,\n Popover,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n switchCustomerLink?: React.ReactNode;\n isOBORequest?: boolean;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n currentDistributor?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n private isB2BSite: boolean = false;\n\n /**\n * The signed-in user name displayed in the header bar\n */\n @computed public get displayName(): Readonly {\n return (\n (MsDyn365.isOboRequest(this.props.context.request) ? this.workerName : this.customerName) ||\n this.props.context.request?.user?.name\n );\n }\n\n /**\n * OBO scenario. The name of worker who shops on behalf of customer.\n */\n @computed public get workerName(): Readonly {\n const worker = this.props.data.employee?.result;\n return worker?.Name;\n }\n\n @computed public get customerName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n if (MsDyn365.isOboRequest(this.props.context.request)) {\n // For OBO scenario, display full customer name because multiple customers may have the same first name.\n return customer ? customer.Name : undefined;\n } else {\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n }\n\n public constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isB2BSite = isChannelTypeB2B(this.props.context.request);\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => {\n this.props.data.cart.result;\n },\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: { user }\n },\n resources: {\n signUpCustomerNotFoundTitle,\n signUpMultipleCustomerFoundTitle,\n signInCustomerNotAuthorizedTitle,\n closeNotificationLabel\n }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(\n user,\n signUpMultipleCustomerFoundTitle,\n signUpCustomerNotFoundTitle,\n signInCustomerNotAuthorizedTitle\n );\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation, wishlists },\n context: {\n request: { user }\n },\n context,\n resources: { cartLabel, cartQtyLabel }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n const currentDistributorSlot = this._getSlot('distributorSelector');\n if (wishlists !== undefined) {\n if (\n !wishlists.result ||\n !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines ||\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\n ) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...this.state,\n logo: (\n \n ),\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\n cartIconSlot[0]\n ) : (\n \n ),\n navIcon: (\n \n ),\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n 'aria-label': this.props.resources.headerAriaLabel,\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: ,\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: this.displayName\n ? {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n }\n : undefined,\n signInLink: this._getSigninButton(user, this.props.resources),\n signOutLink: this._getSignOutButton(user, this.props.resources),\n isOBORequest: MsDyn365.isOboRequest(this.props.context.request),\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && ,\n currentDistributor: this.isB2BSite && ArrayExtensions.hasElements(currentDistributorSlot) ? currentDistributorSlot : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - Link Index.\n * @returns : Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.myAccountLinks?.[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Get the slot.\n * @param slotName - Name of the slot.\n * @returns The slot.\n */\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n /**\n * Renders the sign in button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n !this.displayName && (\n \n \n {resources.signInLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSwitchCustomerButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const isOBOAccountSelected =\n MsDyn365.isOboRequest(this.props.context.request) && this.props.context.request.cookies.getAccountSelectionCookie();\n return (\n this.displayName &&\n isOBOAccountSelected && (\n this.props.context.request.cookies.removeAccountSelectionCookie()}\n {...attributes}\n >\n
\n
{format(resources.shoppingAsText, this.customerName)}
\n
{resources.switchCustomerLinkText}
\n
\n \n )\n );\n }\n\n private getBusinessPartnerSelectionUrl(): string | undefined {\n const route = MsDyn365.getUrlSync('businessPartnerSelection', this.props.context.actionContext);\n if (!route || !MsDyn365.msdyn365Commerce.isBrowser) {\n return undefined;\n }\n\n // MsDyn365.getUrlSync persists some params in the route and remove other params.\n // Among the persisted params, we need to remove catalogid.\n const persistedParamToRemove = ['catalogid'];\n const url = new URL(route, window.location.href);\n persistedParamToRemove.forEach(param => url.searchParams.delete(param));\n return url.href;\n }\n\n private _getSigninNotification(\n user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string,\n signUpCustomerNotFoundTitle: string,\n signInCustomerNotAuthorizedTitle: string\n ): string | undefined {\n if (!user?.retailServerErrorCode) {\n return undefined;\n }\n\n const { signUpCustomerNotFound, signUpMultipleCustomerFound, signInCustomerNotAuthorized } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n const accountAuthorizationError = 'Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n } else if (user?.retailServerErrorCode === accountAuthorizationError) {\n return signInCustomerNotAuthorized !== undefined ? signInCustomerNotAuthorized : signInCustomerNotAuthorizedTitle;\n }\n return user?.retailServerErrorMessage;\n }\n\n private _getAccountInfoDropdownButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n
\n
{this.displayName}
\n {MsDyn365.isOboRequest(this.props.context.request) && this.customerName && (\n
{format(resources.shoppingAsText, this.customerName)}
\n )}\n
\n \n )\n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(event: KeyboardEvent): void {\n if (event.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\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 { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {props.currentDistributor}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n {props.MobileMenuHeader}\n {_renderReactFragment(props.menuBar)}\n \n {props.accountLinks ? props.accountLinks.map(link => link) : false}\n {props.siteOptions}\n {props.wishListIconMobile}\n {props.signInLink}\n {props.signOutLink}\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map(link => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return {signInLink};\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\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 { AddOrderTemplateToCartComponent, ILinesAddedToCartDialogResources } from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductList, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getFallbackImageUrl,\n getProductUrlSync,\n OrderTemplate,\n OrderTemplateLine,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateActionMessageState } from '../order-template-list';\n\nexport interface ISingleOrderTemplateProps extends ProductList {\n orderTemplateState: IOrderTemplateActionMessageState;\n name?: string;\n orderTemplate: OrderTemplate;\n context: ICoreContext;\n imageSettings?: IImageSettings;\n enableImageProductLink?: boolean;\n removeFromOrderTemplateListText: string;\n addToBagText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n handlers: {\n onRemoveOrderTemplate(id: string): void | undefined;\n onDismiss(): void;\n };\n resources: {\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n telemetryContent?: ITelemetryContent;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n}\n\nexport interface ISingleOrderTemplateViewProps {\n key: string;\n orderTemplateImage: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n orderTemplateStatusMessage?: React.ReactNode;\n orderTemplateName?: React.ReactNode;\n orderTemplateAriaLabel?: string;\n orderTemplateHeaderDivider?: React.ReactNode;\n}\n\nconst _removeItemFromOrderTemplateList = (props: ISingleOrderTemplateProps): void => {\n const { onRemoveOrderTemplate } = props.handlers;\n const { itemKey } = props;\n\n onRemoveOrderTemplate && itemKey && onRemoveOrderTemplate(itemKey);\n};\n\nconst OrderTemplateActions = {\n removeOrderTemplate: _removeItemFromOrderTemplateList\n};\n\n/**\n * Remove order template action.\n * @param input -Single order template props.\n * @returns Set remove order template.\n */\nconst removeOrderTemplateActionHandler = (input: ISingleOrderTemplateProps) => () => {\n OrderTemplateActions.removeOrderTemplate(input);\n};\n\nexport const OrderTemplateRender = (input: ISingleOrderTemplateProps): ISingleOrderTemplateViewProps | null => {\n const {\n Id,\n orderTemplate,\n removeFromOrderTemplateListText,\n orderTemplateState,\n handlers,\n name,\n imageSettings,\n context,\n telemetryContent,\n enableImageProductLink\n } = input;\n\n if (!Id) {\n return null;\n }\n\n const _getOrderTemplatePageUrl = (): string => {\n const url = getUrlSync('ordertemplate', context.actionContext) ?? '';\n const separator = url.includes('?') ? '&' : '?';\n if (Id) {\n return `${url}${separator}id=${Id}`;\n }\n return '';\n };\n\n const { onDismiss } = handlers;\n\n return {\n key: `${Id}-template`,\n orderTemplateImage: _renderOrderTemplateImages(context, orderTemplate.orderTemplateLines, imageSettings, enableImageProductLink),\n orderTemplateAriaLabel: _renderAriaLabel(input),\n orderTemplateName: (\n
\n \n
\n {orderTemplate.totalLines}\n {` `}\n line items\n
\n
\n
\n ),\n addToCartButton: (\n
\n \n
\n ),\n removeButton: (\n \n ),\n orderTemplateStatusMessage: orderTemplateState && orderTemplateState.isOpen && orderTemplateState.userMessage && (\n
\n \n {orderTemplateState.userMessage}\n \n
\n )\n };\n};\n\n/**\n * On image click handler.\n * @param productUrl -Product url value.\n * @returns Assign window location.\n */\nconst onClickHandler = (productUrl: string) => () => {\n window.location.assign(productUrl);\n};\n\nconst _renderOrderTemplateImages = (\n context: ICoreContext,\n orderTemplateLines?: OrderTemplateLine[],\n imageSettings?: IImageSettings,\n enableImageProductLink?: boolean\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n if (orderTemplateLines) {\n const count = orderTemplateLines.length < 4 ? orderTemplateLines.length : 4;\n\n return (\n
\n {orderTemplateLines?.slice(0, count).map(line => {\n const productUrl = line.fullProduct\n ? _updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line?.productListLine?.CatalogId)\n : '';\n\n return (\n \n );\n })}\n
\n );\n }\n return
;\n};\n\n// This method is used to update the product url with the catalogId\nconst _updateProductUrlCatalog = (productDetails: SimpleProduct, context: ICoreContext, catalogId: number | undefined): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return fullUrl.href;\n }\n return productUrl;\n};\n\nconst _renderAriaLabel = (props: ISingleOrderTemplateProps): string => {\n const { name } = props;\n return `${name}`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateListStatus } from '../order-template-list';\n\nexport interface IOrderTemplateListStatusMessageProps {\n className?: string;\n errorType: orderTemplateListStatus;\n text?: string;\n}\n\nexport const OrderTemplateListStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

;\n case 'LOADING':\n default:\n return

{text}

;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport React, { useState } from 'react';\n\nconst modalCloseButtonReference: React.RefObject = React.createRef();\n\n/**\n * The Create Order Template Button Props.\n */\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\n /**\n * The label for create order template.\n */\n createOrderTemplateText: string;\n\n /**\n * The create order template dialog resources.\n */\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\n\n /**\n * The delegate to fire when dialog captured any user entry.\n */\n onOrderTemplateCreated(): Promise;\n}\n\nconst CreateOrderTemplateButton: React.FC = props => {\n const onCancelHandler = React.useCallback(() => {\n return;\n }, []);\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\n const onCreateButtonClick = React.useCallback(() => {\n setOrderTemplateNameDialogOpen(true);\n }, []);\n\n return (\n <>\n \n {props.createOrderTemplateText}\n \n \n \n );\n};\n\nexport default CreateOrderTemplateButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport Spinner from '../order-template/components/add-line/spinner';\nimport {\n ISingleOrderTemplateProps,\n ISingleOrderTemplateViewProps,\n OrderTemplateListStatusMessage,\n OrderTemplateRender\n} from './components';\nimport CreateNewTemplateButtonComponent from './components/create-order-template';\nimport { IOrderTemplateListData } from './order-template-list.data';\nimport { HeadingTag, IOrderTemplateListProps, IOrderTemplateListResources } from './order-template-list.props.autogenerated';\n\nexport interface IOrderTemplateActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n headerStatusMessage: string;\n}\n\nexport type orderTemplateListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\n\nexport interface IOrderTemplateListViewProps extends IOrderTemplateListProps {\n OrderTemplateList: IModuleProps;\n status?: orderTemplateListStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplates?: INodeProps;\n OrderTemplate?: INodeProps;\n orderTemplates?: ISingleOrderTemplateViewProps[];\n createOrderTemplateButton?: React.ReactNode;\n templateHeaderStatusMessage?: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateList component.\n * @extends {React.PureComponent, IOrderTemplateListActionMessageState>}\n */\n@observer\nclass OrderTemplateList extends React.Component, IOrderTemplateActionMessageState> {\n constructor(props: IOrderTemplateListProps) {\n super(props);\n this.state = {\n itemKey: '',\n userMessage: '',\n headerStatusMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false\n };\n }\n\n public async componentDidMount(): Promise {\n this.setState({});\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateListProps,\n nextState: IOrderTemplateActionMessageState\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 { className, heading } = this.props.config;\n const { emptyOrderTemplateText, createNewTemplateButtonText } = this.props.resources;\n const { orderTemplates } = this.props.data;\n const orderTemplatesData = orderTemplates && orderTemplates.result;\n const orderTemplateListHeading = heading?.text ?? this.props.resources.orderTemplateListTitle;\n\n if (orderTemplates.status === 'LOADING') {\n const errorProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: (\n \n )\n };\n return this.props.renderView(errorProps);\n }\n\n if (orderTemplatesData && orderTemplatesData.length === 0) {\n // When no order templates are found for customer\n const emptyViewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'EMPTY',\n statusMessage: ,\n createOrderTemplateButton: (\n \n ),\n heading: (\n \n )\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'SUCCESS',\n heading: ,\n createOrderTemplateButton: (\n \n ),\n templateHeaderStatusMessage: this.state.isOpen && this.state.headerStatusMessage && (\n
\n \n {this.state.headerStatusMessage}\n \n
\n ),\n OrderTemplates: {\n className: 'ms-order-template__list-item',\n tag: 'ul'\n },\n OrderTemplate: {\n className: 'ms-order-template__tile',\n tag: 'li'\n },\n orderTemplates: orderTemplatesData && this._renderOrderTemplateList(orderTemplatesData)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private _renderOrderTemplateList(orderTemplates: OrderTemplate[]): ISingleOrderTemplateViewProps[] {\n const { context, telemetry } = this.props;\n const { imageSettings, enableImageProductLink } = this.props.config;\n return orderTemplates.map((orderTemplate: OrderTemplate, index) => {\n const currentTemplateProps: ISingleOrderTemplateProps = {\n orderTemplateState: this.state,\n Id: orderTemplate.productList.Id,\n name: orderTemplate.productList.Name,\n orderTemplate,\n context,\n imageSettings,\n enableImageProductLink,\n removeFromOrderTemplateListText: 'remove',\n addToBagText: this.props.resources.addToBagButtonText,\n index,\n itemKey: orderTemplate.productList.Id,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n handlers: {\n onRemoveOrderTemplate: this._onRemoveFromOrderTemplateList,\n onDismiss: this._onDismiss\n },\n resources: {\n closeWindowButtonText: this.props.resources.closeWindowButtonText,\n addToCartFailureMessage: this.props.resources.addToCartFailureMessage,\n addToCartSuccessMessage: this.props.resources.addToCartSuccessMessage,\n addToCartProcessMessage: this.props.resources.addToCartProcessMessage,\n orderTemplateErrorMessage: this.props.resources.orderTemplateErrorMessage,\n linesAddedToCartDialogResources: {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n }\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled()\n };\n\n return OrderTemplateRender(currentTemplateProps)!;\n });\n }\n\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _reloadPage = async () => {\n window.location.reload();\n };\n\n private readonly _onRemoveFromOrderTemplateList = (productListId: string): void | undefined => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplates } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplates.result && orderTemplates.result[0] && productListId) {\n const orderTemplate = orderTemplates.result.find(p => p.productList.Id === productListId);\n if (orderTemplate) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: productListId,\n headerStatusMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n })\n .then(this._reloadPage)\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n });\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template.');\n }\n }\n };\n}\n\nexport default OrderTemplateList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISingleOrderTemplateViewProps } from './components';\nimport { IOrderTemplateListViewProps } from './order-template-list';\n\nexport const OrderTemplateListView: React.FC = props => {\n const {\n OrderTemplateList,\n status,\n statusMessage,\n heading,\n OrderTemplates,\n orderTemplates,\n OrderTemplate,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {createOrderTemplateButton}\n {templateHeaderStatusMessage}\n \n {OrderTemplates && orderTemplates && orderTemplates.length > 0 && (\n \n {orderTemplates &&\n orderTemplates.map(orderTemplate => {\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n \n );\n};\n\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\nexport default OrderTemplateListView;\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 default (props: { className: string; msg?: string }) => (\n <>\n
\n {props?.msg &&
{props?.msg}
}\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addItemToOrderTemplate,\n AddItemToOrderTemplateInput,\n ArrayExtensions,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getSelectedVariant,\n SelectedVariantInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalHeader, getPayloadObject, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport React from 'react';\n\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\nimport Spinner from './spinner';\n\nexport interface IAddLineToTemplateProps {\n context: ICoreContext;\n resources: IAddLineToTemplateResources;\n orderTemplateId: string;\n imageSettings?: IImageSettings;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n catalogs?: ProductCatalog[] | undefined;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IAddLineToTemplateResources {\n addLineModalLinkText: string;\n searchButtonAriaLabel: string;\n searchInputAriaLabel: string;\n searchModalPlaceholderText: string;\n selectCatalogTitleText: string;\n selectProductButtonText: string;\n addItemToTemplateText: string;\n addLineProductUnitPricePrefix: string;\n backButtonText: string;\n decrementButtonAriaLabel: string;\n incrementButtonAriaLabel: string;\n quantitySelectLabel: string;\n addLineProductUnitOfMeasurePrefix: string;\n notFoundSearchErrorNotice: string;\n notFoundSearchErrorRedediation: string;\n searchErrorMessage: string;\n productDimensionTypeColor: string;\n productDimensionTypeConfiguration: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n searchResultsCountVerbage: string;\n searchResultsCountSubject: string;\n addToTemplateConfirmation: string;\n totalPriceLabel: string;\n progressNotificationText: string;\n addToTemplateDuplicateError: string;\n addToTemplateGenericError: string;\n dimensionMissingError: string;\n backToResultsText?: string;\n}\n\nenum CONTENT {\n Search,\n ProductList,\n ProductConfiguration,\n NotFound,\n Error,\n Loading\n}\n\ninterface IAddLineToTemplateState {\n isOpen: boolean;\n query: string;\n products: ProductSearchResult[];\n productCatalogs: ProductCatalog[] | null;\n content: number;\n selectedProduct: SimpleProduct | null;\n selectedCatalogId: number | undefined;\n selectedProductDimensions?: ProductDimensionFull[];\n selectedQuantity?: number;\n reloadPage?: boolean;\n}\n\n/**\n * Add Lines to order template.\n */\nexport class AddLineToTemplate extends React.Component {\n public state: IAddLineToTemplateState = {\n isOpen: false,\n query: '',\n products: [],\n productCatalogs: [],\n content: CONTENT.Search,\n selectedProduct: null,\n selectedCatalogId: 0\n };\n\n public defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\n\n private readonly addLineButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAddLineToTemplateProps) {\n super(props);\n }\n\n public onComponentDidMount(): void {\n this.searchTextInput.current?.focus();\n }\n\n public componentDidMount(): void {\n this._getCatalogs();\n }\n\n public onComponentDidUpdate(): void {\n this.searchTextInput.current?.focus();\n }\n\n @computed get showBackArrow(): boolean {\n return this.state.content === CONTENT.ProductConfiguration;\n }\n\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n resources: { addLineModalLinkText, backToResultsText }\n } = this.props;\n\n const modalProps = {\n ...this.props,\n className: 'msc-add-line-to-template',\n toggle: this._toggleModalHandler,\n isOpen: this.state.isOpen,\n ariaLabel: addLineModalLinkText\n };\n\n return (\n <>\n \n \n {this.showBackArrow && (\n \n )}\n {addLineModalLinkText}\n \n {this._renderContent()}\n \n \n \n {addLineModalLinkText}\n \n \n );\n }\n\n private readonly _renderSearchForm = () => {\n const {\n resources: { searchButtonAriaLabel, searchModalPlaceholderText, selectCatalogTitleText }\n } = this.props;\n\n return (\n \n {this.state.productCatalogs && ArrayExtensions.hasElements(this.state.productCatalogs) && (\n <>\n \n \n {this._getCatalogNodes()}\n \n \n )}\n
\n \n
\n \n );\n };\n\n private readonly _onSearchSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n\n const query = get(this, 'searchTextInput.current.value', null);\n\n if (!query) {\n return;\n }\n\n this.setState({\n content: CONTENT.Loading\n });\n\n this._getSearchResults(query)\n .then(result => {\n if (result.length === 0) {\n this.setState({\n products: result,\n content: CONTENT.NotFound\n });\n } else {\n this.setState({\n products: result,\n content: CONTENT.ProductList\n });\n }\n })\n .catch(error => {\n this.setState({\n content: CONTENT.Error\n });\n });\n };\n\n private readonly _onQuantityChangeHandler = (event: React.ChangeEvent) => {\n this.setState({\n selectedQuantity: +event.target.value\n });\n };\n\n private readonly _onSelectItem = async (product: ProductSearchResult): Promise => {\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = this.props.context;\n const varianteInput = new SelectedVariantInput(product.RecordId, channelId, [], undefined, this.props.context.request);\n const productVariant = await getSelectedVariant(varianteInput, actionContext);\n\n if (!productVariant) {\n this.props.context.telemetry.error('Error retrieving product variant');\n return Promise.resolve([]);\n }\n\n const dimensions = await this._getProductDimensions(product as SimpleProduct);\n\n this.setState({\n selectedProductDimensions: dimensions,\n content: CONTENT.ProductConfiguration,\n selectedProduct: productVariant\n });\n\n return dimensions;\n };\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n this.setState({\n query: event.target.value\n });\n };\n\n private readonly _onBackButtonClickHandler = (): void => {\n this.setState({\n content: CONTENT.ProductList\n });\n };\n\n private readonly _highlightSearchTerm = (name: string) => {\n const parsedName = name && unescape(name.replace(new RegExp(this.state.query, 'i'), '$&'));\n\n return (\n \n );\n };\n\n private readonly _resultCountText = (): string => {\n return this.props.resources.searchResultsCountVerbage\n .replace('{count}', this.state.products.length.toString())\n .replace('{subject}', `${this.props.resources.searchResultsCountSubject}${this.state.products.length > 1 ? 's' : ''}`);\n };\n\n private _renderContent(): React.ReactNode | null {\n switch (this.state.content) {\n case CONTENT.ProductConfiguration:\n const { selectedProduct, selectedProductDimensions } = this.state;\n const viewProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n product: selectedProduct!,\n dimensions: selectedProductDimensions!,\n addToTemplateHandler: this._addItemToTemplateHandler,\n onQuantityChangeHandler: this._onQuantityChangeHandler,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm()\n };\n\n return ;\n\n case CONTENT.ProductList:\n const productProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n clickHandler: this._onSelectItem,\n products: this.state.products,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm(),\n renderResultCountText: this._resultCountText\n };\n\n return (\n \n \n \n );\n\n case CONTENT.Loading:\n return (\n \n {this._renderSearchForm()}\n \n \n );\n\n case CONTENT.NotFound:\n const { notFoundSearchErrorNotice, notFoundSearchErrorRedediation } = this.props.resources;\n\n return (\n \n

{this._resultCountText()}

\n {this._renderSearchForm()}\n \n
\n );\n\n case CONTENT.Error:\n return (\n \n {this._renderSearchForm()}\n
\n {this.props.resources.searchErrorMessage}\n
\n
\n );\n\n default:\n return {this._renderSearchForm()};\n }\n }\n\n private readonly _addItemToTemplateHandler = async (config: IProductConfigurationState): Promise => {\n const {\n orderTemplateId,\n context: { actionContext },\n isMultipleCatalogFeatureEnabledInHq\n } = this.props;\n const catalogId = this.state.selectedCatalogId;\n const input = isMultipleCatalogFeatureEnabledInHq\n ? new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea',\n isMultipleCatalogFeatureEnabledInHq,\n catalogId\n )\n : new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea'\n );\n const result = await addItemToOrderTemplate(input, actionContext);\n this.setState({\n isOpen: false,\n reloadPage: true\n });\n // reload when closing\n window.location.reload();\n return result;\n };\n\n /**\n *\n * Get all active product catalogs.\n */\n private _getCatalogs(): void {\n const { isMultipleCatalogFeatureEnabledInHq, catalogs } = this.props;\n\n // if Channel Multiple Catalogs Feature is enabled then show all catalogs.\n const productCatalogs = isMultipleCatalogFeatureEnabledInHq && catalogs ? catalogs : [];\n\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n // set the current catalog id as a default selected catalog id from the url\n this.setState({\n productCatalogs: productCatalogs,\n selectedCatalogId: catalogId\n });\n }\n\n private _getCatalogNodes(): JSX.Element[] | null {\n const { productCatalogs, selectedCatalogId } = this.state;\n if (productCatalogs && ArrayExtensions.hasElements(productCatalogs)) {\n return productCatalogs.map((productCatalog: ProductCatalog) => {\n // initially select default catalog in dropdown\n const isSelected = productCatalog.RecordId === selectedCatalogId;\n return (\n \n );\n });\n }\n return [];\n }\n\n private readonly _onCatalogSelectionChange = (event: React.ChangeEvent) => {\n this.setState({\n selectedCatalogId: Number.parseInt(event.target.value, 10)\n });\n };\n\n private _getSearchResults(searchText: string): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { selectedCatalogId } = this.state;\n const searchCriteriaInput: ProductSearchCriteria = {};\n\n searchCriteriaInput.Context = {\n ChannelId: channelId,\n CatalogId: selectedCatalogId\n };\n\n if (process.env.NODE_ENV === 'development' && process.env.ENABLE_CLOUD_SEARCH?.toLowerCase() !== 'true') {\n searchCriteriaInput.IncludeAttributes = false;\n } else {\n searchCriteriaInput.IncludeAttributes = true;\n }\n searchCriteriaInput.SearchCondition = searchText;\n\n return searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\n }\n\n private async _getProductDimensions(product: SimpleProduct): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const id = product.MasterProductId ? product.MasterProductId : product.RecordId;\n\n return getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(id, channelId, [], this.props.context.request),\n actionContext\n );\n }\n\n private readonly _toggleModalHandler = () => {\n if (this.state.isOpen) {\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'add-item-to-template', '');\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'add-item-to-template');\n this._getCatalogs();\n this.addLineButtonRef.current!.focus();\n }\n\n this.setState({\n isOpen: !this.state.isOpen,\n content: CONTENT.Search\n });\n\n if (this.state.reloadPage) {\n window.location.reload();\n this.setState({\n reloadPage: false\n });\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IDropdownState {\n /**\n * @friendlyName selectedIndex\n * @description Selected index.\n */\n selectedIndex: string;\n}\n\nexport interface IDropdownProps {\n dropdownId: number;\n dropdownName: string;\n dropdownList: IDropdownItemProps[];\n telemetryContent?: ITelemetryContent;\n onChange?(selection: IDropdownOnSelection): void;\n}\n\nexport interface IDropdownItemProps {\n value: string;\n id: number;\n}\n\nexport interface IDropdownOnSelection {\n dropdownId: number;\n selectId: string;\n selectedValue: string;\n}\n\n/**\n *\n * DropDown component.\n * @extends {React.PureComponent}\n */\nexport class Dropdown extends React.PureComponent {\n private readonly selectMenu: React.RefObject = React.createRef();\n\n constructor(props: IDropdownProps, state: IDropdownState) {\n super(props);\n this.state = {\n selectedIndex: ''\n };\n }\n\n public componentDidMount(): void {\n if (this.selectMenu.current) {\n this.selectMenu.current.selectedIndex = 0;\n }\n }\n\n public render(): JSX.Element {\n const { dropdownId, dropdownList, dropdownName } = this.props;\n\n return (\n \n {dropdownList.map(\n (item: IDropdownItemProps) =>\n item && (\n \n {item.value}\n \n )\n )}\n \n );\n }\n\n private readonly _onChanged = (event: React.ChangeEvent): void => {\n this.setState({ selectedIndex: event.target.value });\n\n if (this.props.onChange) {\n this.props.onChange({\n dropdownId: this.props.dropdownId,\n selectId: event.target.value,\n selectedValue: event.target.innerText\n });\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport const NotFoundComponent = (props: { error: string; msg: string }) => (\n <>\n
\n
{props.error}
\n
{props.msg}
\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { debounce } from 'lodash';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\ninterface IQuantityProps {\n min?: number;\n max: number;\n currentCount?: number;\n disabled?: boolean;\n incrementGlyphClass?: string;\n decrementGlyphClass?: string;\n decrementButtonAriaLabel?: string;\n incrementButtonAriaLabel?: string;\n inputQuantityAriaLabel?: string;\n id?: string;\n onChange?(newValue: number): void;\n}\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class OrderTemplateQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount || 1 };\n this._handleChange = this._handleChange.bind(this);\n\n reaction(\n () => this.props.currentCount,\n () => {\n this.setState({ currentInput: this.props.currentCount || 1 });\n }\n );\n }\n\n public render(): JSX.Element {\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const disabled = this.props.currentCount === this.props.min;\n const incDisabled = this.props.currentCount === this.props.max;\n const currentValue = this.state.currentInput;\n let extraClass = '';\n if (disabled) {\n // The quantity has reached its boundaries (max or min)\n extraClass = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClass = 'transition';\n }\n const getChangeHandler = (amount: number) => () => {\n this._onIncrementalChange(amount);\n };\n\n return (\n
\n \n \n \n \n \n \n \n
\n );\n }\n\n private _onIncrementalChange(amount: number): void {\n const updatedQuantity = this.state.currentInput + amount;\n\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\n this.props.onChange && this.props.onChange(updatedQuantity);\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.props.onChange && this.props.onChange(minValue);\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\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 { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getFallbackImageUrl,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getSelectedVariant,\n IProductInventoryInformation,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport OrderTemplateQuantity from '../common/order-template-quantity';\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\n\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n imageSettings: IImageSettings;\n telemetryContent?: ITelemetryContent;\n searchForm: React.ReactNode;\n addToTemplateHandler(params: IProductConfigurationState): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n}\n\nexport interface IProductConfigurationState {\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n selectedDimensions: {};\n productAvailableQuantity?: IProductInventoryInformation;\n buttonDisabled: boolean;\n showAddConfirmation: boolean;\n errorMessage?: string;\n isBusy: boolean;\n errors: { dimension?: string[]; add?: string };\n}\n\n/**\n * Configure selected product for addition to order template.\n */\nexport class ProductConfiguration extends React.Component {\n private selectedDimensions: {} = {};\n\n constructor(props: IProductCnnfigurationProps) {\n super(props);\n\n this.state = {\n quantity: 1,\n unitPrice: props.product.Price,\n totalPrice: props.product.Price,\n product: props.product,\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n selectedDimensions: {},\n buttonDisabled: false,\n showAddConfirmation: false\n } as IProductConfigurationState;\n }\n\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings }\n },\n resources: {\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n totalPriceLabel\n },\n imageSettings,\n highlightSearchTerm\n } = this.props;\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\n const isMultipleCatalogSelect = this.props.isMultipleCatalogFeatureEnabledInHq ? 'isMultipleCatalogSelect' : '';\n return (\n <>\n \n {this.props.searchForm}\n
\n
\n
\n \n
\n
{product?.ItemId}
\n {highlightSearchTerm(product?.Name ?? '')}\n
\n {addLineProductUnitPricePrefix}\n {` `}\n {this._formatPrice(unitPrice)}\n
\n
\n {addLineProductUnitOfMeasurePrefix}\n {` `}\n {product?.DefaultUnitOfMeasure}\n
\n
\n
\n
{this._getDimensionsNodes()}
\n
\n
\n
{quantitySelectLabel}
\n \n
\n
\n
\n {totalPriceLabel}\n {` `}\n {this._formatPrice(totalPrice)}\n
\n
\n \n {showAddConfirmation && (\n \n
\n )}\n {errors?.add && (\n
\n
\n )}\n \n {addItemToTemplateText}\n \n \n \n );\n }\n\n private _getConfirmationMessage(): string {\n const selectedDimensionNames = this.state.dimensions\n .map(dimension => {\n let variant = dimension.DimensionValues?.find(\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\n )?.Value;\n if (dimension.DimensionTypeValue === 3) {\n variant = `size ${variant}`;\n }\n return variant;\n })\n .filter(value => value);\n\n return this.props.resources.addToTemplateConfirmation\n .replace('{count}', this.state.quantity.toString())\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\n }\n\n private _getDimensionsNodes(): React.ReactElement[] {\n const { dimensions } = this.state;\n const { resources } = this.props;\n\n return dimensions?.map((dimension: ProductDimensionFull) => {\n const { DimensionValues, DimensionTypeValue } = dimension;\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\n id: value.RecordId,\n value: value.Value || ''\n });\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\n\n return (\n
\n
{dimensionName}
\n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\n \n \n \n )}\n \n
\n );\n });\n }\n\n private readonly _getDimensionsError = (dimensionName: string) =>\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\n\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\n // Hide confirmation of previous addition when adding multiple items\n this.setState({\n isBusy: true,\n showAddConfirmation: false,\n errors: { ...this.state.errors, add: undefined }\n });\n\n const missingDimensions = this.state.dimensions\n .map(dimension => dimension.DimensionTypeValue.toString())\n .filter(type => !this.selectedDimensions[type]);\n\n this.setState({\n errors: { dimension: missingDimensions }\n });\n if (missingDimensions.length > 0) {\n this.setState({\n isBusy: false\n });\n return;\n }\n\n this.props\n .addToTemplateHandler({ ...this.state })\n .then(status => {\n // Validate against the existance of a ProductListId\n if (status.ProductListId) {\n this.setState({\n isBusy: false,\n showAddConfirmation: true\n });\n }\n })\n .catch(error => {\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\n let errorMessage;\n\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n errorMessage = addToTemplateDuplicateError;\n } else {\n errorMessage = addToTemplateGenericError;\n }\n\n this.setState({\n isBusy: false,\n errors: { ...this.state.errors, add: errorMessage }\n });\n this.props.context.telemetry.error('Error adding item to order template');\n });\n };\n\n private readonly _onQuantityChange = (newValue: number) => {\n this.setState({\n quantity: newValue,\n totalPrice: newValue * this.props.product.Price\n });\n };\n\n private readonly _updateDimensionValue = (\n productDimensionFull: ProductDimensionFull,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n // Rehydrate the selected variants price, available dimensions & sizes\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\n const { product, dimensions, context } = this.props;\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = context;\n\n // Remaining error notifications for missing dimensions\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\n\n this.setState({\n isBusy: false,\n showAddConfirmation: false,\n buttonDisabled: true,\n errors: { add: undefined, dimension: remainingDimensionsErrors }\n });\n\n // Update currently selected dimensions\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\n\n const mappedDimensions = dimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\n dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension && dimension.DimensionValue;\n });\n\n const variantProduct = await getSelectedVariant(\n new SelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n\n if (!variantProduct) {\n this.props.context.telemetry.error(\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\n );\n return;\n }\n\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\n variantProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n );\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\n\n if (!variantDimensions) {\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId\n );\n\n // @TODO sync UX quantity w/ actual availability\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\n\n if (!productPrice) {\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n this.setState({\n buttonDisabled: false,\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\n unitPrice: +(productPrice.BasePrice || product.Price),\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n product: variantProduct\n });\n };\n\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\n switch (dimensionType) {\n case 1: // Color\n return resources.productDimensionTypeColor;\n case 2: // Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // Size\n return resources.productDimensionTypeSize;\n case 4: // Style\n return resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private _formatPrice(price: number): string {\n const {\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n\n return formatCurrency(price.toFixed(2), currencyCode);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { IAddLineToTemplateProps } from '.';\n\nexport interface IProductListProps extends IAddLineToTemplateProps {\n products: ProductSearchResult[];\n imageSettings: IImageSettings;\n searchForm: React.ReactNode;\n clickHandler(product: ProductSearchResult): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n renderResultCountText(): string;\n}\n\nexport const ProductList = (props: IProductListProps) => {\n const {\n products,\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n clickHandler,\n highlightSearchTerm,\n renderResultCountText,\n resources: { selectProductButtonText },\n imageSettings\n } = props;\n\n return (\n <>\n

\n {renderResultCountText()}\n

\n {props.searchForm}\n
\n {products.map((product: ProductSearchResult, index: number) => {\n const { Price, ItemId, Name, PrimaryImageUrl } = product;\n const price = formatCurrency(Price.toFixed(2), currencyCode);\n const primaryImageSource = generateImageUrl(PrimaryImageUrl ?? '', apiSettings) ?? '';\n const fallBackImg = getFallbackImageUrl(ItemId, apiSettings, props.context.request.app?.config?.OmniChannelMedia) ?? '';\n\n return (\n
\n
\n \n
\n
{ItemId}
\n {highlightSearchTerm(Name ?? '')}\n
\n
\n
\n {price}\n \n
\n
\n );\n })}\n
\n \n );\n};\n\ninterface IProductSelectButton {\n product: ProductSearchResult;\n buttonText: string;\n clickHandler(product: ProductSearchResult): Promise;\n}\n\nconst ProductSelectButton = (props: IProductSelectButton) => {\n const [isBusy, setBusy] = useState(false);\n const { product, buttonText, clickHandler } = props;\n const getClickHandler = React.useCallback(async () => {\n setBusy(!isBusy);\n await clickHandler(product);\n setBusy(!isBusy);\n }, [clickHandler, isBusy, product]);\n\n return (\n \n {buttonText}\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 { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport { IOrderTemplateData } from '../order-template.data';\nimport { IOrderTemplateProps } from '../order-template.props.autogenerated';\nimport { AddLineToTemplate } from '.';\n\ninterface IOrderTemplateBulkActionsProps extends IOrderTemplateProps {\n orderTemplateId: string;\n selectedLines: IOrderTemplateLineViewModel[];\n isMinifiedView: boolean;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n telemetryContent?: ITelemetryContent;\n onAddSelectionToBag(): void;\n onRemoveSelection(): void;\n}\n\ninterface IOrderTemplateBulkActionsState {\n isAddDisabled: boolean;\n isRemoveDisabled: boolean;\n}\n\n/**\n * Bulk Order Template line actions.\n */\nexport class OrderTemplateBulkActions extends React.PureComponent {\n public state: IOrderTemplateBulkActionsState = {\n isAddDisabled: true,\n isRemoveDisabled: true\n };\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateBulkActionsProps,\n state: IOrderTemplateBulkActionsState\n ): IOrderTemplateBulkActionsState {\n const selectedLines = props.selectedLines.length;\n let nextState = { ...state };\n nextState = {\n isAddDisabled: selectedLines === 0,\n isRemoveDisabled: selectedLines === 0\n };\n return nextState;\n }\n\n public render(): JSX.Element {\n const {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n addSelectedToBagButtonText,\n removeSelectedToBagButtonText,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n } = this.props.resources;\n\n const addLineProps = {\n context: this.props.context,\n telemetryContent: this.props.telemetryContent,\n resources: {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n },\n imageSettings: this.props.config.imageSettings,\n orderTemplateId: this.props.orderTemplateId,\n isMultipleCatalogFeatureEnabledInHq: this.props.isMultipleCatalogFeatureEnabledInHq,\n catalogs: this.props.data.catalogs?.result\n };\n\n return (\n <>\n \n \n \n {!this.props.isMinifiedView && addSelectedToBagButtonText}\n \n \n \n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\n \n \n );\n }\n\n private readonly addHandler = (event: React.MouseEvent) => {\n this.setState({\n isAddDisabled: true\n });\n\n this.props.onAddSelectionToBag();\n\n this.setState({\n isAddDisabled: false\n });\n };\n\n private readonly removeHandler = (event: React.MouseEvent) => {\n this.setState({\n isRemoveDisabled: true\n });\n\n this.props.onRemoveSelection();\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddOrderTemplateToCartComponent,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n RenameOrderTemplateComponent,\n OrderTemplateNameDialog\n} from '@msdyn365-commerce/components';\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\nimport { OrderTemplate, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nexport interface IOrderTemplateActionsData {\n orderTemplate: OrderTemplate;\n}\n\nexport interface IOrderTemplateActionsProps extends IComponentProps {\n context: ICoreContext;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onRemoveTemplate(orderTemplateId: string): void;\n onRenameTemplate(orderTemplate: ProductList): Promise;\n };\n renameOrderTemplateDialogStrings: IOrderTemplateNameDialogResources;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n resources: {\n addTemplateToBagButtonText: string;\n renameTemplateButtonText: string;\n deleteTemplateButtonText: string;\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n}\n\nexport interface IOrderTemplateActionsViewProps {\n addTemplateToBag: React.ReactNode;\n renameTemplate?: React.ReactNode;\n removeTemplate?: React.ReactNode;\n isMultipleCatalogsFeatureEnabled?: boolean;\n actionsSplitButton?: React.ReactNode;\n}\n\n/**\n * Remove Order Action.\n * @param props -Order template action props.\n * @returns Remove order template.\n */\nconst removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\n _removeOrderTemplate(props);\n};\n\nexport const OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\n const { resources, isMultipleCatalogFeatureEnabledInHq } = props;\n const { deleteTemplateButtonText } = resources;\n\n return {\n addTemplateToBag: _getOrderTemplateAddToCartDialog(props),\n renameTemplate: !isMultipleCatalogFeatureEnabledInHq && _getOrderTemplateRenameControl(props),\n removeTemplate: !isMultipleCatalogFeatureEnabledInHq && (\n \n ),\n actionsSplitButton: isMultipleCatalogFeatureEnabledInHq && \n };\n};\n\nconst _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\n const {\n data: { orderTemplate },\n handlers\n } = props;\n const { onRemoveTemplate } = handlers;\n\n if (onRemoveTemplate) {\n onRemoveTemplate(orderTemplate.productList.Id);\n }\n};\n\nconst _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const {\n data: { orderTemplate },\n typeName,\n id,\n context,\n telemetryContent,\n resources,\n isMultipleCatalogFeatureEnabledInHq\n } = props;\n const {\n addTemplateToBagButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n } = resources;\n\n const dialogStrings = {\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n };\n\n return (\n \n );\n};\n\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\n return (\n \n );\n};\n\nlet buttonEventReference: HTMLButtonElement | undefined;\nexport const ActionsSplitButton: React.FC = (props: IOrderTemplateActionsProps) => {\n const [isStatementRequestAdminDropdownOpen, setIsStatementRequestAdminDropdownOpen] = useState(false);\n const [renameOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = React.useState(false);\n\n const onOrderTemplateNameCancel = () => {\n context.telemetry.debug('Rename of template was canceled.');\n buttonEventReference?.focus();\n };\n\n const onRenameButtonClick = (event: React.MouseEvent) => {\n buttonEventReference = event.target as HTMLButtonElement;\n setOrderTemplateNameDialogOpen(true);\n event.preventDefault();\n };\n const onToggleDropdown1 = () => {\n setIsStatementRequestAdminDropdownOpen(!isStatementRequestAdminDropdownOpen);\n };\n const {\n data: { orderTemplate },\n resources,\n renameOrderTemplateDialogStrings,\n context\n } = props;\n\n const className = 'ms-order-template-action-bar';\n\n const popoverReference = React.createRef();\n const renderModalPopup = (\n \n );\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n\n return (\n
\n {renderModalPopup}\n \n {'Options'}\n \n \n \n\n \n {'Delete'}\n \n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport OrderTemplateQuantity from './common/order-template-quantity';\n\nexport interface IOrderTemplateLineProps extends ProductListLine {\n orderTemplateLine: IOrderTemplateLineViewModel;\n productListLine: ProductListLine;\n price?: ProductPrice;\n context: ICoreContext;\n productUrl: string;\n imageSettings?: IImageSettings;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n quantity: number;\n isQuantityDisabledForUpdate?: boolean;\n handlers: {\n onAddToBag(product: SimpleProduct, quantity: number, itemKey: string, catalogId?: number | undefined): void;\n onRemoveItem(line: IOrderTemplateLineViewModel): void;\n onChangeQuantity(orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps): void;\n onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void;\n };\n resources: {\n selectOneRowText?: string;\n moreButtonText?: string;\n viewProductDetailsText?: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n inputQuantityAriaLabel: string;\n removeFromOrderTemplateLinesText: string;\n addToBagButtonText: string;\n deleteButtonText: string;\n incrementButtonAriaLabel?: string;\n decrementButtonAriaLabel?: string;\n editOrderTemplateLineQuantityError?: string;\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n index: number;\n isMobile: boolean;\n productQuantityView?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n toggleDetailsDisplayed(props: IOrderTemplateLineProps): void;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n catalogs?: ProductCatalog[];\n error?: string;\n shouldDisable?: boolean;\n}\n\nexport interface IOrderTemplateLineViewProps {\n key?: string;\n productImage: React.ReactNode;\n productPrice?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productName?: string;\n productNumber?: React.ReactNode;\n productInfo?: React.ReactNode;\n productLabel?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n productQuantity?: number;\n productQuantityView?: React.ReactNode;\n productListId?: string;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n extraActionsPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalog?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface IEventHandlerFactory {\n getAddToBag(): (event: React.MouseEvent) => void;\n getRemoveItem(): (event: React.MouseEvent) => void;\n}\n\nconst OrderTemplateLineActions = (props: IOrderTemplateLineProps): IEventHandlerFactory => {\n const { orderTemplateLine, productListLine, quantity, handlers } = props;\n const { LineId, CatalogId } = productListLine;\n const { onAddToBag, onRemoveItem } = handlers;\n\n return {\n getAddToBag: () => (event: React.MouseEvent) => {\n LineId &&\n orderTemplateLine.fullProduct &&\n onAddToBag(orderTemplateLine.fullProduct.ProductDetails, quantity, LineId, CatalogId);\n },\n getRemoveItem: () => (event: React.MouseEvent) => LineId && onRemoveItem(props.orderTemplateLine)\n };\n};\n\ninterface IPopupProps extends IOrderTemplateLineProps {\n addButtonClassName: string;\n removeButtonClassName: string;\n}\n\nconst PopUp = (props: IPopupProps): JSX.Element | null => {\n const { addToBagButtonText, removeFromOrderTemplateLinesText, moreButtonText, viewProductDetailsText } = props.resources;\n const [showMobile, setShowMobile] = useState(false);\n const componentClassName = 'ms-table';\n\n const getViewHandler = () => (event: React.MouseEvent) => {\n props.toggleDetailsDisplayed(props);\n };\n\n const toggle = React.useCallback(() => {\n setShowMobile(!showMobile);\n }, [showMobile]);\n\n return (\n
\n \n {showMobile && (\n
\n \n View\n \n {getActionButton(\n props.isMobile,\n props.removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(props).getRemoveItem()\n )}\n {getActionButton(\n props.isMobile,\n props.addButtonClassName,\n addToBagButtonText,\n OrderTemplateLineActions(props).getAddToBag()\n )}\n
\n )}\n
\n );\n};\n\nconst getActionButton = (\n isMobile: boolean,\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n\nconst getDesktopActionButton = (\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n/**\n * On Select line function.\n * @param orderTemplateLine -Order template line.\n * @param input -Order template line props.\n * @returns Set on select order template.\n */\nconst onSelectLineHandler = (orderTemplateLine: IOrderTemplateLineViewModel, input: IOrderTemplateLineProps) => (\n event: React.ChangeEvent\n) => {\n orderTemplateLine.isChecked = !orderTemplateLine.isChecked;\n\n input.handlers.onSelect(orderTemplateLine, event.target.checked);\n};\n\nexport const OrderTemplateLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | null => {\n const {\n orderTemplateLine,\n productListLine,\n price,\n context,\n imageSettings,\n quantity,\n resources,\n isMobile,\n isMultipleCatalogFeatureEnabledInHq\n } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n const { removeFromOrderTemplateLinesText, addToBagButtonText, selectOneRowText } = resources;\n if (!product) {\n return null;\n }\n\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n const addButtonClassName = input.isMobile ? 'ms-table__row-links-add' : 'ms-order-template-table-line__product-add-button';\n const removeButtonClassName = input.isMobile ? 'ms-table__row-links-delete' : 'ms-order-template-table-line__product-remove-button';\n\n return {\n isMobile,\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogFeatureEnabledInHq,\n selectLine: (\n \n ),\n key: LineId!,\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'ms-order-template-table-line__product-image',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: product && (\n <>\n
{ItemId}
\n {input.error !== 'NONE' ? (\n
{_renderProductError(input)}
\n ) : (\n undefined\n )}\n \n ),\n productUnitOfMeasure: price ? (\n
{UnitOfMeasure || price.UnitOfMeasure}
\n ) : (\n undefined\n ),\n productListId: LineId!,\n removeButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(\n input.isMobile,\n removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(input).getRemoveItem()\n ),\n productQuantityView:
{_generateQuantity(input, LineId!)}
,\n productQuantity: quantity,\n addToBagButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(input.isMobile, addButtonClassName, addToBagButtonText, OrderTemplateLineActions(input).getAddToBag()),\n extraActionsPopup:\n !isMobile && isMultipleCatalogFeatureEnabledInHq ? (\n \n ) : (\n undefined\n ),\n popUp: ,\n disabled: input.shouldDisable\n };\n};\n\nconst ExtraActionsPopup = (props: IPopupProps): JSX.Element | null => {\n const [showActions, setShowActions] = useState(false);\n const toggle = React.useCallback(() => {\n setShowActions(!showActions);\n }, [showActions]);\n\n const className = 'ms-order-template-table-line__extra-actions-cell';\n const actionsContainerClassName = `${className}__actions-container`;\n return (\n
\n
\n );\n};\n\nexport const OrderTemplateMobileLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | undefined => {\n const { orderTemplateLine, productListLine, price, context, imageSettings, isMultipleCatalogFeatureEnabledInHq } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n if (!product) {\n return;\n }\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n\n return {\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'thumbnail',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: ItemId,\n productUnitOfMeasure: UnitOfMeasure || price?.UnitOfMeasure,\n productQuantityView: _generateQuantity(input, LineId!)\n };\n};\n\nexport interface IOrderTemplateProductQuantityViewProps {\n ContainerProps: INodeProps;\n input: React.ReactNode;\n}\n\n/**\n * On Change function.\n * @param onChangeQuantity -On change quantity function.\n * @param itemKey -String.\n * @param props -Order template line props.\n * @returns Set change quantity.\n */\nconst onChangeHandler = (\n onChangeQuantity: (orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps | undefined) => void,\n itemKey: string,\n props: IOrderTemplateLineProps\n) => (newValue: number) => {\n if (onChangeQuantity) {\n onChangeQuantity(itemKey, newValue, props);\n }\n};\n\nconst _generateQuantity = (props: IOrderTemplateLineProps, itemKey: string): React.ReactNode => {\n const { handlers, resources, quantity } = props;\n const { onChangeQuantity } = handlers;\n return (\n \n );\n};\n\nexport const _renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n};\n\nexport const renderProductCatalog = (props: IOrderTemplateLineProps) => {\n const catalogId = props.productListLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.catalogs)) {\n return null;\n }\n\n const catalog = props.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst _renderPrice = (props: IOrderTemplateLineProps): JSX.Element | null => {\n const { price, context, moduleId, moduleTypeName, resources } = props;\n\n if (price) {\n return (\n \n );\n }\n return null;\n};\n\nconst _renderProductDimensions = (props: IOrderTemplateLineProps): (string | undefined)[] => {\n const { orderTemplateLine } = props;\n\n if (!orderTemplateLine.fullProduct || !orderTemplateLine.fullProduct.ProductDetails.Dimensions) {\n return [];\n }\n\n return orderTemplateLine.fullProduct.ProductDetails.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n\n return dimension.DimensionValue.Value;\n });\n};\n\nconst _renderProductError = (props: IOrderTemplateLineProps) => {\n const { error, resources } = props;\n\n if (!error) {\n return '';\n }\n\n const errorMessages = {\n OOS: resources.outOfStockProductErrorMessage,\n UNASSORTED: resources.unavailableProductErrorMessage,\n NONE: ''\n };\n\n return errorMessages[error];\n};\n\nexport const renderProductInfo = (props: IOrderTemplateLineProps): React.ReactNode | undefined => {\n const { orderTemplateLine, productUrl } = props;\n const name = orderTemplateLine.fullProduct?.ProductDetails.Name;\n\n const dimensions = _renderProductDimensions(props);\n if (!orderTemplateLine.fullProduct) {\n return [];\n }\n\n const productName = productUrl ? (\n \n {name}\n \n ) : (\n
{name}
\n );\n\n const dimensionsLine: string = dimensions.join(', ');\n\n return (\n
\n
{productName}
\n
{dimensionsLine}
\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateLinesStatus } from '../order-template';\n\nexport interface IOrderTemplateLinesStatusMessageProps {\n className?: string;\n errorType: orderTemplateLinesStatus;\n text?: string;\n}\n\nexport const OrderTemplateLinesStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

;\n case 'LOADING':\n default:\n return

{text}

;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\n\nexport interface IOrderTemplateTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productUOM: string;\n productQuantity: string;\n productActions: string;\n lines: IOrderTemplateLineViewModel[];\n isMobile: boolean;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalogName?: string;\n}\n\n/**\n * Order Template's table state.\n */\nexport interface IOrderTemplateTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IOrderTemplateTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Order Template's table heading.\n */\nexport class OrderTemplateTableHeading extends React.PureComponent {\n public state: IOrderTemplateTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateTableHeadingProps,\n state: IOrderTemplateTableHeadingState\n ): IOrderTemplateTableHeadingState {\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\n let nextState = { ...state };\n nextState = { isChecked: checkedLines === 0 };\n return nextState;\n }\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: this.state.isChecked\n },\n () => {\n this.props.clickHandler(!this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n return (\n \n \n \n \n \n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\n {this.props.productLineCatalogName}\n ) : null}\n {!this.props.isMobile ? {this.props.productImage} : null}\n {this.props.productNumber}\n {!this.props.isMobile ? {this.props.productName} : null}\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\n {!this.props.isMobile ? {this.props.productUOM} : null}\n {!this.props.isMobile ? {this.props.productQuantity} : null}\n {!this.props.isMobile ? {this.props.productActions} : }\n \n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IItemAddedToCartDialogData,\n IItemAddedToCartDialogResources,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n ItemAddedToCartDialog\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport {\n deleteAsync,\n removeProductListLinesAsync,\n updateProductListLinesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FeatureState, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n createGetFeatureStateInput,\n getFeatureState,\n getPriceForSelectedVariant,\n getProductUrlSync,\n ObjectExtensions,\n OrderTemplate,\n OrderTemplateLine,\n PriceForSelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n UncontrolledPagination\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport { action, computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n IOrderTemplateActionsProps,\n IOrderTemplateActionsViewProps,\n IOrderTemplateLineProps,\n IOrderTemplateLineViewProps,\n IOrderTemplateTableHeadingProps,\n OrderTemplateActionsView,\n OrderTemplateLinesStatusMessage,\n OrderTemplateLineView,\n OrderTemplateMobileLineView,\n OrderTemplateTableHeading\n} from '../..';\nimport { ActiveOrderTemplateLinesInput } from './actions/get-order-template';\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\nimport { IOrderTemplateData } from './order-template.data';\nimport { IOrderTemplateProps, IOrderTemplateResources } from './order-template.props.autogenerated';\nimport Spinner from './components/add-line/spinner';\n\nexport interface IOrderTemplateLineActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n isItemAddedToOrderTemplateOpen: boolean;\n isConfirmAddSelectionToBagModalOpen: boolean;\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\n productSelection: IOrderTemplateLineViewModel[];\n isDetailsDisplayed: boolean;\n detailedProductView?: IOrderTemplateLineViewProps;\n isQuantityDisabledForUpdate?: boolean;\n}\n\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface IOrderTemplateViewProps extends IOrderTemplateProps {\n OrderTemplateLines: IModuleProps;\n callbacks?: IOrderTemplateLinesCallbacks;\n status?: orderTemplateLinesStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplateActions?: INodeProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductDetails?: INodeProps;\n orderLines?: IOrderTemplateLineViewProps[];\n productListLines?: ProductListLine[];\n productsStatusMessage?: React.ReactNode;\n orderActions?: IOrderTemplateActionsViewProps | null;\n resources: IOrderTemplateResources;\n pagination?: React.ReactNode;\n itemAddedToCartDialog?: React.ReactNode;\n bulkOrderLineActions?: React.ReactNode;\n isDetailsDisplayed?: boolean;\n detailedProduct?: IOrderTemplateLineProps;\n detailedProductView?: IOrderTemplateLineViewProps;\n productQuantityView?: React.ReactNode;\n addButton?: React.ReactNode;\n isMobile?: boolean;\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\n}\n\nexport interface IOrderTemplateLinesCallbacks {\n updateQuantity(itemKey: string, quantity: number): void;\n}\n\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\n isChecked: boolean;\n productQuantityView: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateLines component.\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\n */\n@observer\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\n private readonly className: string;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n constructor(props: IOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\n super(props);\n this.className = 'ms-order-template';\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n\n this.state = {\n itemKey: '',\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: false,\n isConfirmAddSelectionToBagModalOpen: false,\n productSelection: [],\n isDetailsDisplayed: false,\n isQuantityDisabledForUpdate: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\n window.location.assign(this.props.context.request.user.signInUrl || '/');\n }\n }\n\n @action\n public async componentDidMount(): Promise {\n this.setState({});\n const orderTemplate = await this.props.data.orderTemplate;\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\n this.setState({\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\n });\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateProps,\n nextState: IOrderTemplateLineActionMessageState\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 { heading, className } = this.props.config;\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\n const { orderTemplate, cart } = this.props.data;\n\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(this.className, className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n return this.props.renderView(errorProps);\n }\n\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'FAILED',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n\n return this.props.renderView(errorProps);\n }\n\n const orderTemplateResult = orderTemplate && orderTemplate.result;\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\n\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\n window.location.href = this._getOrderTemplatePageUrl();\n return null;\n }\n\n const emptyViewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'EMPTY',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources,\n orderActions:\n orderTemplateResult &&\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n }\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'SUCCESS',\n productsStatusMessage: this.state.isOpen && (\n
\n \n {this.state.userMessage}\n \n
\n ),\n heading: heading && ,\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n },\n ProductsTable: {\n className: `${this.className}__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `${this.className}-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\n ProductDetails: {\n className: `${this.className}-table-line__link`,\n tag: 'a'\n },\n orderLines: this._renderProductList(),\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n pagination: this._renderPagination(),\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n isDetailsDisplayed: this.state.isDetailsDisplayed,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n detailedProductView: this.state.detailedProductView,\n isMobile: this.isMobile\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\n line.isChecked = isChecked;\n\n const updated =\n this.state.productSelection.map(product => {\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\n line.isChecked = isChecked;\n }\n return product;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n public onSelectAll(isChecked: boolean): void {\n const updated =\n this.state.productSelection.map(line => {\n line.isChecked = isChecked;\n return line;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n private _renderProductListHeader(resources: IOrderTemplateResources): React.ReactNode {\n const {\n productImage,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productActionsText,\n selectAllRowsText,\n productLineCatalogName\n } = resources;\n const headers: IOrderTemplateTableHeadingProps = {\n productImage: productImage,\n productNumber: productNumberText,\n productName: productText,\n productUnitPrice: productUnitPriceText,\n productUOM: productUOMText,\n productQuantity: productQuantityText,\n productActions: productActionsText,\n selectAllRowsText,\n lines: this.state.productSelection,\n isMobile: this.isMobile,\n clickHandler: (isChecked: boolean) => {\n this.onSelectAll(isChecked);\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n productLineCatalogName: productLineCatalogName\n };\n\n return ;\n }\n\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\n return (\n line.isChecked)}\n onAddSelectionToBag={this._onAddSelectionToBag}\n onRemoveSelection={this._onRemoveSelection}\n isMinifiedView={this.isMobile}\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\n telemetryContent={this.telemetryContent}\n />\n );\n }\n\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n };\n }\n\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\n freePriceText: this.props.resources.freePriceText,\n originalPriceText: this.props.resources.originalPriceText,\n currentPriceText: this.props.resources.currentPriceText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private readonly _onRemoveSelection = (): void => {\n const { context, resources } = this.props;\n const { telemetry } = context;\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\n const lines = this.state.productSelection;\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\n\n if (productListLines && productListLines.length > 0) {\n const productListId = productListLines[0].ProductListId;\n\n const maxWaitTimeInMilliSeconds: number = 1000;\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\n .then(async () => {\n this.setState({\n userMessage: removeSelectedSuccessMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n this.setState({\n userMessage: removeSelectedFailureMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n });\n }\n };\n\n private readonly _getOrderTemplatePageUrl = (): string => {\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n if (this.props.data.orderTemplate?.result?.productList.Id) {\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\n }\n return '';\n };\n\n private readonly _onAddSelectionToBag = async (): Promise => {\n const lines = this.state.productSelection;\n const selectedLines = lines.filter(line => line.isChecked);\n if (selectedLines.length > 0) {\n for (const productLine of selectedLines) {\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\n const product = productLine.fullProduct?.ProductDetails ?? {\n RecordId: 0,\n ProductTypeValue: 0,\n BasePrice: 0,\n Price: 0,\n AdjustedPrice: 0\n };\n const quantity = productLine.productListLine.Quantity ?? 0;\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\n const catalogId = productLine.productListLine.CatalogId;\n await this._addItemToBag(product, quantity, itemKey, catalogId);\n } else {\n await this._addItemToBag(product, quantity, itemKey);\n }\n }\n }\n return Promise.resolve(void 0);\n };\n\n private _renderOrderTemplateActions(\n orderTemplate: OrderTemplate,\n isMultipleCatalogFeatureEnabledInHq: boolean\n ): IOrderTemplateActionsViewProps {\n const { id, typeName, context, resources } = this.props;\n const {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage\n } = resources;\n\n const orderTemplateActions: IOrderTemplateActionsProps = {\n data: { orderTemplate },\n id,\n typeName,\n context,\n telemetryContent: this.telemetryContent,\n handlers: {\n onRenameTemplate: this._renameTemplate,\n onRemoveTemplate: this._removeTemplate\n },\n isMultipleCatalogFeatureEnabledInHq,\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\n resources: {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n closeWindowButtonText,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\n }\n };\n\n return OrderTemplateActionsView(orderTemplateActions);\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\n orderTemplateDescription: '',\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\n };\n }\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n /**\n * On close handler.\n */\n private readonly onCloseHandler = () => {\n this.setState({\n itemKey: this.state.itemKey,\n userMessage: this.state.userMessage,\n statusCssString: this.state.statusCssString,\n messageGlyph: this.state.messageGlyph,\n isOpen: this.state.isOpen,\n isItemAddedToOrderTemplateOpen: false\n });\n };\n\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\n if (!this.state.itemAddedToCartDialogData) {\n return null;\n }\n const isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\n ?.IsEnabled || false;\n\n return (\n \n );\n };\n\n private _isFirstPage(): boolean {\n return this._getCurrentPageNumber() === 0;\n }\n\n private _getCurrentPageNumber(): number {\n const itemsPerPage = this.props.config.itemsPerPage || 50;\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\n }\n\n private readonly _renderPagination = (): React.ReactNode | null => {\n const { config, context, data, resources } = this.props;\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\n if (!orderTemplate) {\n return null;\n }\n\n const fullUrl = this._getCurrentUrl(context.request);\n const itemsPerPage = config.itemsPerPage || 50;\n const currentPageNumber = this._getCurrentPageNumber();\n const skipCount = currentPageNumber * itemsPerPage;\n const totalItems = orderTemplate && orderTemplate.totalLines;\n const previousText = resources.flipperPrevious;\n const nextText = resources.flipperNext;\n\n if (totalItems <= itemsPerPage) {\n return null;\n }\n\n return (\n \n );\n };\n\n private _renderProductList(): IOrderTemplateLineViewProps[] {\n const {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n priceFree,\n originalPriceText,\n currentPriceText,\n addOrderTemplateItemToBagButtonText,\n removeItemFromOrderTemplateButtonText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n inputQuantityAriaLabel,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n } = this.props.resources;\n\n const { context, telemetry, data } = this.props;\n const { catalogs } = data;\n const { imageSettings } = this.props.config;\n\n return this.state.productSelection.map((line, index) => {\n const currentProductProps: IOrderTemplateLineProps = {\n orderTemplateLine: line,\n productListLine: line.productListLine,\n price: line.fullProduct?.ProductPrice,\n error: line.error,\n shouldDisable: line.shouldDisable,\n context,\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\n productUrl: line.fullProduct\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\n : '',\n imageSettings,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n quantity: line.productListLine.Quantity!,\n handlers: {\n onAddToBag: this._addItemToBag,\n onRemoveItem: this._removeItemFromOrderTemplateLines,\n onChangeQuantity: this._changeQuantity,\n onSelect: this.onSelect.bind(this)\n },\n resources: {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText,\n inputQuantityAriaLabel,\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n },\n index,\n isMobile: this.isMobile,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogs: catalogs && catalogs.result\n };\n\n return OrderTemplateLineView(currentProductProps)!;\n });\n }\n\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\n let state = {\n isDetailsDisplayed: !this.state.isDetailsDisplayed\n };\n if (props) {\n state = {\n ...state,\n ...{\n detailedProductView: OrderTemplateMobileLineView(props)\n }\n };\n }\n this.setState(state);\n };\n\n // This method is used to update the product url with the catalogId\n private readonly _updateProductUrlCatalog = (\n productDetails: SimpleProduct,\n context: ICoreContext,\n catalogId: number | undefined\n ): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const absoluteUrl = new URL(productUrl, window.location.href);\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return absoluteUrl.href;\n }\n\n return productUrl;\n };\n\n // Dismiss alert when addingToCart/removeItem\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\n const { context, data, telemetry, config, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context) {\n if (orderTemplate?.result) {\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\n if (orderTemplateLinesData) {\n const orderLineIndex = orderTemplateLinesData.findIndex(\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return;\n }\n const prevQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n // Update mobile modal\n if (props) {\n props.quantity = quantity;\n this.setState({\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n }\n\n this.setState({\n isQuantityDisabledForUpdate: true\n });\n\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\n line.productListLine\n ])\n .then(list => {\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isQuantityDisabledForUpdate: false,\n isOpen: false\n });\n if (list) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...orderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\n updatedOrderTemplate\n );\n }\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\n telemetry.error(error);\n const userMessage = resources.editOrderTemplateLineQuantityError;\n if (props) {\n props && (props.productListLine.Quantity = prevQuantity);\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true,\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n } else {\n newProductListLine.productListLine.Quantity = prevQuantity;\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true\n });\n }\n });\n }\n }\n }\n };\n\n private readonly _addItemToBag = async (\n product: SimpleProduct,\n quantity: number,\n itemKey: string,\n catalogId?: number | undefined\n ): Promise => {\n const { context, data, resources, telemetry } = this.props;\n const { cart } = data;\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\n\n if (context) {\n if (cart.result) {\n const addProductToCartInput = {\n product,\n count: quantity,\n catalogId\n };\n\n await cart.result\n .addProductToCart(addProductToCartInput)\n .then((result: ICartActionResult) => {\n if (result.status === 'SUCCESS') {\n return getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(\n product.RecordId,\n this.props.context.actionContext.requestContext.apiSettings.channelId,\n product\n ),\n this.props.context.actionContext\n ).then(priceResult => {\n if (!priceResult) {\n return AsyncResult.reject('Failed to retrieve product price');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: !isMiniCart,\n itemAddedToCartDialogData: {\n product,\n productPrice: priceResult,\n quantity\n },\n isDetailsDisplayed: false\n });\n return AsyncResult.resolve();\n });\n } else {\n switch (result.substatus) {\n case 'MAXQUANTITY':\n if (context.app.config.maxQuantityForCartLineItem) {\n const cartLineQuantity: number | undefined =\n cart.result?.cart.CartLines &&\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\n this.setState({\n itemKey,\n userMessage:\n cartLineQuantity !== undefined\n ? maxQuantityLimitText\n .replace('{curQuantity}', cartLineQuantity.toString())\n .replace(\n '{maxQuantity}',\n context.app.config.maxQuantityForCartLineItem.toString()\n ) || defaultMessage\n : defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n } else {\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\n this.setState({\n itemKey,\n userMessage: defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n case 'INVOICEINCART': {\n this.setState({\n itemKey,\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n default:\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n }\n })\n .catch((error: Error) => {\n telemetry.warning(error.message);\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\n if (StringExtensions.isNullOrWhitespace(error.message)) {\n this.setState({\n itemKey,\n userMessage: error.message,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n } else {\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n }\n });\n }\n }\n };\n\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\n const { context, data, telemetry } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const maxWaitTimeInMilliSeconds: number = 1000;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate?.result && line) {\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (ArrayExtensions.hasElements(featureStates)) {\n isMultipleCatalogFeatureEnabledInHq =\n featureStates.find(\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n const catalogId = getCatalogId(context.actionContext.requestContext);\n if (isMultipleCatalogFeatureEnabledInHq) {\n line.productListLine.CatalogId = catalogId;\n }\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\n line.productListLine\n ])\n .then(async () => {\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n });\n } else {\n telemetry.warning(\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\n );\n }\n }\n };\n\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\n window.location.reload();\n return Promise.resolve();\n };\n\n private readonly _removeTemplate = () => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate && orderTemplate.result) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: orderTemplate.result?.productList.Id || '',\n userMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n });\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\n if (newLink) {\n window.location.assign(newLink);\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template.');\n }\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n
\n );\n };\n}\n\nexport default OrderTemplateLines;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewProps } from './components';\nimport { IOrderTemplateViewProps } from './order-template';\n\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\n const {\n OrderTemplateLines,\n status,\n statusMessage,\n heading,\n ProductsTable,\n ProductsTableHeading,\n orderLines,\n ProductsTableRow,\n productsStatusMessage,\n OrderTemplateActions,\n orderActions,\n pagination,\n itemAddedToCartDialog,\n bulkOrderLineActions,\n isDetailsDisplayed,\n detailedProductView,\n toggleDetailsDisplayed,\n resources: {\n cancelBtnLabel,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productLineCatalogName\n }\n } = props;\n\n const toggleDetails = React.useCallback(() => {\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\n }, [toggleDetailsDisplayed]);\n\n return (\n \n {heading}\n {OrderTemplateActions && (\n \n {orderActions?.addTemplateToBag}\n {orderActions?.renameTemplate}\n {orderActions?.removeTemplate}\n {orderActions?.actionsSplitButton}\n {!isDetailsDisplayed && productsStatusMessage}\n \n )}\n {bulkOrderLineActions}\n {status !== 'SUCCESS' && statusMessage}\n {ProductsTable && orderLines && orderLines.length > 0 && (\n \n \n {ProductsTableHeading}\n \n {orderLines &&\n orderLines.map(product => {\n return _renderItem(product, productQuantityText, ProductsTableRow);\n })}\n \n \n {pagination}\n \n )}\n {itemAddedToCartDialog}\n \n Product Details\n \n
    \n
  • {detailedProductView?.productImage}
  • \n
  • \n {productText}:\n {detailedProductView?.productInfo}\n
  • \n
  • \n {productLineCatalogName}:\n {detailedProductView?.productLineCatalog}\n
  • \n
  • \n {productNumberText}:\n {detailedProductView?.productNumber}\n
  • \n
  • \n {productUnitPriceText}:\n {` `}\n {detailedProductView?.productPrice}\n
  • \n
  • \n {productUOMText}:\n {` `}\n {detailedProductView?.productUnitOfMeasure}\n
  • \n
  • \n {productQuantityText}:\n {detailedProductView?.productQuantityView}\n
  • \n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\n
\n
\n \n \n \n \n
\n );\n};\n\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\n if (!product) {\n return null;\n }\n\n const {\n key,\n selectLine,\n productLineCatalog,\n productImage,\n productPrice,\n productNumber,\n addToBagButton,\n removeButton,\n productInfo,\n productUnitOfMeasure,\n productQuantityView,\n productQuantity,\n popUp,\n isMobile,\n extraActionsPopup,\n isMultipleCatalogFeatureEnabledInHq,\n disabled\n } = product;\n\n const lineVisibility = disabled\n ? {\n pointerEvents: 'none',\n opacity: 0.5\n }\n : {\n pointerEvents: 'auto',\n opacity: 1\n };\n\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\n\n return (\n \n {selectLine}\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\n {productImage}\n {isMobile ? (\n \n
{productNumber}
\n
\n {quantityLabel}:{` `}\n {productQuantity}\n
\n \n ) : (\n {productNumber}\n )}\n {!isMobile && {productInfo}}\n {!isMobile && {productPrice}}\n {!isMobile && {productUnitOfMeasure}}\n {!isMobile && {productQuantityView}}\n {isMobile && {popUp}}\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\n \n {addToBagButton}\n {removeButton}\n \n )}\n {extraActionsPopup}\n
\n );\n};\n\nexport default OrderTemplateLinesView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\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._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\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 {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\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 * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n
\n );\n};\n\n/**\n * Renders quick order grid table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for desktop view.\n */\nexport const QuickOrderGridDesktopTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n if (product !== undefined) {\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n return (\n <>\n \n \n \n {product.ItemId}\n \n
\n \n {product.Name}\n \n \n {product.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\n .join(props.resources.quickOrderGridProductDimensionsSeparator)}\n \n
\n \n {renderProductPrice(props)}\n {renderUnitOfMeasure(props)}\n \n \n \n \n \n \n \n );\n }\n\n return null;\n};\n\n/**\n * Renders rows for mobile view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for mobile view.\n */\nexport const QuickOrderGridMobileTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n if (product !== undefined) {\n return (\n <>\n \n \n \n \n
\n {product.RecordId}\n \n \n \n
\n \n \n \n \n \n );\n }\n return null;\n};\n\n/**\n * Quick order table row component.\n * @param props - Configuration of the component.\n * @returns React node for the row.\n */\nexport const QuickOrderGridTableRowComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const rowClassName = `${props.className}__row`;\n const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n let headerCells: JSX.Element;\n if (isMobileView) {\n headerCells = ;\n } else {\n headerCells = ;\n }\n\n return (\n \n {headerCells}\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 MsDyn365, { IComponent, IComponentProps, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport React from 'react';\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { QuickOrderGridProduct } from '../quick-order-grid-product';\nimport { IQuickOrderGridRowCallbacks } from '../utilities';\nimport {\n IQuickOrderGridTableHeaderResources,\n IQuickOrderGridTableRowResources,\n QuickOrderGridTableHeaderComponent,\n QuickOrderGridTableRowComponent\n} from './components';\n\n/**\n * Quick order table data interface.\n */\ninterface IQuickOrderGridTableData {\n quickOrderGridProducts: QuickOrderGridProduct[];\n isOrderQuantityLimitsFeatureEnabled: boolean;\n}\n\n/**\n * Quick order table resources.\n */\nexport interface IQuickOrderGridTableResources extends IQuickOrderGridTableHeaderResources, IQuickOrderGridTableRowResources {}\n\n/**\n * Quick order table props.\n */\nexport interface IQuickOrderGridTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n moduleId: string;\n moduleTypeName: string;\n\n resources: IQuickOrderGridTableResources;\n isMobileView: boolean;\n imageSettings?: IImageSettings;\n callBacks: IQuickOrderGridRowCallbacks;\n}\n\n/**\n * Quick order table component.\n */\nexport interface IQuickOrderGridTableComponent extends IComponent {}\n\n/**\n * The quick order table.\n * @param props -- The quick order table props.\n * @returns The quick order table element.\n */\nexport const QuickOrderGridTableComponent: React.FC = (props: IQuickOrderGridTableProps) => {\n const [isMobile, setIsMobile] = React.useState(props.isMobileView);\n const quickOrderGridProducts = props.data.quickOrderGridProducts;\n const isOrderQuantityLimitsFeatureEnabled = props.data.isOrderQuantityLimitsFeatureEnabled;\n\n /**\n * Update the view port.\n */\n const updateViewport = () => {\n setIsMobile(props.isMobileView);\n };\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', updateViewport);\n }\n\n const headerClassName = `${props.className}__header`;\n const rowClassName = `${props.className}__row`;\n\n return (\n \n \n {quickOrderGridProducts.map((quickOrderProduct, index) => {\n let quantity = quickOrderProduct.productLine.productListLine.Quantity!;\n const product = quickOrderProduct.productLine.fullProduct;\n let min: number = 1;\n let max: number = 10;\n const behavior = product?.ProductDetails?.Behavior;\n if (isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(behavior)) {\n if (behavior.MinimumQuantity && behavior.MinimumQuantity > 0) {\n min = behavior.MinimumQuantity;\n }\n if (behavior.MaximumQuantity && behavior.MaximumQuantity > 0) {\n max = behavior.MaximumQuantity;\n }\n quantity = Math.max(quantity, min);\n }\n const price = quickOrderProduct.productLine.fullProduct?.ProductPrice;\n return (\n \n );\n })}\n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getProductConfigure,\n IProductDimensionCallbacks,\n IProductDimensionConfigureResources,\n IProductDimensionConfigureViewProps\n} from '@msdyn365-commerce/components';\nimport {\n ProductDimension,\n ProductDimensionType,\n ProductDimensionValue,\n ProductListsDataActions,\n ProductListType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n addItemToProductListAction,\n AddItemToProductListInput,\n ArrayExtensions,\n createProductList,\n CreateProductListInput,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getScanResult,\n GetScanResultInput,\n getSelectedVariant,\n IDimensionForSelectedVariant,\n IPromiseQueue,\n ObjectExtensions,\n QuickOrderTemplate,\n QuickOrderTemplateLine,\n SelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ActiveProductListInput } from './actions';\nimport {\n EcommerceQuantityLimitConfigurationsFeatureName,\n IQuickOrderGridActionsProps,\n IQuickOrderGridActionsViewProps,\n IQuickOrderGridRowCallbacks,\n IQuickOrderGridState,\n QuickOrderGridActionsView,\n QuickOrderGridDrawer,\n QuickOrderGridFormComponent,\n QuickOrderGridProduct,\n QuickOrderGridTableComponent,\n RetailDefaultOrderQuantityLimitsFeatureName\n} from './components';\nimport { IQuickOrderGridData } from './quick-order-grid.data';\nimport { IQuickOrderGridProps, IQuickOrderGridResources } from './quick-order-grid.props.autogenerated';\n\n/**\n * QuickOrder Grid View props.\n */\nexport interface IQuickOrderGridViewProps extends IQuickOrderGridProps {\n header: JSX.Element;\n actions?: INodeProps;\n isB2bCustomer?: boolean;\n isQuickOrderGridFormExpanded: boolean;\n contentProps: INodeProps;\n drawer: INodeProps;\n loading?: React.ReactNode;\n quickOrderGridForm: INodeProps;\n quickOrderGridFormProductContent: INodeProps;\n quickOrderGridFormMsgContent: INodeProps;\n quickOrderGridProps: IModuleProps;\n form: React.ReactNode;\n configure?: IProductDimensionConfigureViewProps;\n isMobileView: boolean;\n container?: JSX.Element;\n orderActions?: IQuickOrderGridActionsViewProps | null;\n bulkPurchase?: React.ReactNode;\n}\n\n/**\n * QuickOrder Grid View port.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * QuickOrderGrid component.\n * @extends {React.PureComponent>}\n */\nclass QuickOrderGrid extends React.PureComponent, IQuickOrderGridState> {\n private readonly _productTextInput: React.RefObject;\n\n private readonly _quantityInput: React.RefObject;\n\n private readonly _waitTime: number = 500;\n\n private readonly _dimensionUpdateQueueMaxLength: number = 2;\n\n private readonly _errorCssClass: string = 'danger';\n\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n\n private readonly _quickOrderGridFormClass: string;\n\n private readonly _quickOrderGridFormProductContent: string;\n\n private readonly _quickOrderGridFormMsgContent: string;\n\n private readonly _telemetryContent: ITelemetryContent;\n\n private readonly _dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(this._dimensionUpdateQueueMaxLength);\n\n private _dimensions: { [id: number]: string } = {};\n\n private _initializedDimensions: Set = new Set();\n\n private readonly _cssClassNameConfigure: string = 'ms-quick-order_grid__content-form-main';\n\n private readonly _className: string = 'ms-quick-order-grid';\n\n // @ts-expect-error: Debouce needs to be used as type.\n private _cancellabelDebounce: debounce;\n\n private _isOrderQuantityLimitsFeatureEnabled: boolean = false;\n\n private _isChannelLimitsFeatureEnabled: boolean = false;\n\n private _applyDefaultOrderSettingsForCartLine: boolean = false;\n\n private readonly _quickOrderGridCallbacks: IProductDimensionCallbacks = {\n initializeDimension: (initializedDimension: string): void => {\n if (initializedDimension) {\n this._initializedDimensions.add(initializedDimension);\n }\n },\n /**\n * Get Dropdown name.\n * @param selectedDimensionId - Dimension type.\n * @param selectedDimensionValueId - Resources.\n * @returns Dropdown name.\n */\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\n this._dimensions[selectedDimensionId] = selectedDimensionValueId;\n // Only trigger _updateDimensions when all dimensions are initialized\n if (this._initializedDimensions.size === this.state.productDimensions?.length) {\n return this._dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: string) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw new Error(error);\n }\n });\n }\n },\n\n /**\n * Get Dropdown name.\n * @param dimensionType - Dimension type.\n * @param resources - Resources.\n * @returns Dropdown name.\n */\n getDropdownName: (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n\n /**\n * Method to call on dimension change.\n * @param isUpdatingDimension - Flag to update dimension.\n */\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n }\n };\n\n private readonly _quickOrderGridRowCallbacks: IQuickOrderGridRowCallbacks = {\n /**\n * Method to call remove button.\n * @param line - Grid row product.\n */\n onRemoveItem: (line: QuickOrderGridProduct): void => {\n this._removeItemRowFromTable(line.productLine);\n },\n\n /**\n * Method to call on change quantity button.\n * @param productListLineId - Grid row product list line id.\n * @param quantity - Product quantity.\n * @returns - Falg to get confirmation for action.\n */\n onChangeQuantity: (productListLineId: string | undefined, quantity: number): boolean => {\n return this._changeRowQuantity(productListLineId, quantity);\n }\n };\n\n public constructor(props: IQuickOrderGridProps) {\n super(props);\n this._productTextInput = React.createRef();\n this._quantityInput = React.createRef();\n\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isQuickOrderGridFormExpanded: false,\n min: 0,\n max: 10,\n quantity: 1,\n productResponse: undefined,\n productDimensions: undefined,\n productDimensionErrorState: {\n configureErrors: {}\n },\n isMobile: this.isMobile,\n products: [],\n isUpdatingDimension: false,\n productListId: ''\n };\n\n this._quickOrderGridFormClass = 'ms-quick-order-grid__content-form';\n this._quickOrderGridFormProductContent = 'ms-quick-order-grid__content-form-main';\n this._quickOrderGridFormMsgContent = 'ms-quick-order-grid__content-form-msg';\n\n this._isOrderQuantityLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)\n ?.IsEnabled ?? false;\n\n this._isChannelLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName)\n ?.IsEnabled ?? false;\n\n const cartConfiguration = this.props.data.cartConfiguration;\n this._applyDefaultOrderSettingsForCartLine = cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false;\n }\n\n @computed public get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { data } = this.props;\n if (!data.customerInformation.result) {\n return null;\n }\n const quickOrderTemplate = data.quickOrderTemplate;\n\n if (quickOrderTemplate?.result !== undefined) {\n this.setState({\n products: quickOrderTemplate.result.quickOrderTemplateLines,\n productListId: quickOrderTemplate.result.productList.Id\n });\n }\n const { className = '', maxQuantity } = this.props.config;\n const customerInfo = this.props.data.customerInformation.result;\n const {\n quickOrderGridModuleHeading,\n quickOrderGridModuleDescription,\n quickOrderGridAddtogrid,\n quickOrderGridProductQuantityInputLabel,\n quickOrderGridProductInputLabel,\n quickOrderGridProductDimensionTypeColor,\n quickOrderGridProductDimensionTypeConfiguration,\n quickOrderGridSelectDimensionFormatString,\n quickOrderGridProductDimensionTypeSize,\n quickOrderGridProductDimensionTypeStyle,\n quickOrderGridProductDimensionTypeAmount,\n quickOrderGridModulePageHeading\n } = this.props.resources;\n\n const productConfigureResources: IProductDimensionConfigureResources = {\n selectDimensionFormatString: quickOrderGridSelectDimensionFormatString,\n productDimensionTypeColor: quickOrderGridProductDimensionTypeColor,\n productDimensionTypeConfiguration: quickOrderGridProductDimensionTypeConfiguration,\n productDimensionTypeSize: quickOrderGridProductDimensionTypeSize,\n productDimensionTypeStyle: quickOrderGridProductDimensionTypeStyle,\n productDimensionTypeAmount: quickOrderGridProductDimensionTypeAmount\n };\n\n const { isQuickOrderGridFormExpanded, productDimensionErrorState, productResponse, productDimensions } = this.state;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n );\n\n const viewProps: IQuickOrderGridViewProps = {\n ...(this.props as IQuickOrderGridProps),\n\n quickOrderGridProps: { className: classnames('ms-quick-order-grid', className), moduleProps: this.props },\n contentProps: { className: 'ms-quick-order-grid__content' },\n isB2bCustomer: customerInfo?.IsB2b,\n header,\n actions: {\n className: `${this._className}-action-bar`,\n tag: 'div'\n },\n drawer: {\n tag: QuickOrderGridDrawer,\n className: `${this._className}__drawer`,\n collapseProps: { isOpen: this.state.isQuickOrderGridFormExpanded },\n moduleHeadingText: quickOrderGridModuleHeading,\n moduleDescriptionText: quickOrderGridModuleDescription,\n requestContext: this.props.context.request,\n telemetryContent: this._telemetryContent\n },\n bulkPurchase: this._renderBulkPurchase(),\n quickOrderGridForm: {\n className: `${this._quickOrderGridFormClass} ${isQuickOrderGridFormExpanded ? 'qo-show' : 'qo-hide'}`\n },\n quickOrderGridFormProductContent: {\n className: this._quickOrderGridFormProductContent\n },\n quickOrderGridFormMsgContent: {\n className: this._quickOrderGridFormMsgContent\n },\n form: QuickOrderGridFormComponent({\n productTextInput: this._productTextInput,\n quantityTextInput: this._quantityInput,\n isAddtoListDisabled: !productResponse,\n ariaLabelAddtoCart: quickOrderGridAddtogrid,\n ariaLabelProduct: quickOrderGridProductInputLabel,\n ariaLabelQuantity: quickOrderGridProductQuantityInputLabel,\n maxChars: 50,\n minQuantity: this.state.min ?? 0,\n maxQuantity: this.state.max ?? maxQuantity,\n moduleClassName: this._className,\n quickOrderGridState: this.state,\n handleInputChange: this._handleInputChange,\n handleQuantityChange: this._handleQuantityChange,\n handleAddProductListClick: this._addItemToProductListLine\n }),\n configure:\n productResponse && productDimensions\n ? getProductConfigure(\n this._cssClassNameConfigure,\n this.props.context,\n this.props.friendlyName,\n this.props.telemetry,\n quickOrderGridSelectDimensionFormatString,\n productConfigureResources,\n this._quickOrderGridCallbacks,\n productResponse,\n productDimensions,\n productDimensionErrorState\n )\n : undefined,\n isQuickOrderGridFormExpanded: this.state.isQuickOrderGridFormExpanded,\n isMobileView: this.state.isMobile,\n container: ArrayExtensions.hasElements(this.state.products) ? this._renderListContainer() : undefined,\n orderActions: this._renderQuickOrderGridActions(quickOrderTemplate?.result)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderQuickOrderGridActions(quickOrderTemplate: QuickOrderTemplate | undefined): IQuickOrderGridActionsViewProps | null {\n const { typeName, context, resources } = this.props;\n const {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n } = resources;\n if (ArrayExtensions.hasElements(quickOrderTemplate?.quickOrderTemplateLines)) {\n const quickOrderGridActions: IQuickOrderGridActionsProps = {\n data: { quickOrderTemplate },\n moduleClassName: this._className,\n id: 'quick-order-grid',\n typeName,\n context,\n handlers: {\n removeProductList: this._removeProductList,\n onErrorMessage: (message: string) =>\n this.setState({\n topStateMessage: {\n messageText: message,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n })\n },\n quickOrderGridState: this.state,\n resources: {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n }\n };\n\n return QuickOrderGridActionsView(quickOrderGridActions);\n }\n return null;\n }\n\n /**\n * Renders bulk purchase module.\n * @returns Bulk purchase module react node.\n */\n private _renderBulkPurchase(): React.ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\n return null;\n }\n\n if (!ArrayExtensions.hasElements(this.props.slots.bulkPurchaseSlots)) {\n return null;\n }\n\n const containerClass = `${this._className}__bulk-purchase`;\n return (\n
\n {React.cloneElement(this.props.slots.bulkPurchaseSlots[0] as React.ReactElement, {\n productDimensions: this.state.productDimensions\n })}\n
\n );\n }\n\n /**\n * Render list container.\n * @returns JSX element.\n */\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__table-content`;\n return
{this._renderQuickOrderTable(this._className)}
;\n }\n\n /**\n * Initial the products on quick order.\n * @returns List of quick order products or undefined.\n */\n private _initQuickOrderGridProducts(): QuickOrderGridProduct[] {\n const products: QuickOrderTemplateLine[] = this.state.products;\n\n const quickOrderGridProduct: QuickOrderGridProduct[] = products.map((product: QuickOrderTemplateLine) => {\n return new QuickOrderGridProduct(product);\n });\n\n return ArrayExtensions.validValues(quickOrderGridProduct);\n }\n\n /**\n * Method to call on clear button.\n */\n private readonly _removeProductList = () => {\n const { context, data, telemetry, resources } = this.props;\n const { quickOrderTemplate } = data;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && quickOrderTemplate && quickOrderTemplate.result) {\n ProductListsDataActions.deleteAsync({ callerContext: context.actionContext }, quickOrderTemplate.result.productList)\n .then(() => {\n window.location.reload();\n })\n .catch((error: string) => {\n telemetry.warning('[quick-order-grid] Unable to delete product list.');\n telemetry.error(error);\n this._updateStatusState(\n resources.quickOrderGridDeleteProductListFailedText,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n });\n } else {\n telemetry.warning('[quick-order-grid] Failed to delete product list. Product List was not found');\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param className - Class name.\n * @returns JSX element.\n */\n private _renderQuickOrderTable(className: string): JSX.Element {\n const tableClassName = `${className}__table-list`;\n\n return (\n \n );\n }\n\n private _updateQuantitiesInState(product: SimpleProduct): void {\n const min: number = this._getMinQuantityForCartLineItem(this._isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n this._isChannelLimitsFeatureEnabled || this._isOrderQuantityLimitsFeatureEnabled,\n product\n );\n let quantity: number = this._getQuantity(\n this._isOrderQuantityLimitsFeatureEnabled,\n this._applyDefaultOrderSettingsForCartLine,\n product\n );\n quantity = Math.max(quantity, min);\n\n this.setState({\n min,\n max,\n quantity\n });\n }\n\n private _getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isOrderQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MinimumQuantity &&\n product.Behavior.MinimumQuantity > 0\n ) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MaximumQuantity &&\n product.Behavior.MaximumQuantity > 0\n ) {\n return product.Behavior.MaximumQuantity;\n }\n\n return this.props.context.app.config.maxQuantityForCartLineItem;\n }\n\n /**\n * Retrieves the value of the IgnoreOrderSettings property from the cart configuration.\n * If the property is not present, it defaults to false.\n * @returns {boolean} The value of the IgnoreOrderSettings property.\n */\n private _getIgnoreOrderSettings(): boolean {\n const cartConfiguration = this.props.data.cartConfiguration;\n return !(cartConfiguration?.result?.IgnoreOrderSettings ?? false);\n }\n\n private _getQuantity(\n isOrderQuantityLimitsFeatureEnabled: boolean,\n applyDefaultOrderSettingsForCartLine: boolean,\n product: SimpleProduct\n ): number {\n let defaultQuantity = 1;\n\n if (!isOrderQuantityLimitsFeatureEnabled || !applyDefaultOrderSettingsForCartLine) {\n return defaultQuantity;\n }\n\n if (product?.Behavior?.DefaultQuantity && product.Behavior.DefaultQuantity > 0) {\n defaultQuantity = product.Behavior.DefaultQuantity;\n }\n\n return defaultQuantity;\n }\n\n /**\n * Method to called on product input change.\n * @param query - Product inventory info.\n */\n private readonly _handleInputChange = (query: string): void => {\n const queryMinLength = 4;\n if (!query || query.length > queryMinLength) {\n this.setState({ quantity: 0, productDimensions: [], productResponse: undefined });\n this._updateStatusState('', '', '', false);\n }\n if (this._cancellabelDebounce) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -- existing code.\n this._cancellabelDebounce.cancel();\n }\n\n const { telemetry, context } = this.props;\n const zeroNumber = 0;\n if (!StringExtensions.isNullOrEmpty(query)) {\n this._cancellabelDebounce = debounce(() => {\n getScanResult(\n new GetScanResultInput(\n context.actionContext.requestContext.apiSettings,\n query,\n context.actionContext.requestContext.apiSettings.channelId\n ),\n this.props.context.actionContext\n )\n .then(results => {\n this.setState({\n productResponse: results?.Product,\n productDimensions: results?.ProductDimensionFull,\n isQuickOrderGridFormExpanded: true\n });\n if (results?.Product) {\n this._updateQuantitiesInState(results.Product);\n }\n })\n .catch((error: Error) => {\n telemetry.exception(error);\n telemetry.debug('Unable to get scan results');\n });\n }, this._waitTime);\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- Existing code.\n this._cancellabelDebounce();\n }, zeroNumber);\n this.setState({ isQuickOrderGridFormExpanded: true });\n } else {\n this.setState({ productResponse: undefined, isQuickOrderGridFormExpanded: true });\n }\n };\n\n /**\n * Method to called on quantity change.\n * @param value - Quantity value.\n */\n private readonly _handleQuantityChange = (value: string): void => {\n let currentValue = Number.parseInt(value, 10);\n const inputElement = this._quantityInput.current instanceof HTMLInputElement && this._quantityInput.current;\n const quantityChangeDebounceTimeout = 200;\n let minimumQuantity = 0;\n let needToUpdateUIValue: boolean = false;\n if (this._isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(this.state.productResponse?.Behavior)) {\n const behavior = this.state.productResponse!.Behavior;\n minimumQuantity = behavior?.MinimumQuantity ?? 0;\n const newCurrentValue = Math.max(currentValue, minimumQuantity);\n if (newCurrentValue !== currentValue) {\n needToUpdateUIValue = true;\n }\n currentValue = newCurrentValue;\n }\n\n this.setState({ quantity: currentValue }, () => {\n debounce(() => {\n if (needToUpdateUIValue && !Number.isNaN(this.state.quantity) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.value = currentValue.toString();\n }\n }, quantityChangeDebounceTimeout)();\n });\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionType - Dimension Type.\n * @param resources - String resources.\n * @returns Dropdwon label.\n */\n private readonly _getDropdownName = (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n const isGiftCard = this.state.productResponse?.IsGiftCard;\n\n switch (dimensionType) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n /**\n * Method to update dimension and product in UI.\n */\n private readonly _updateDimensions = async (): Promise => {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { productDimensions, productResponse } = this.state;\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\n if (!productResponse || !hasProductDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this._dimensions };\n this.setState({ isUpdatingDimension: true });\n\n // Step 1: Update state to indicate which dimensions are selected\n if (this.state.productDimensionErrorState.otherError) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const clearOtherErrorState = { ...this.state.productDimensionErrorState };\n clearOtherErrorState.otherError = undefined;\n this.setState({ productDimensionErrorState: clearOtherErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const dimensionKey of Object.keys(dimensionsToUpdate)) {\n if (this.state.productDimensionErrorState.configureErrors[dimensionKey]) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors[dimensionKey] = undefined;\n\n this.setState({ productDimensionErrorState: errorState });\n }\n }\n\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\n // over the information in data\n const mappedDimensions = productDimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, dimensionsToUpdate[dimension.DimensionTypeValue]) ?? dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension.DimensionValue;\n });\n\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\n // so that places like add to cart can await it\n // eslint-disable-next-line no-async-promise-executor -- existing code\n const selectedProduct = new Promise(async resolve => {\n const newProduct = await getSelectedVariant(\n new SelectedVariantInput(\n productResponse.MasterProductId ? productResponse.MasterProductId : productResponse.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n if (newProduct) {\n await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n newProduct.MasterProductId ? newProduct.MasterProductId : newProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n ),\n actionContext\n );\n }\n\n resolve(newProduct);\n });\n\n const variantProduct = await selectedProduct;\n this.setState({ productResponse: variantProduct !== null ? variantProduct : undefined });\n };\n\n /**\n * Method to get updated dimension value.\n * @param productDimensionFull - Product dimension full.\n * @param newValueId - New Dimension value.\n * @returns Dimension Value.\n */\n private readonly _updateDimensionValue = (\n productDimensionFull: IDimensionForSelectedVariant,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionTypeValue - Dimension Type.\n * @param resources - String resources.\n * @param isGiftCard - Flag to check if its a giftcard product.\n * @returns Dropdwon error label.\n */\n private readonly _getDimensionErrorString = (\n dimensionTypeValue: number,\n resources: IQuickOrderGridResources,\n isGiftCard?: boolean\n ): string => {\n const amountErrorMessage = resources.quickOrderGridproductDimensionTypeAmountErrorMessage;\n\n switch (dimensionTypeValue) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.quickOrderGridproductDimensionTypeColorErrorMessage;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.quickOrderGridproductDimensionTypeConfigurationErrorMessage;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.quickOrderGridproductDimensionTypeSizeErrorMessage;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? amountErrorMessage : resources.quickOrderGridproductDimensionTypeStyleErrorMessage;\n default:\n return '';\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param productResponse - Simple Product.\n * @param quantity - Product Quantity.\n * @returns Flag to validate productlistline.\n */\n private readonly _validateCart = (productResponse: SimpleProduct, quantity: number): boolean => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- existing code\n const missingDimensions = productResponse.Dimensions?.filter(\n dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value)\n );\n const minimumQuantity = 0;\n if (ArrayExtensions.hasElements(missingDimensions)) {\n const userMessage = this._getConfigureErrors(missingDimensions, false);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- existing code\n if (this.state.productDimensionErrorState.configureErrors) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors = userMessage;\n\n this.setState({ productDimensionErrorState: errorState });\n return false;\n }\n }\n\n if (quantity <= minimumQuantity) {\n const resources = this.props.resources;\n this._updateStatusState(resources.quickOrderGridWrongQuantityErrorMsg, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n }\n return true;\n };\n\n /**\n * Initial the products on quick order.\n * @param result - Simple Product.\n * @param isGiftCard - Product Quantity.\n * @returns Flag to validate cart.\n */\n private _getConfigureErrors(\n result: ProductDimension[] | undefined,\n isGiftCard?: boolean\n ): { [configureId: string]: string | undefined } {\n if (!result) {\n return {};\n }\n const dimensions: { [configureId: string]: string | undefined } = {};\n const resources = this.props.resources;\n for (const dimension of result) {\n dimensions[dimension.DimensionTypeValue] = this._getDimensionErrorString(dimension.DimensionTypeValue, resources, isGiftCard);\n }\n return dimensions;\n }\n\n /**\n * Method to call on quantity change in row.\n * @param itemKey - Product Key.\n * @param quantity - Product quantity.\n * @returns Flag to update status.\n */\n private readonly _changeRowQuantity = (itemKey: string | undefined, quantity: number): boolean => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n if (quickOrderTemplate?.result) {\n const quickOrderTemplateLinesData = quickOrderTemplate.result.quickOrderTemplateLines;\n if (ArrayExtensions.hasElements(quickOrderTemplateLinesData)) {\n const orderLineIndex = quickOrderTemplateLinesData.findIndex(\n (lines: QuickOrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...quickOrderTemplateLinesData[orderLineIndex] };\n if (quickOrderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return true;\n }\n const previousQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n ProductListsDataActions.updateProductListLinesAsync(\n { callerContext: context.actionContext },\n quickOrderTemplate.result.productList.Id,\n [line.productListLine]\n )\n .then(list => {\n if (ArrayExtensions.hasElements(list)) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n quickOrderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...quickOrderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedProductList = { ...quickOrderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveProductListInput(context.actionContext.requestContext),\n updatedProductList\n );\n return true;\n }\n\n return false;\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable to update product quantity.');\n telemetry.error(error.message);\n const userMessage = 'Failed to update quantity value.';\n newProductListLine.productListLine.Quantity = previousQuantity;\n this._updateStatusState(userMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n });\n }\n return false;\n }\n\n return false;\n };\n\n /**\n * Method to call on remove item from table.\n * @param line - Order Template Line.\n */\n private readonly _removeItemRowFromTable = (line: QuickOrderTemplateLine): void => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n\n if (quickOrderTemplate?.result) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken) {\n ProductListsDataActions.removeProductListLinesAsync(\n { callerContext: context.actionContext },\n line.productListLine.ProductListId!,\n [line.productListLine]\n )\n .then(() => {\n window.location.reload(false);\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable remove item from product list grid');\n telemetry.error(error.message);\n });\n } else {\n telemetry.warning('[quick-order-grid] Unable remove items from product list grid user token was not found');\n }\n }\n };\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n /**\n * Method to call on add item from form.\n */\n private readonly _addItemToProductListLine = async (): Promise => {\n const {\n context: { actionContext },\n resources,\n telemetry\n } = this.props;\n const {\n quickOrderGridAddedToGridSuccessMessage,\n quickOrderGridAddedToGridFailureMessage,\n quickOrderGridAddedToGridDuplicateError\n } = resources;\n const { productResponse, quantity, productListId } = this.state;\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n\n this._updateStatusState('', '', '', false);\n\n if (productResponse !== undefined && this._validateCart(productResponse, quantity)) {\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n await this._createProductList();\n }\n\n if (StringExtensions.isNullOrWhitespace(this.state.productListId)) {\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return;\n }\n const input = new AddItemToProductListInput(\n this.state.productListId,\n productResponse.RecordId,\n quantity,\n productResponse.DefaultUnitOfMeasure ?? 'ea',\n this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogId\n );\n\n await addItemToProductListAction(input, actionContext)\n .then(result => {\n if (result.ProductListId) {\n this._updateStatusState(quickOrderGridAddedToGridSuccessMessage, 'success', 'fas fa-check', true);\n window.location.reload();\n this.setState({});\n }\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error trying to Update Grid Line from the quick order grid');\n if (error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n this._updateStatusState(\n quickOrderGridAddedToGridDuplicateError,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n } else {\n this._updateStatusState(\n quickOrderGridAddedToGridFailureMessage,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n }\n });\n }\n };\n\n /**\n * Method to create product list.\n * @returns - ProductListId.\n */\n private _createProductList = async (): Promise => {\n const {\n context: { actionContext },\n telemetry,\n resources\n } = this.props;\n const { productListId } = this.state;\n const { quickOrderGridAddedToGridFailureMessage } = resources;\n\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n const input = new CreateProductListInput('', ProductListType.QuickOrder);\n\n await createProductList(input, actionContext)\n .then(result => {\n if (!StringExtensions.isNullOrWhitespace(result.Id)) {\n this.setState({ productListId: result.Id });\n return result.Id;\n }\n return '';\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error on creating productlist from quick order grid');\n telemetry.error(error.message);\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return '';\n });\n return '';\n }\n\n return productListId;\n };\n\n /**\n * Method to create product list.\n * @param messageText - Message Text.\n * @param statusCssString - Css class names.\n * @param messageGlyph - Glyph string.\n * @param isOpen - Flag to show.\n */\n private readonly _updateStatusState = (messageText: string, statusCssString: string, messageGlyph: string, isOpen: boolean): void => {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Showing user message in Form component.\n stateMessage: {\n messageText,\n statusCssString,\n messageGlyph,\n isOpen\n }\n });\n };\n}\nexport default QuickOrderGrid;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IErrorState } from '@msdyn365-commerce/components';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IDimensionForSelectedVariant, OrderTemplateLine } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { QuickOrderGridProduct } from './quick-order-grid-product';\n\n/**\n * QuickOrderGrid state message Interface.\n */\nexport interface IQuickOrderGridStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * QuickOrderGrid state Interface.\n */\nexport interface IQuickOrderGridState {\n isQuickOrderGridFormExpanded: boolean;\n isUpdatingDimension?: boolean;\n productResponse: SimpleProduct | undefined;\n productDimensions: IDimensionForSelectedVariant[] | undefined;\n min: number | undefined;\n max: number | undefined;\n quantity: number;\n stateMessage?: IQuickOrderGridStateMessage;\n topStateMessage?: IQuickOrderGridStateMessage;\n productDimensionErrorState: IErrorState;\n isMobile: boolean;\n products: OrderTemplateLine[];\n productListId: string;\n}\n\n/**\n * QuickOrder Grid Row view.\n */\nexport interface IQuickOrderGridRowViewModel extends OrderTemplateLine {\n isChecked: boolean;\n}\n\n/**\n * Interface for quick order callbacks.\n */\nexport interface IQuickOrderGridRowCallbacks {\n onRemoveItem(line: QuickOrderGridProduct): void;\n onChangeQuantity(orderTemplateLineId: string | undefined, quantity: number): boolean;\n}\n\n/**\n * Interface for quick order grid action view props.\n */\nexport interface IQuickOrderGridActionsViewProps {\n addProductListToBag: React.ReactNode;\n removeProductList?: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\n\nexport const EcommerceQuantityLimitConfigurationsFeatureName: string =\n 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionConfigureDropdownViewProps, IProductDimensionConfigureViewProps } from '@msdyn365-commerce/components';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderGridViewProps, IQuickOrderGridFormViewProps } from './index';\n\n/**\n * Render product dimension/configure dropdown.\n * @param dropdown -- Product dimension drop down.\n * @returns Dropdown.\n */\nconst renderConfigureDropdown = (dropdown: IProductDimensionConfigureDropdownViewProps): JSX.Element => {\n const { containerProps, labelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {errors}\n {select}\n \n );\n};\n\n/**\n * Render product dimension/configure container.\n * @param configure -- Product dimension configuration.\n * @returns Container to have dimension dropdown.\n */\nconst renderConfigure = (configure?: IProductDimensionConfigureViewProps): JSX.Element | null => {\n if (configure !== undefined) {\n const { containerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n }\n return null;\n};\n\n/**\n * Render product dimension/configure container.\n * @param form -- Form props.\n * @param isMobileView -- Flag to check mobile view.\n * @param quickOrderForm - Form component container.\n * @param quickOrderProductContent - Form product component.\n * @param quickOrderMessageContent - Form user message component.\n * @param configure - Product Dimension component.\n * @returns Jsx element of quick order form component.\n */\nconst renderForm = (\n form: IQuickOrderGridFormViewProps,\n isMobileView: boolean,\n quickOrderForm: INodeProps,\n quickOrderProductContent: INodeProps,\n quickOrderMessageContent: INodeProps,\n configure?: IProductDimensionConfigureViewProps\n) => {\n return isMobileView ? (\n \n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.userMessage}\n {form.addToListBtn}\n \n \n ) : (\n \n {form.userMessage}\n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.addToListBtn}\n \n \n );\n};\n\n/**\n * Retrieves current sort criteria.\n * @param props - QuickOrder Grid view props.\n * @returns - Render View.\n */\nconst quickOrderGridView: React.FC = props => {\n const {\n quickOrderGridProps,\n contentProps,\n form,\n quickOrderGridForm,\n drawer,\n configure,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n isMobileView,\n header,\n container,\n actions,\n orderActions\n } = props;\n\n return (\n \n {header}\n {actions && (\n \n {orderActions?.userMessage}\n {orderActions?.addProductListToBag}\n {orderActions?.removeProductList}\n \n )}\n \n \n {renderForm(\n form as IQuickOrderGridFormViewProps,\n isMobileView,\n quickOrderGridForm,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n configure\n )}\n {props.bulkPurchase}\n \n \n {container}\n \n );\n};\n\nexport default quickOrderGridView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { SubmitUserReviewInput } from './inputs/submit-user-review-input';\n\n/**\n * This data action allows submitting review to the reviews service.\n * @param input This user review submission text.\n * @param ctx The data action context.\n */\nasync function submitReview(input: SubmitUserReviewInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n ctx.trace(`[SubmitUserReview] Failed to submit reviews for product due to bad input ${input}`);\n return '';\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}/user?` +\n `tenantId=${input.tenantId}&` +\n `channelId=${input.channelId}&` +\n `locale=${input.locale}`;\n\n return sendRequest(requestUrl, 'post', input.userReviewData, { headers: { Authorization: `id_token ${input.authorization}` } })\n .then(response => {\n if (response.status !== 200 && response.status !== 201) {\n ctx.trace('[SubmitUserReview] Failed to submit reviews for product');\n ctx.trace(response.data);\n return '';\n }\n return response.data;\n })\n .catch(error => {\n ctx.trace('[SubmitUserReview] Failed to submit reviews for product');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[SubmitUserReview] Failed to submit reviews for product');\n ctx.trace(error);\n return '';\n });\n}\n\nfunction inputIsValid(input: SubmitUserReviewInput): boolean {\n return input && !!input.productId && !!input.tenantId;\n}\n\nexport const submitReviewDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/submit-user-review',\n action: >submitReview\n});\n\nexport default submitReviewDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IUserReviewData } from './submit-user-review-input-data';\n\n/**\n * SubmitUserReview Input Action.\n */\nexport class SubmitUserReviewInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId?: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The calling organization's channel id.\n */\n public channelId: string;\n\n /**\n * The locale for which to get the ratings from.\n */\n public locale: string;\n\n /**\n * The user's review data.\n */\n public userReviewData: IUserReviewData;\n\n /**\n * The user's authorization token.\n */\n public authorization: string;\n\n /**\n * The ratings and reviews service endpoint.\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string | undefined,\n tenantId: string,\n channelId: string,\n locale: string,\n userReviewData: IUserReviewData,\n authorization: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.channelId = channelId;\n this.locale = locale;\n this.userReviewData = userReviewData;\n this.authorization = authorization;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'SubmitUserReview';\n\n public getCacheObjectType = () => 'SubmitUserReview';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getRnrAuthEndpointId, getRnrPartnerId } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\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\nimport classNames from 'classnames';\nimport { GetUserReviewInput } from '../actions/inputs/get-user-review-input';\nimport { SubmitUserReviewInput } from '../actions/inputs/submit-user-review-input';\nimport submitUserReview from '../actions/submit-user-review';\n\nexport interface IReviewModalProps {\n userReview?: Review;\n product?: SimpleProduct;\n renderContextId: string;\n resources: IReviewModalResources;\n context: ICoreContext>;\n parentId: string;\n parentType: string;\n isOpen: boolean;\n rating: number;\n reviewTitle: string;\n reviewText: string;\n returnRef: React.RefObject | undefined;\n hasError: boolean;\n telemetryContent?: ITelemetryContent;\n onModalToggle(): void;\n onTitleChange(event: React.ChangeEvent): void;\n onTextChange(event: React.ChangeEvent): void;\n onRatingChange(value: number): void;\n onReviewComplete?(isSuccess: boolean): void;\n modalCSS?: string;\n}\n\nexport interface IReviewModalResources {\n selectRatingAriaLabel: string;\n selectRatingLabel: string;\n reviewTitleLabel: string;\n reviewTextLabel: string;\n privacyPolicyTitle: string;\n privacyPolicyTextFormat: string;\n writeReviewModalTitle: string;\n editReviewModalTitle: string;\n submitReviewButtonText: string;\n discardReviewButtonText: string;\n errorMessageText: string;\n reviewTitleAriaLabel?: string;\n reviewAriaLabel?: string;\n}\n\nexport interface IReviewModalViewProps {\n modal: INodeProps;\n modalHeader: React.ReactElement;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n rating: React.ReactElement;\n ratingLabel: React.ReactElement;\n titleInput: React.ReactElement;\n titleLabel: React.ReactElement;\n textInput: React.ReactElement;\n textLabel: React.ReactElement;\n privacyPolicyUrl: React.ReactElement;\n form: INodeProps;\n inputRow: INodeProps;\n error: React.ReactElement;\n}\n\n/**\n * On Click Submit.\n * @param props -Review Modal props.\n * @returns On submit.\n */\nconst onClickSubmit = (props: IReviewModalProps) => () => {\n onSubmit(props);\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const ReviewModal = (props: IReviewModalProps): IReviewModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SubmitReview);\n const submitButtonAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelButtonAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: props.modalCSS ? classNames(props.modalCSS, 'msc-modal-input-required') : 'ms-review-modal msc-modal-input-required',\n toggle: props.onModalToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: modalHeaderNode(props),\n modalFooter: { tag: ModalFooter, className: 'ms-review-modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-review-modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.submitReviewButtonText}\n \n ),\n rating: ratingsInput(props),\n ratingLabel: ratingsLabel(props),\n titleInput: titleInput(props),\n titleLabel: titleLabel(props),\n textInput: textInput(props),\n textLabel: textLabel(props),\n privacyPolicyUrl: privacyPolicyLink(props),\n form: { tag: 'form', className: 'ms-review-modal-form', autoComplete: 'off' },\n inputRow: { tag: 'div', className: 'ms-review-modal-row', autoComplete: 'off' },\n error: (\n \n {props.resources.errorMessageText}\n \n )\n };\n};\n\nconst modalHeaderNode = (props: IReviewModalProps) => {\n return (\n \n {props.userReview && props.userReview.reviewId ? props.resources.editReviewModalTitle : props.resources.writeReviewModalTitle}\n \n );\n};\n\nconst submitDisabled = (props: IReviewModalProps) => {\n return !props.rating || !stripWhiteSpacesFromString(props.reviewText) || !stripWhiteSpacesFromString(props.reviewTitle);\n};\n\nconst ratingsInput = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst ratingsLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst titleInput = (props: IReviewModalProps) => {\n const maxLength = props.context.app.config.reviewTitleMaxLength;\n\n return (\n \n );\n};\n\nconst titleLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst reviewTextWidth: number = 50;\n\nconst textInput = (props: IReviewModalProps) => {\n const maxLength = props.context.app.config.reviewTextMaxLength;\n return (\n \n );\n};\n\nconst textLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst privacyPolicyLink = (props: IReviewModalProps) => {\n const policyTextBlocks = props.resources.privacyPolicyTextFormat.split('{0}');\n const isSeparatorAtStart = props.resources.privacyPolicyTextFormat.startsWith('{0}');\n const isSeparatorAtEnd = props.resources.privacyPolicyTextFormat.endsWith('{0}');\n const privacyPolicyUrl = getUrlSync('rnrPrivacyPolicy', props.context.actionContext);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.PrivacyPolicy);\n const privacyPolicyAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n return (\n

\n {isSeparatorAtStart ? '' : policyTextBlocks[0]}\n \n {props.resources.privacyPolicyTitle}\n \n {isSeparatorAtEnd ? '' : isSeparatorAtStart ? policyTextBlocks[0] : policyTextBlocks[1]}\n

\n );\n};\n\nconst onSubmit = (props: IReviewModalProps): void => {\n if (props.product) {\n submitReview(\n props.product,\n props.reviewTitle,\n props.reviewText,\n props.rating,\n props.context,\n props.userReview,\n props.onReviewComplete\n );\n }\n};\n\n/**\n * This method strips content of extra white spaces.\n * @param text The text to be stripped of extra white spaces.\n */\nconst stripWhiteSpacesFromString = (text: string): string => {\n return text\n .replace(new RegExp('\\\\r?\\\\n|\\\\r+', 'g'), ' ')\n .replace(new RegExp('\\\\s+', 'g'), ' ')\n .trim();\n};\n\nexport const submitReview = (\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n) => {\n const { request } = context;\n const { user } = request;\n if (user && request) {\n const input = new SubmitUserReviewInput(\n product.RecordId.toString(),\n getRnrPartnerId(context.actionContext),\n request.apiSettings.channelId.toString(),\n request.locale,\n {\n productName: product && product.Name,\n rating,\n reviewText: stripWhiteSpacesFromString(text),\n title: stripWhiteSpacesFromString(title),\n userEmail: user.emailAddress,\n userName: user.name\n },\n request.user.token,\n getRnrAuthEndpointId(context.actionContext)\n );\n\n submitUserReview(input, context.actionContext)\n .then(reviewId => {\n const review = reviewId\n ? {\n rating,\n title: stripWhiteSpacesFromString(title),\n reviewText: stripWhiteSpacesFromString(text),\n submittedDateTime: new Date(),\n helpfulPositive: userReview ? userReview.helpfulPositive : 0,\n helpfulNegative: userReview ? userReview.helpfulNegative : 0,\n reviewId,\n userName: request.user.firstName || request.user.name\n }\n : userReview;\n\n const getReviewInput = new GetUserReviewInput(input.productId!, input.tenantId, input.authorization, input.serviceEndpoint);\n context.actionContext.update(getReviewInput, review);\n\n if (onReviewSubmission) {\n onReviewSubmission(!!reviewId);\n }\n })\n .catch(() => {\n const productId = product.RecordId;\n context.telemetry.error(`Failed to submit review for product with recordId: ${productId}`);\n context.telemetry.debug(`Failed to submit review for product with recordId: ${productId}`);\n if (onReviewSubmission) {\n onReviewSubmission(false);\n }\n });\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { OrderBy } from '../actions/inputs/get-product-reviews-input';\n\nexport interface IRnrKeyValuePair {\n key: string;\n value: string;\n}\n\nexport interface IRnrOrderByKeyValuePair {\n key: OrderBy;\n value: string;\n}\n\nexport function setFocusOnElement(id: string): void {\n const element = document.getElementById(id);\n if (element) {\n element.focus();\n }\n}\n\nexport const TOGGLE_REVIEW_MODAL_BUTTON_ID: string = 'reviewproductid';\nexport const TOGGLE_EDIT_MODAL_BUTTON_ID: string = 'ms-write-review__edit';\nexport const TOGGLE_EDIT_MODAL_BUTTON_CARD_ID: string = 'ms-reviews-list__edit';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport { format, INodeProps, Progress } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IHistogramItemsProps {\n ratingsSummary: RatingsSummary;\n resources: IHistogramItemsResources;\n locale: string;\n onClick(stars: number): void;\n}\n\nexport interface IHistogramItemsResources {\n barItemAriaLabel: string;\n}\n\nexport interface IHistogramItemViewProps {\n starLabel: React.ReactElement;\n bar: React.ReactElement;\n percentage: React.ReactElement;\n buttonProps: INodeProps;\n}\n\n/**\n * CartLineItems component.\n */\n\nexport const HistogramItems = (props: IHistogramItemsProps): IHistogramItemViewProps[] => {\n const { ratingsSummary } = props;\n const totalRatingsCount: number = ratingsSummary.totalRatingsCount || 0;\n if (totalRatingsCount === 0) {\n return [];\n }\n return [\n renderItem(props, 5, ratingsSummary.star5Count, totalRatingsCount),\n renderItem(props, 4, ratingsSummary.star4Count, totalRatingsCount),\n renderItem(props, 3, ratingsSummary.star3Count, totalRatingsCount),\n renderItem(props, 2, ratingsSummary.star2Count, totalRatingsCount),\n renderItem(props, 1, ratingsSummary.star1Count, totalRatingsCount)\n ];\n};\n\nconst renderItem = (props: IHistogramItemsProps, stars: number, count?: number, totalCount?: number): IHistogramItemViewProps => {\n count = count || 0;\n totalCount = totalCount || 0;\n const percentage = totalCount === 0 ? 0 : count / totalCount;\n const formattedPercent = new Intl.NumberFormat(props.locale, { style: 'percent' }).format(percentage);\n const ariaLabel = format(props.resources.barItemAriaLabel, stars, formattedPercent);\n\n return {\n starLabel: (\n \n ),\n percentage: (\n \n ),\n bar: ,\n buttonProps: {\n tag: 'button',\n className: 'ms-ratings-histogram__item',\n onClick: () => {\n props.onClick(stars);\n }\n }\n };\n};\n\nexport const AverageRatingNumber: React.FC<{ summary: RatingsSummary }> = (props: { summary: RatingsSummary }) => {\n return (\n

\n {props.summary.averageRating}\n {` `}/ 5\n

\n );\n};\n\nexport const TotalReviews: React.FC<{ summary: RatingsSummary }> = (props: { summary: RatingsSummary }) => {\n return

{props.summary.totalRatingsCount}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createRatingsReviewsStateInput } from '../../actions/ratings-reviews-state-data-action';\nimport { AverageRatingNumber, HistogramItems, IHistogramItemViewProps, TotalReviews } from './component/components';\nimport { IRatingsHistogramData } from './ratings-histogram.data';\nimport { IRatingsHistogramProps } from './ratings-histogram.props.autogenerated';\n\nexport interface IRatingsHistogramViewProps extends IRatingsHistogramProps {\n className: string;\n histogramItems: IHistogramItemViewProps[];\n moduleProps: IModuleProps;\n heading: React.ReactNode;\n averageRating: React.ReactNode;\n averageNumber: React.ReactNode;\n totalReviews: React.ReactNode;\n histogramProps: INodeProps;\n ratingsSummaryProps: INodeProps;\n callbacks: IRatingsHistogramCallbacks;\n}\n\nexport interface IRatingsHistogramCallbacks {\n selectFilterBy(stars: number): void;\n}\n\n/**\n * RatingsHistogram component.\n * @extends {React.Component>}\n */\n@observer\nclass RatingsHistogram extends React.PureComponent> {\n constructor(props: IRatingsHistogramProps) {\n super(props);\n this.selectFilterBy = this.selectFilterBy.bind(this);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { className, heading } = this.props.config;\n const {\n ratingsSummary: { result: ratingsSummary }\n } = this.props.data;\n const ratingCount = ratingsSummary && ratingsSummary.totalRatingsCount ? `${ratingsSummary.totalRatingsCount}` : '0';\n\n const completeClass = classname('ms-ratings-histogram', className);\n const viewProps: IRatingsHistogramViewProps = {\n ...this.props,\n className: completeClass,\n callbacks: {\n selectFilterBy: this.selectFilterBy\n },\n moduleProps: {\n moduleProps: this.props,\n className: completeClass\n },\n histogramItems: ratingsSummary\n ? HistogramItems({\n ratingsSummary,\n resources: { ...resources },\n locale: this.props.context.request.locale,\n onClick: this.selectFilterBy\n })\n : [],\n averageRating: ratingsSummary && (\n \n ),\n averageNumber: ratingsSummary && ,\n totalReviews: ratingsSummary && ,\n ratingsSummaryProps: { className: 'ms-ratings-histogram__summary' },\n heading: heading && (\n \n ),\n histogramProps: { className: 'ms-ratings-histogram__histogram' }\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 selectFilterBy(stars: number): void {\n const filterKey = `${stars}`;\n this.props.context.actionContext.update(createRatingsReviewsStateInput({ filterKey }), { filterKey });\n }\n}\n\nexport default RatingsHistogram;\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 { IHistogramItemViewProps } from './component/components';\nimport { IRatingsHistogramViewProps } from './ratings-histogram';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { ReportReviewConcernInput } from './inputs/report-review-concern-input';\n\nasync function reportReviewConcern(input: ReportReviewConcernInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[SubmitHelpfulnessVote] Invalid input. ReviewId=${input.reviewId},tenantId=${input.tenantId},locale= ${input.locale},`\n );\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/concerns/review/${input.reviewId}` + `?tenantId=${input.tenantId}` + `&locale=${input.locale}`;\n\n const requestBody = {\n concernCategory: input.concernCategory\n };\n\n const requestHeader = {\n headers: {\n Authorization: `id_token ${input.authToken}`\n }\n };\n\n return sendRequest(requestUrl, 'post', requestBody, requestHeader)\n .then(response => {\n return response.status === 200 || response.status === 201;\n })\n .catch(error => {\n ctx.trace('[ReportReviewConcernInput] Failed to report a concern');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[ReportReviewConcernInput] Failed to report a concern');\n return false;\n });\n}\n\nfunction inputIsValid(input: ReportReviewConcernInput): boolean {\n return input && input.reviewId.length > 0 && input.tenantId.length > 0 && input.locale.length > 0 && input.authToken.length > 0;\n}\n\nexport const reportReviewConcernDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/report-review-concern',\n action: >reportReviewConcern\n});\n\nexport default reportReviewConcernDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { SubmitHelpfulnessVoteInput } from './inputs/submit-helpfulness-vote-input';\n\nasync function submitHelpfulnessVote(input: SubmitHelpfulnessVoteInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[SubmitHelpfulnessVote] Invalid input. ReviewId=${input.reviewId},tenantId=${input.tenantId}, locale= ${input.locale},`\n );\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/votes/review/${input.reviewId}` + `?tenantId=${input.tenantId}` + `&locale=${input.locale}`;\n\n const requestBody = {\n isHelpful: !!input.isHelpful\n };\n\n const requestHeader = {\n headers: {\n Authorization: `id_token ${input.authToken}`\n }\n };\n\n return sendRequest(requestUrl, 'post', requestBody, requestHeader)\n .then(response => {\n return response.status === 200 || response.status === 201;\n })\n .catch(error => {\n ctx.trace('[SubmitHelpfulnessVote] Failed to vote on a review');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[SubmitHelpfulnessVote] Failed to vote on a review');\n return false;\n });\n}\n\nfunction inputIsValid(input: SubmitHelpfulnessVoteInput): boolean {\n return input && input.reviewId.length > 0 && input.tenantId.length > 0 && input.locale.length > 0 && input.authToken.length > 0;\n}\n\nexport const submitHelpfulnessVoteDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/submit-helpfulness-vote',\n action: >submitHelpfulnessVote\n});\n\nexport default submitHelpfulnessVoteDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nexport enum ReviewConcernCategory {\n OffensiveContent = '1',\n ReviewResponse = '7',\n SpamAdvertising = '8',\n Profanity = '9'\n}\n\n/**\n * ReportReviewConcern Input Action.\n */\nexport class ReportReviewConcernInput implements IActionInput {\n public reviewId: string;\n\n public tenantId: string;\n\n public locale: string;\n\n public serviceEndpoint: string;\n\n public concernCategory: string;\n\n public authToken: string;\n\n constructor(reviewId: string, tenantId: string, locale: string, concernCategory: string, authToken: string, serviceEndpoint: string) {\n this.reviewId = reviewId;\n this.tenantId = tenantId;\n this.locale = locale;\n this.concernCategory = concernCategory;\n this.authToken = authToken;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'ReportReviewConcern';\n\n public getCacheObjectType = () => 'ReportReviewConcern';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n format,\n getPayloadObject,\n getTelemetryAttributes,\n ILabeledDropdownOption,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IReviewCountResources {\n pageReviewCountText: string;\n}\n\nexport interface IReviewCountProps {\n resources: IReviewCountResources;\n currentPage: number;\n reviewsCount: number;\n reviewsShownOnEachPage: number;\n}\n\nexport const ReviewCount: React.FC = (props: IReviewCountProps) => {\n const { currentPage, resources, reviewsCount, reviewsShownOnEachPage } = props;\n\n return (\n \n {format(\n resources.pageReviewCountText,\n _getReviewStartNumber(currentPage, reviewsShownOnEachPage),\n _getReviewEndNumber(currentPage, reviewsCount, reviewsShownOnEachPage),\n reviewsCount\n )}\n \n );\n};\n\nexport interface IPageControlResources {\n previousButtonText: string;\n nextButtonText: string;\n pageReviewAriaLabel: string;\n}\n\nexport interface IPageControlsProps {\n resources: IPageControlResources;\n currentPage: number;\n reviewsCount: number;\n reviewsShownOnEachPage: number;\n selectedSortByOption: ILabeledDropdownOption;\n selectedFilterByOption: ILabeledDropdownOption;\n telemetryContent?: ITelemetryContent;\n updateReviews(\n skipItems: number,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ): Promise;\n}\n\nexport const PageControls: React.FC = (props: IPageControlsProps) => {\n const { currentPage, resources, reviewsCount, reviewsShownOnEachPage } = props;\n const previousPageClick = React.useCallback(() => {\n return _getPreviousPageData(props);\n }, [props]);\n const nextPageClick = React.useCallback(() => {\n return _getNextPageData(props);\n }, [props]);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Next);\n const nextAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Previous;\n const previousAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n return (\n
\n {_hasPreviousPage(currentPage) && (\n \n {resources.previousButtonText}\n \n )}\n {_hasNextPage(currentPage, reviewsCount, reviewsShownOnEachPage) && (\n \n {resources.nextButtonText}\n \n )}\n
\n );\n};\n\nconst _hasPreviousPage = (currentPage: number): boolean => {\n return currentPage > 1;\n};\n\nconst _hasNextPage = (currentPage: number, reviewsCount: number, reviewsShownOnEachPage: number): boolean => {\n return _getPagesCount(reviewsCount, reviewsShownOnEachPage) > currentPage;\n};\n\nconst _getReviewsShown = (reviewsShownOnEachPage: number) => {\n return Math.min(25, reviewsShownOnEachPage);\n};\n\nconst _getPagesCount = (reviewsCount: number, reviewsShownOnEachPage: number): number => {\n return Math.ceil(reviewsCount / _getReviewsShown(reviewsShownOnEachPage));\n};\n\nconst _paginationAriaLabel = (\n pageReviewAriaLabel: string,\n currentPage: number,\n reviewsCount: number,\n reviewsShownOnEachPage: number,\n isNextPage: boolean,\n page?: number\n): string => {\n const pageModifier = isNextPage ? 1 : -1;\n return format(\n pageReviewAriaLabel,\n _getReviewStartNumber(currentPage, reviewsShownOnEachPage, currentPage + pageModifier),\n _getReviewEndNumber(currentPage, reviewsCount, reviewsShownOnEachPage, currentPage + pageModifier),\n reviewsCount\n );\n};\n\nconst _getReviewStartNumber = (currentPage: number, reviewsShownOnEachPage: number, page?: number): number => {\n return ((page || currentPage) - 1) * _getReviewsShown(reviewsShownOnEachPage) + 1;\n};\n\nconst _getReviewEndNumber = (currentPage: number, reviewsCount: number, reviewsShownOnEachPage: number, page?: number): number => {\n const pageUsed = page || currentPage;\n const pageReviewCount = pageUsed * _getReviewsShown(reviewsShownOnEachPage);\n return pageReviewCount < reviewsCount ? pageReviewCount : reviewsCount;\n};\n\nconst _getPreviousPageData = async (props: IPageControlsProps) => {\n await props.updateReviews(\n _getReviewStartNumber(props.currentPage, props.reviewsShownOnEachPage) - 1 - _getReviewsShown(props.reviewsShownOnEachPage),\n props.selectedSortByOption,\n props.selectedFilterByOption,\n props.currentPage - 1,\n false\n );\n};\n\nconst _getNextPageData = async (props: IPageControlsProps) => {\n await props.updateReviews(\n _getReviewEndNumber(props.currentPage, props.reviewsCount, props.reviewsShownOnEachPage),\n props.selectedSortByOption,\n props.selectedFilterByOption,\n props.currentPage + 1,\n false\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport {\n Alert,\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\nimport { ReviewConcernCategory } from '../../../actions/inputs/report-review-concern-input';\nimport { IRnrKeyValuePair } from '../../../common/rnrInterface';\n\nexport interface IReportReviewModalProps {\n resources: IReportReviewModalResources;\n context: ICoreContext>;\n isOpen: boolean;\n returnRef: React.RefObject | undefined;\n reportedKey: string;\n hasError: boolean;\n telemetryContent?: ITelemetryContent;\n onModalToggle(): void;\n onRadioChange(event: React.ChangeEvent): void;\n reportReview(): void;\n}\n\nexport interface IReportReviewModalResources {\n reportConcernText: string;\n feedbackThankYouText: string;\n reportModalMessage: string;\n reportSubmittedMessage: string;\n reportSpamText: string;\n offensiveContentText: string;\n profanityContentText: string;\n okReportReviewText: string;\n cancelReportReviewText: string;\n reportReviewButtonText: string;\n errorMessageText: string;\n}\n\nexport interface IReportReviewModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n header: React.ReactElement;\n headerSubmitted: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n succesfulButton: React.ReactElement;\n reportMessage: React.ReactElement;\n reportSubmittedMessage: React.ReactElement;\n radioButtons: React.ReactElement;\n error: React.ReactElement;\n}\n\nlet reportConcernDropdownOptions: IRnrKeyValuePair[];\n\n/**\n * CartLineItems component.\n */\n\nexport const ReportReviewModal = (props: IReportReviewModalProps): IReportReviewModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SubmitReview);\n const submitReviewAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SuccessButton;\n const successAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n reportConcernDropdownOptions = [\n { key: ReviewConcernCategory.SpamAdvertising, value: props.resources.reportSpamText },\n { key: ReviewConcernCategory.OffensiveContent, value: props.resources.offensiveContentText },\n { key: ReviewConcernCategory.Profanity, value: props.resources.profanityContentText }\n ];\n\n return {\n modal: {\n tag: Modal,\n className: 'ms-report-review-modal msc-modal-input-required',\n toggle: props.onModalToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, toggle: props.onModalToggle, className: 'ms-report-review-modal-header' },\n modalFooter: { tag: ModalFooter, className: 'ms-report-review-modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-report-review-modal-body' },\n header:

{props.resources.reportConcernText}

,\n headerSubmitted:

{props.resources.feedbackThankYouText}

,\n cancelButton: (\n \n ),\n submitButton: (\n \n ),\n succesfulButton: (\n \n ),\n reportMessage:

{props.resources.reportModalMessage}

,\n reportSubmittedMessage:

{props.resources.reportSubmittedMessage}

,\n radioButtons: radioPairs(props),\n error: (\n \n {props.resources.errorMessageText}\n \n )\n };\n};\n\nconst radioPairs = (props: IReportReviewModalProps) => {\n const pairs = [];\n for (const option of reportConcernDropdownOptions) {\n const inputId = `report-review-${option.key}`;\n const checked = option.key === props.reportedKey;\n pairs.push(\n
\n \n \n
\n );\n }\n\n return
{pairs}
;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, isOboRequest } from '@msdyn365-commerce/core';\nimport { Button, format, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { TOGGLE_EDIT_MODAL_BUTTON_CARD_ID } from '../../../common/rnrInterface';\n\nexport interface IReviewCardResources {\n wasReviewHelpfulText: string;\n yesButtonText: string;\n noButtonText: string;\n editReviewCardText: string;\n reportedText: string;\n reportConcernText: string;\n reviewRatingNarratorText: string;\n}\n\nexport interface IReviewCardProps {\n review: Review;\n resources: IReviewCardResources;\n context: ICoreContext>;\n isUserReview?: boolean;\n parentId: string;\n parentType: string;\n reportedReviews: string[];\n returnRef: React.RefObject | undefined;\n reportedReviewId: string;\n votedReviews: { reviewId: string; approved: boolean }[];\n toggleWriteReviewModal?(): void;\n toggleReportReviewModal(reviewId: string): void;\n updateReviewHelpfulness(reviewId: string, isHelpful: boolean): void;\n}\n\nexport interface IReviewCardViewProps {\n cardProps: INodeProps;\n name: React.ReactElement;\n rating: React.ReactElement;\n date: React.ReactElement;\n reviewTitle: React.ReactElement;\n reviewText: React.ReactElement;\n ratingHelpfulLabel?: React.ReactElement;\n like?: React.ReactElement;\n dislike?: React.ReactElement;\n edit: React.ReactNode;\n report: React.ReactNode;\n responseName: React.ReactNode;\n responseDate: React.ReactNode;\n responseText: React.ReactNode;\n cardBodyProps: INodeProps;\n responseProps: INodeProps;\n reviewProps: INodeProps;\n controlsProps: INodeProps;\n headerProps: INodeProps;\n}\n\n/**\n * Review card component.\n */\n\nexport const ReviewCard = (props: IReviewCardProps): IReviewCardViewProps => {\n const className = props.isUserReview ? 'ms-reviews-list__card ms-reviews-list__user-review' : 'ms-reviews-list__card';\n return {\n cardProps: { className, key: props.review.reviewId },\n name:

{props.review.userName}

,\n rating: rating(props),\n date:

{renderDate(props, props.review.submittedDateTime)}

,\n reviewTitle:

{props.review.title}

,\n reviewText:

{props.review.reviewText}

,\n ratingHelpfulLabel: props.isUserReview ? (\n undefined\n ) : (\n

{props.resources.wasReviewHelpfulText}

\n ),\n like: props.isUserReview ? undefined : voteHelpfulButton(props, true),\n dislike: props.isUserReview ? undefined : voteHelpfulButton(props, false),\n edit: editButton(props),\n report: reportToggle(props),\n responseName: props.review.userResponse ? (\n

{props.review.userResponse.responderName}

\n ) : (\n undefined\n ),\n responseText: props.review.userResponse ? (\n

{props.review.userResponse.responseText}

\n ) : (\n undefined\n ),\n responseDate: props.review.userResponse ? (\n

{renderDate(props, props.review.userResponse.submittedDateTime)}

\n ) : (\n undefined\n ),\n cardBodyProps: { className: 'ms-reviews-list__card-body' },\n responseProps: { className: 'ms-reviews-list__response' },\n reviewProps: { className: 'ms-reviews-list__review' },\n controlsProps: { className: 'ms-reviews-list__card-controls' },\n headerProps: { className: 'ms-reviews-list__card-header' }\n };\n};\n\nconst rating = (props: IReviewCardProps) => {\n return (\n \n );\n};\n\nconst isVotedFor = (props: IReviewCardProps, isHelpful: boolean): boolean => {\n for (let i = 0; i < props.votedReviews.length; i++) {\n if (props.votedReviews[i].reviewId === props.review.reviewId) {\n return props.votedReviews[i].approved === isHelpful;\n }\n }\n\n return false;\n};\n\nconst voteHelpfulButton = (props: IReviewCardProps, isHelpful: boolean) => {\n const isVoted = isVotedFor(props, isHelpful);\n const isDisabled = props.isUserReview || isVoted || isOboRequest(props.context.request) ? 'disabled' : '';\n let className = isHelpful ? 'ms-reviews-list__like' : 'ms-reviews-list__dislike';\n className = `${className} ${isDisabled}`;\n const label = isHelpful ? props.resources.yesButtonText : props.resources.noButtonText;\n let voteCount = (isHelpful ? props.review.helpfulPositive : props.review.helpfulNegative) || 0;\n voteCount = isVoted ? voteCount + 1 : voteCount;\n const title = `(${voteCount})`;\n const user = props.context.request.user;\n const onClickMethod = () => {\n props.updateReviewHelpfulness(props.review.reviewId!, isHelpful);\n };\n const onClick = isDisabled ? undefined : onClickMethod;\n\n if (user.isAuthenticated) {\n return (\n \n );\n }\n return (\n \n );\n};\n\nconst editButton = (props: IReviewCardProps) => {\n if (props.isUserReview && !isOboRequest(props.context.request)) {\n return (\n \n );\n }\n\n return undefined;\n};\n\nconst renderDate = (props: IReviewCardProps, date?: Date): string | Date => {\n if (!date) {\n return '';\n }\n\n try {\n return new Intl.DateTimeFormat(props.context.request.locale, { month: 'long', day: 'numeric', year: 'numeric' }).format(\n new Date(date)\n );\n } catch {\n return date;\n }\n};\n\n/**\n * On Click Handler.\n * @param props -Review card props.\n * @returns Report review modal.\n */\nconst onClick = (props: IReviewCardProps) => () => {\n props.toggleReportReviewModal(props.review.reviewId!);\n};\n\nconst reportToggle = (props: IReviewCardProps) => {\n const user = props.context.request.user;\n if (props.isUserReview || isOboRequest(props.context.request)) {\n return undefined;\n } else if (!user.isAuthenticated) {\n return (\n \n );\n }\n\n if (props.reportedReviews.includes(props.review.reviewId!)) {\n return

{props.resources.reportedText}

;\n }\n\n const ref = props.review.reviewId === props.reportedReviewId ? props.returnRef : undefined;\n\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * SubmitHelpfulnessVote Input Action.\n */\nexport class SubmitHelpfulnessVoteInput implements IActionInput {\n public reviewId: string;\n\n public tenantId: string;\n\n public locale: string;\n\n public serviceEndpoint: string;\n\n public isHelpful: boolean;\n\n public authToken: string;\n\n constructor(reviewId: string, tenantId: string, locale: string, isHelpful: boolean, authToken: string, serviceEndpoint: string) {\n this.reviewId = reviewId;\n this.tenantId = tenantId;\n this.locale = locale;\n this.isHelpful = isHelpful;\n this.authToken = authToken;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'SubmitHelpfulnessVote';\n\n public getCacheObjectType = () => 'SubmitHelpfulnessVote';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n getRnrAuthEndpointId,\n getRnrEndpointId,\n getRnrPartnerId,\n getSelectedProductIdFromActionInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n format,\n getTelemetryObject,\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n LabeledDropdown\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { reportReviewConcern, submitHelpfulnessVote } from '../..';\nimport { getReviewsForGivenProduct } from '../../actions/get-product-reviews';\nimport { GetProductReviewsInput } from '../../actions/inputs/get-product-reviews-input';\nimport { ReportReviewConcernInput, ReviewConcernCategory } from '../../actions/inputs/report-review-concern-input';\nimport { SubmitHelpfulnessVoteInput } from '../../actions/inputs/submit-helpfulness-vote-input';\nimport { IReviewModalViewProps, ReviewModal, submitReview } from '../../common/review-modal';\nimport { IRnrKeyValuePair, IRnrOrderByKeyValuePair } from '../../common/rnrInterface';\nimport { PageControls, ReviewCount } from './components/components';\nimport { IReportReviewModalViewProps, ReportReviewModal } from './components/report-review-modal';\nimport { IReviewCardViewProps, ReviewCard } from './components/review-card';\nimport { IReviewsListData } from './reviews-list.data';\nimport { IReviewsListProps } from './reviews-list.props.autogenerated';\n\nexport interface IReviewsListState {\n skipItems: number;\n listOfReviews: Review[];\n currentPage: number;\n reviewsCount: number;\n showSpinner: boolean;\n isFilterApplied: boolean;\n selectedSortByOption: ILabeledDropdownOption;\n selectedFilterByOption: ILabeledDropdownOption;\n userReviewRating: number;\n userReviewTitle: string;\n userReviewText: string;\n isReviewModalOpen: boolean;\n hasReviewError: boolean;\n isReportModalOpen: boolean;\n hasReportError: boolean;\n reportingReviewId: string;\n reportedKey: string;\n reported: boolean;\n reportedReviews: string[];\n votedReviews: { reviewId: string; approved: boolean }[];\n}\n\nexport interface IReviewsListCallbacks {\n toggleModal(): void;\n updateReviewTitle(title: string): void;\n updateReviewText(text: string): void;\n updateRating(rating: number): void;\n onReviewSubmitted(isSuccessful: boolean): void;\n submitReview(\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: Msdyn365.ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n ): void;\n updateReviewHelpfulnessVote(reviewId: string, isHelpful: boolean): void;\n toggleReportModal(reviewId: string): void;\n reportReview(reviewId: string, reportedKey: string): void;\n updateSortByDropdown(notification: ILabeledDropdownOnChangeNotification): void;\n updateFilterByDropdown(notification: ILabeledDropdownOnChangeNotification): void;\n updateReviews(\n skipItems: number,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ): void;\n}\n\nexport interface IReviewsListViewProps extends IReviewsListProps {\n state: IReviewsListState;\n className: string;\n callbacks: IReviewsListCallbacks;\n moduleProps: IModuleProps;\n reviewModal: IReviewModalViewProps;\n reportReviewModal: IReportReviewModalViewProps;\n sortByDropdown: React.ReactNode;\n filterByDropdown: React.ReactNode;\n averageRating: React.ReactNode;\n reviewCount: React.ReactElement;\n refineReviewsProps: INodeProps;\n reviewsListProps: INodeProps;\n reviewCards: IReviewCardViewProps[];\n userReview?: IReviewCardViewProps;\n pageControls: React.ReactNode;\n noReviewsMessage: React.ReactElement;\n noReviewsWithFilterMessage: React.ReactElement;\n heading: React.ReactNode;\n sortByOptions: IRnrOrderByKeyValuePair[];\n filterByOptions: IRnrOrderByKeyValuePair[];\n}\n\n/**\n *\n * ReviewsList component.\n * @extends {React.Component, IReviewsListState>}\n */\n@observer\nclass ReviewsList extends React.Component, IReviewsListState> {\n public sortByDropdownOptions: IRnrOrderByKeyValuePair[] = [\n { key: 'MostHelpful', value: this.props.resources.mostHelpfulSortOptionText },\n { key: 'MostRecent', value: this.props.resources.mostRecentSortOptionText },\n { key: 'HighestRating', value: this.props.resources.highestRatedSortOptionText },\n { key: 'LowestRating', value: this.props.resources.lowestRatedSortOptionText }\n ];\n\n public filterByDropdownOptions: IRnrKeyValuePair[] = [\n { key: '1;2;3;4;5', value: this.props.resources.allRatinsFilterByOptionText },\n { key: '5', value: this.props.resources.fiveStarFilterByOptionText },\n { key: '4', value: this.props.resources.fourStarFilterByOptionText },\n { key: '3', value: this.props.resources.threeStarFilterByOptionText },\n { key: '2', value: this.props.resources.twoStarFilterByOptionText },\n { key: '1', value: this.props.resources.oneStarFilterByOptionText }\n ];\n\n private readonly _userReviewModalToggle: React.RefObject;\n\n private readonly _userReportModalToggle: React.RefObject;\n\n private readonly telemetryContent?: ITelemetryContent;\n private readonly reviewsListCallbacks: IReviewsListCallbacks = {\n updateReviewTitle: (title: string): void => {\n this.setState({ userReviewTitle: title });\n },\n updateReviewText: (text: string): void => {\n this.setState({ userReviewText: text });\n },\n updateRating: (rating: number): void => {\n this.setState({ userReviewRating: rating });\n },\n onReviewSubmitted: (isSuccessful: boolean): void => {\n if (isSuccessful) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n },\n submitReview,\n // @ts-expect-error\n toggleModal: this._toggleReviewModal,\n // @ts-expect-error\n updateReviewHelpfulnessVote: this.updateReviewHelpfulnessVote,\n toggleReportModal: (reviewId: string): void => {\n this.state.isReportModalOpen ? this._onReportModalOpen(reviewId) : this._onReportModalClose();\n },\n // @ts-expect-error\n reportReview: this._reportReviewCallback,\n // @ts-expect-error\n updateFilterByDropdown: this.updateFilterByDropdown,\n // @ts-expect-error\n updateSortByDropdown: this.updateSortByDropdown,\n // @ts-expect-error\n updateReviews: this.updateReviews\n };\n constructor(props: IReviewsListProps) {\n super(props);\n const {\n userReview: { result: userReview }\n } = this.props.data;\n\n this.state = {\n skipItems: 0,\n reviewsCount: 0,\n listOfReviews: [],\n currentPage: 1,\n showSpinner: false,\n isFilterApplied: false,\n selectedSortByOption: this.sortByDropdownOptions[0],\n selectedFilterByOption: this.filterByDropdownOptions[0],\n userReviewRating: userReview ? userReview.rating : 0,\n userReviewText: userReview ? userReview.reviewText : '',\n userReviewTitle: userReview ? userReview.title : '',\n isReviewModalOpen: false,\n hasReviewError: false,\n isReportModalOpen: false,\n hasReportError: false,\n reported: false,\n reportedKey: ReviewConcernCategory.SpamAdvertising,\n reportingReviewId: '',\n reportedReviews: [],\n votedReviews: []\n };\n\n this._userReviewModalToggle = React.createRef();\n this._userReportModalToggle = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IReviewsListProps, nextState: IReviewsListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n public componentDidMount = async () => {\n this.props.data.reviewsList.then(reviewsList => {\n if (\n reviewsList &&\n reviewsList.pagingInfo &&\n reviewsList.pagingInfo.totalItems &&\n reviewsList.items &&\n reviewsList.items.length > 0\n ) {\n this.setState({\n listOfReviews: reviewsList.items,\n reviewsCount: reviewsList.pagingInfo.totalItems\n });\n }\n });\n await this.updateReviews(0, this.state.selectedSortByOption, this.state.selectedFilterByOption, 1, this.state.isFilterApplied);\n\n reaction(\n () => this.props.data.ratingsReviewsState.result && this.props.data.ratingsReviewsState.result.filterKey,\n async (filterKey: string | undefined) => {\n const filterKeyValue = Number(filterKey);\n const dropdownItemsCount = this.filterByDropdownOptions.length;\n if (filterKey && !isNaN(filterKeyValue) && filterKeyValue < dropdownItemsCount) {\n const filterByOption = this.filterByDropdownOptions.find((option: IRnrKeyValuePair) => option.key === filterKey);\n if (!filterByOption) {\n this.props.telemetry.warning(`[reviews-list] cannot find filter with key ${filterKey}`);\n } else {\n await this.updateReviews(0, this.state.selectedSortByOption, filterByOption, 1, true);\n const selectedIndex = dropdownItemsCount - filterKeyValue;\n this.setState({\n selectedFilterByOption: this.filterByDropdownOptions[selectedIndex]\n });\n }\n }\n }\n );\n };\n public render(): JSX.Element | null {\n const { className, heading, reviewsShownOnEachPage } = this.props.config;\n const { currentPage, reviewsCount, selectedFilterByOption, selectedSortByOption } = this.state;\n const {\n ratingsSummary: { result: ratingsSummary }\n } = this.props.data;\n const resources = this.props.resources;\n const completeClass = classname('ms-reviews-list', className);\n const viewProps: IReviewsListViewProps = {\n ...this.props,\n state: this.state,\n className: completeClass,\n moduleProps: {\n moduleProps: this.props,\n className: completeClass\n },\n callbacks: this.reviewsListCallbacks,\n reviewModal: this._userReviewModal(),\n reportReviewModal: this._reportReviewModal(),\n filterByDropdown: (\n \n ),\n sortByDropdown: (\n \n ),\n averageRating: ratingsSummary && (\n \n ),\n reviewCount: (\n \n ),\n refineReviewsProps: { className: 'ms-reviews-list__refiners' },\n reviewsListProps: { className: 'ms-reviews-list__reviews' },\n reviewCards: this._reviewCards(this.state.listOfReviews),\n userReview: this._userReview(),\n pageControls: (\n \n ),\n noReviewsMessage: (\n \n {resources.noReviewsMessage}\n \n ),\n noReviewsWithFilterMessage: (\n \n {resources.noReviewsWithSelectedFilterMessage}\n \n ),\n heading: heading && heading.text && (\n \n ),\n sortByOptions: this.sortByDropdownOptions,\n filterByOptions: this.filterByDropdownOptions\n } as IReviewsListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n private readonly _userReview = () => {\n const userReview = this.props.data.userReview.result;\n\n return userReview && this._reviewCard(userReview, true);\n };\n\n private readonly _reviewCards = (reviewList: Review[]) => {\n const userReview = this.props.data.userReview.result;\n const reviewElements: IReviewCardViewProps[] = [];\n\n for (const review of reviewList) {\n if (!review.isTakenDown && review.isPublished && userReview ? review.reviewId !== userReview.reviewId : true) {\n reviewElements.push(this._reviewCard(review, false));\n }\n }\n return reviewElements;\n };\n\n private readonly _reviewCard = (review: Review, userReview: boolean): IReviewCardViewProps => {\n return ReviewCard({\n review,\n resources: { ...this.props.resources },\n context: this.props.context,\n isUserReview: userReview,\n parentId: this.props.id,\n parentType: this.props.typeName,\n reportedReviews: this.state.reportedReviews,\n returnRef: this._userReportModalToggle,\n reportedReviewId: this.state.reportingReviewId,\n toggleWriteReviewModal: this._toggleReviewModal,\n toggleReportReviewModal: this._onReportModalOpen,\n updateReviewHelpfulness: this.updateReviewHelpfulnessVote,\n votedReviews: this.state.votedReviews\n });\n };\n\n private readonly _userReviewModal = (): IReviewModalViewProps => {\n return ReviewModal({\n userReview: this.props.data.userReview.result,\n product: this.props.data.product.result,\n resources: { ...this.props.resources },\n context: this.props.context,\n parentId: this.props.id,\n parentType: this.props.typeName,\n isOpen: this.state.isReviewModalOpen,\n rating: this.state.userReviewRating,\n reviewTitle: this.state.userReviewTitle,\n reviewText: this.state.userReviewText,\n onModalToggle: this._toggleReviewModal,\n onTitleChange: this._onTitleChange,\n onTextChange: this._onTextChange,\n onRatingChange: this._onRatingChange,\n onReviewComplete: this._onReviewComplete,\n renderContextId: 'writeReview-list',\n returnRef: this._userReviewModalToggle,\n hasError: this.state.hasReviewError,\n modalCSS: 'ms-reviews-list'\n });\n };\n\n private readonly _onTitleChange = (event: React.ChangeEvent): void => {\n this.reviewsListCallbacks.updateReviewTitle(event.target.value);\n };\n\n private readonly _onTextChange = (event: React.ChangeEvent): void => {\n this.reviewsListCallbacks.updateReviewText(event.target.value);\n };\n\n private readonly _onRatingChange = (value: number): void => {\n this.reviewsListCallbacks.updateRating(value);\n };\n\n private readonly _toggleReviewModal = (): void => {\n const userReview = this.props.data.userReview.result;\n if (this.state.isReviewModalOpen) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({\n isReviewModalOpen: true,\n userReviewText: userReview!.reviewText,\n userReviewTitle: userReview!.title,\n userReviewRating: userReview!.rating\n });\n }\n };\n\n private readonly _onReviewComplete = (isSuccess: boolean): void => {\n if (isSuccess) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n };\n\n private readonly _reportReviewModal = () => {\n return ReportReviewModal({\n resources: { ...this.props.resources },\n context: this.props.context,\n isOpen: this.state.isReportModalOpen,\n returnRef: this._userReportModalToggle,\n reportedKey: this.state.reportedKey,\n onModalToggle: this._onReportModalClose,\n onRadioChange: this._onRadioChange,\n reportReview: this._reportReview,\n hasError: this.state.hasReportError,\n telemetryContent: this.telemetryContent\n });\n };\n\n private readonly _onReportModalOpen = (reviewId: string) => {\n this.setState({\n isReportModalOpen: true,\n reportingReviewId: reviewId,\n reported: false,\n reportedKey: ReviewConcernCategory.SpamAdvertising\n });\n };\n\n private readonly _onReportModalClose = () => {\n this.setState({ isReportModalOpen: false, hasReportError: false });\n };\n\n private readonly _onRadioChange = (event: React.ChangeEvent) => {\n this.setState({ reportedKey: event.currentTarget.getAttribute('data-key') || '' });\n };\n\n private readonly _reportReviewCallback = (reviewId: string, reportedKey: string) => {\n reportReviewConcern(\n new ReportReviewConcernInput(\n reviewId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n reportedKey,\n this.getUserToken(this.props.context.request),\n getRnrAuthEndpointId(this.props.context.actionContext)\n ),\n this.props.context.actionContext\n )\n .then((_value: boolean) => {\n const reportedReview = this.state.reportedReviews;\n reportedReview.push(reviewId);\n this.setState({ reported: true, reportedReviews: reportedReview, hasReportError: false });\n })\n .catch((error: boolean) => {\n this.setState({ hasReportError: true });\n });\n };\n\n private readonly _reportReview = () => {\n this._reportReviewCallback(this.state.reportingReviewId, this.state.reportedKey);\n };\n\n private readonly updateSortByDropdown = async (notification: ILabeledDropdownOnChangeNotification) => {\n await this.updateReviews(0, notification.selectedOption, this.state.selectedFilterByOption, 1, this.state.isFilterApplied);\n };\n\n private readonly updateFilterByDropdown = async (notification: ILabeledDropdownOnChangeNotification) => {\n await this.updateReviews(0, this.state.selectedSortByOption, notification.selectedOption, 1, true);\n };\n\n private readonly updateReviews = async (\n skipItems: number | 0,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ) => {\n const productId = getSelectedProductIdFromActionInput(this.props.context.actionContext);\n if (productId === undefined) {\n return;\n }\n const result = await getReviewsForGivenProduct(\n // Task #211227597 Remove this hardcoded values.\n new GetProductReviewsInput(\n productId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n getRnrEndpointId(this.props.context.actionContext),\n selectedSortByOption.key,\n selectedFilterByOption.key,\n skipItems < 0 ? 0 : skipItems,\n this.props.config.reviewsShownOnEachPage\n ),\n this.props.context.actionContext\n );\n if (result && result.items && result.pagingInfo && result.pagingInfo.totalItems !== undefined) {\n this.setState({\n currentPage,\n listOfReviews: result.items,\n selectedSortByOption,\n selectedFilterByOption,\n reviewsCount: result.pagingInfo.totalItems,\n isFilterApplied\n });\n }\n };\n\n private readonly _updateVoteUi = (reviewId: string, isHelpful: boolean): void => {\n let alreadyExists = false;\n let list = this.state.votedReviews.map(review => {\n if (review.reviewId === reviewId) {\n review.approved = isHelpful;\n alreadyExists = true;\n }\n return review;\n });\n\n if (!alreadyExists) {\n list = list.concat({ reviewId, approved: isHelpful });\n }\n\n this.setState({ votedReviews: list });\n };\n\n private readonly updateReviewHelpfulnessVote = (reviewId: string, isHelpful: boolean): void => {\n submitHelpfulnessVote(\n new SubmitHelpfulnessVoteInput(\n reviewId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n isHelpful,\n this.getUserToken(this.props.context.request),\n getRnrAuthEndpointId(this.props.context.actionContext)\n ),\n this.props.context.actionContext\n )\n .then(() => {\n this._updateVoteUi(reviewId, isHelpful);\n })\n .catch((error: Error) => {\n throw new Error('[submitHelpfulnessVote]Error executing action');\n });\n };\n\n private readonly getUserToken = (context: Msdyn365.IRequestContext): string => {\n return context && context.user && context.user.token;\n };\n}\n\nexport default ReviewsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewModalViewProps } from '../../common/review-modal';\nimport { IReportReviewModalViewProps } from './components/report-review-modal';\nimport { IReviewCardViewProps } from './components/review-card';\nimport { IReviewsListState, IReviewsListViewProps } from './reviews-list';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n \n \n \n {props.reviewTitle}\n {props.date}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport const SignInMessage: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n\nexport const SignInButton: React.FC<{ text: string; href: string; ariaLabel: string; telemetryContent?: ITelemetryContent }> = (props: {\n text: string;\n href: string;\n ariaLabel: string;\n telemetryContent?: ITelemetryContent;\n}) => {\n const { text, href, ariaLabel, telemetryContent } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\ninterface IModalToggleProps {\n innerRef: React.RefObject | undefined;\n id: string;\n text: string;\n ariaLabel: string;\n telemetryContent?: ITelemetryContent;\n onClick(): void;\n}\n\nexport const ModalToggle: React.FC = (props: IModalToggleProps) => {\n const { text, onClick, ariaLabel, innerRef, telemetryContent, id } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.WriteReview);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IReviewModalViewProps, ReviewModal, submitReview } from '../../common/review-modal';\nimport { TOGGLE_REVIEW_MODAL_BUTTON_ID } from '../../common/rnrInterface';\nimport { ModalToggle, SignInButton, SignInMessage } from './components/components';\nimport { IWriteReviewData } from './write-review.data';\nimport { IWriteReviewProps } from './write-review.props.autogenerated';\n\nexport interface IWriteReviewCallbacks {\n toggleModal(): void;\n updateReviewTitle(title: string): void;\n updateReviewText(text: string): void;\n updateRating(rating: number): void;\n onReviewSubmitted(isSuccessful: boolean): void;\n submitReview(\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: Msdyn365.ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n ): void;\n}\n\nexport interface IWriteReviewState {\n rating: number;\n reviewTitle: string;\n reviewText: string;\n isReviewModalOpen: boolean;\n hasReviewError: boolean;\n}\n\nexport interface IWriteReviewViewProps extends IWriteReviewProps {\n state: IWriteReviewState;\n className: string;\n callbacks: IWriteReviewCallbacks;\n signInMessage: React.ReactNode;\n signInButton: React.ReactNode;\n modalToggle: React.ReactNode;\n reviewModal: IReviewModalViewProps;\n moduleProps: IModuleProps;\n heading: React.ReactNode;\n}\n\n/**\n * This module is enables user's to leave ratings and reviews on a specific product\n * WriteReview module.\n * @extends {React.PureComponent>}\n */\nclass WriteReview extends React.PureComponent, IWriteReviewState> {\n private readonly _modalToggleRef: React.RefObject | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n private readonly writeReviewCallbacks: IWriteReviewCallbacks = {\n // @ts-expect-error\n toggleModal: this._toggleReviewModal,\n updateReviewTitle: (title: string): void => {\n this.setState({ reviewTitle: title });\n },\n updateReviewText: (text: string): void => {\n this.setState({ reviewText: text });\n },\n updateRating: (rating: number): void => {\n this.setState({ rating });\n },\n onReviewSubmitted: (isSuccessful: boolean): void => {\n if (isSuccessful) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n },\n submitReview\n };\n public constructor(props: IWriteReviewProps) {\n super(props);\n const {\n userReview: { result: userReview }\n } = this.props.data;\n this._toggleReviewModal = this._toggleReviewModal.bind(this);\n this._modalToggleRef = React.createRef();\n const rating = userReview ? userReview.rating : 0;\n const reviewTitle = userReview ? userReview.title : '';\n const reviewText = userReview ? userReview.reviewText : '';\n\n this.state = {\n isReviewModalOpen: false,\n rating,\n reviewTitle,\n reviewText,\n hasReviewError: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { resources } = this.props;\n const { className, heading } = this.props.config;\n const {\n product: { result: product },\n userReview: { result: userReview }\n } = this.props.data;\n\n const userInfo = this.props.context && this.props.context.request && this.props.context.request.user;\n const completeClass = classnames('ms-write-review', 'msc-modal-input-required', className);\n const viewProps = {\n ...this.props,\n state: this.state,\n className: completeClass,\n moduleProps: {\n moduleProps: this.props,\n className: completeClass,\n id: null\n },\n callbacks: this.writeReviewCallbacks,\n signInMessage: ,\n signInButton: (\n \n ),\n modalToggle: !Msdyn365.isOboRequest(this.props.context.request) && product && (\n \n ),\n reviewModal: this._buildUserReviewModal(),\n heading: heading && heading.text && (\n \n )\n } as IWriteReviewViewProps;\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 private readonly _onTitleChange = (event: React.ChangeEvent): void => {\n this.writeReviewCallbacks.updateReviewTitle(event.target.value);\n };\n\n private readonly _onTextChange = (event: React.ChangeEvent): void => {\n this.writeReviewCallbacks.updateReviewText(event.target.value);\n };\n\n private readonly _onRatingChange = (value: number): void => {\n this.writeReviewCallbacks.updateRating(value);\n };\n\n private readonly _toggleReviewModal = (): void => {\n const userReview = this.props.data.userReview.result;\n if (this.state.isReviewModalOpen) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else if (userReview) {\n this.setState({\n isReviewModalOpen: true,\n reviewText: userReview.reviewText,\n reviewTitle: userReview.title,\n rating: userReview.rating\n });\n } else {\n this.setState({\n isReviewModalOpen: true,\n reviewText: '',\n reviewTitle: '',\n rating: 0\n });\n }\n };\n\n /**\n * This method builds the user review modal.\n * @param config The module config.\n */\n private _buildUserReviewModal(): IReviewModalViewProps {\n return ReviewModal({\n userReview: this.props.data.userReview.result,\n product: this.props.data.product.result,\n resources: { ...this.props.resources },\n context: this.props.context,\n parentId: this.props.id,\n parentType: this.props.typeName,\n isOpen: this.state.isReviewModalOpen,\n rating: this.state.rating,\n reviewTitle: this.state.reviewTitle,\n reviewText: this.state.reviewText,\n onModalToggle: this._toggleReviewModal,\n onTitleChange: this._onTitleChange,\n onTextChange: this._onTextChange,\n onRatingChange: this._onRatingChange,\n onReviewComplete: this.writeReviewCallbacks.onReviewSubmitted,\n renderContextId: 'writeReview',\n returnRef: this._modalToggleRef,\n hasError: this.state.hasReviewError,\n telemetryContent: this.telemetryContent\n });\n }\n}\n\nexport default WriteReview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewModalViewProps } from '../../common/review-modal';\nimport { IWriteReviewViewProps } from './write-review';\n\nconst WriteReviewView: React.FC = props => {\n const { heading, signInMessage, signInButton, modalToggle, reviewModal, moduleProps } = props;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {modalToggle}\n {createReviewModal(reviewModal, moduleProps)}\n \n )}\n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nexport default WriteReviewView;\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 IWishlistItemDimension {\n key: string;\n className?: string;\n dimensionType: string;\n dimensionValue: string;\n}\n\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\n
\n {dimensionType}:\n {dimensionValue}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n CommerceListLine,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWishlistItemActionMessageState } from '../wishlist-items';\nimport { WishlistItemDimension } from './wishlist-items-dimensions';\n\nexport interface IWishlistItemProps extends CommerceListLine {\n product: SimpleProduct;\n wishlistState: IWishlistItemActionMessageState;\n price?: ProductPrice;\n context: ICoreContext>;\n productUrl: string;\n imageSettings?: IImageSettings;\n removeFromWishlistText: string;\n isInStock: boolean;\n addToCartText: string;\n outOfStockText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n enableImageProductLink?: boolean;\n inventoryInformationLabel?: string;\n inventoryLabelClassName?: string;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onAddToCart(product: SimpleProduct, itemKey: string): void;\n onRemoveItem(productId: number): void | undefined;\n onDismiss(): void;\n };\n resources: {\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n };\n}\n\nexport interface IWishlistItemViewProps {\n key: string;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n productDimensions?: React.ReactNode[];\n productPrice?: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productStatusMessage?: React.ReactNode;\n productName?: React.ReactNode;\n productAriaLabel?: string;\n entireProductLink?: string;\n inventoryInformation?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n}\n\nconst _addItemToCart = (props: IWishlistItemProps): void => {\n const { product, itemKey, handlers } = props;\n const { onAddToCart } = handlers;\n\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\n};\n\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\n const { onRemoveItem } = props.handlers;\n const { RecordId } = props.product;\n\n onRemoveItem && RecordId && onRemoveItem(RecordId);\n};\n\nconst WishListItemActions = {\n addToCart: _addItemToCart,\n removeItem: _removeItemFromWishlist\n};\n\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\n if (!msdyn365Commerce.isBrowser) {\n return '';\n }\n\n const fullUrl = new URL(props.productUrl, window.location.href);\n for (const dimension of props.product.Dimensions ?? []) {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n }\n return fullUrl.href;\n // return updateProductUrl(productUrl, context, swatch);\n};\n\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\n const { product, price, context, resources } = props;\n\n const { Name, Dimensions } = product;\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\n\n let formattedPrice = 'Free';\n let dimensions = null;\n\n if (price) {\n formattedPrice =\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\n }\n\n if (Dimensions) {\n dimensions = Dimensions.map(productDimension => {\n switch (productDimension.DimensionTypeValue) {\n case 1:\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 3:\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 4:\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n default:\n return '';\n }\n });\n }\n\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\n};\n\n/**\n * Renders a link to a product based on the given props.\n * @param input - Wishlist item props with the info about the product.\n * @param productUrl - The url to the product.\n * @returns React component with a link to a product.\n */\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\n const { telemetryContent } = input;\n const { RecordId: recordId, Name: productName } = input.product;\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPageUrlWithSwatch = productUrl;\n return (\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\n \n {productName}\n \n )\n );\n};\n\n/**\n * Renders a product name box.\n * @param productName - The text to display.\n * @returns React component with a name of a product.\n */\nconst renderProductName = (productName: string) => {\n return
{productName}
;\n};\n\n/**\n * Renders inventory information.\n * @param inventoryInformationLabel - The text to display.\n * @param inventoryLabelClassName - The component class name.\n * @returns React component.\n */\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\n const inventoryCssName = inventoryLabelClassName\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\n : 'ms-wishlist-items__inventory-label';\n return (\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\n {inventoryInformationLabel}\n )\n );\n};\n\n/**\n * Renders add to cart button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\n const { isInStock, addToCartText, outOfStockText } = input;\n\n // Check if the product is service or not by product type.\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\n\n const addItemAction = React.useCallback(() => {\n WishListItemActions.addToCart(input);\n }, [input]);\n\n return (\n \n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\n \n );\n};\n\n/**\n * Renders remove from wishlist button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\n const { removeFromWishlistText } = input;\n\n const removeItemAction = React.useCallback(() => {\n WishListItemActions.removeItem(input);\n }, [input]);\n\n return \n
{choiceSummary}
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n \n \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultV2ModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown?: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, refineMenuContainer, refinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultV2ModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown?: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, refineMenuContainer, refinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerV2Resources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { sortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, titleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPriceComponentResources } from '@msdyn365-commerce/components';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Button, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { MouseEventHandler, useEffect, useState } from 'react';\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport {\n ISearchResultContainerProps,\n ISearchResultContainerResources\n} from '../definition-extensions/search-result-container.ext.props.autogenerated';\nimport { ProductComponent } from './components/product.component';\n\n/**\n * DescriptionInterval.\n */\nenum DescriptionInterval {\n productDescriptionInterval = 14,\n productDescriptionIntervalRemainder0 = 0,\n productDescriptionIntervalRemainder9 = 9\n}\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst renderProductCards = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\n return {props.products};\n};\n\n/**\n * Returns the product inventory label.\n * @param channelInventoryConfigurationId - The channel configuration Id.\n * @param product - The product.\n * @returns The inventory label.\n */\nfunction getInventoryLabel(channelInventoryConfigurationId: number | undefined, product: ProductSearchResult): string | undefined {\n if (!channelInventoryConfigurationId || !ArrayExtensions.hasElements(product.AttributeValues)) {\n return undefined;\n }\n const inventoryAttribute = product.AttributeValues.find(attribute => attribute.RecordId === channelInventoryConfigurationId);\n if (inventoryAttribute) {\n return inventoryAttribute.TextValue;\n }\n return undefined;\n}\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @param product - The product item data.\n * @param index - The index of each product item.\n * @param isEnabledProductDescription - The flag for showing Product desription tile.\n * @returns The JSX Element.\n */\nconst renderProductCardsDescription = (\n props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>,\n product: ProductSearchResult,\n index: number,\n isEnabledProductDescription?: boolean\n): JSX.Element | null => {\n const { config, context, resources, productsDimensionAvailabilities } = props;\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\n const breadCrumbType = props.context.app.config.breadcrumbType;\n const isAllowBack = props.config.allowBackNavigation && (breadCrumbType === 'back' || breadCrumbType === 'categoryAndBack');\n const classname = isEnabledProductDescription\n ? 'ms-product-search-result__item product__description'\n : 'ms-product-search-result__item';\n const quickviewslot = ArrayExtensions.hasElements(props.slots.quickview) ? props.slots.quickview[0] : undefined;\n const channelInventoryConfigurationId = props.data.products.result?.channelInventoryConfigurationId;\n const isPriceMinMaxFeatureState = props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n\n const productComparisonButton = ArrayExtensions.hasElements(props.slots.productComparisonButton)\n ? props.slots.productComparisonButton[0]\n : null;\n\n return (\n
  • \n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === product.MasterProductId\n )}\n />\n
  • \n );\n};\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst renderProducts = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\n const products = props.data.listPageState.result?.activeProducts;\n if (!products || !ArrayExtensions.hasElements(products)) {\n return null;\n }\n const productDescriptionInterval: number = DescriptionInterval.productDescriptionInterval;\n const productDescriptionIntervalRemainder0: number = DescriptionInterval.productDescriptionIntervalRemainder0;\n const productDescriptionIntervalRemainder9: number = DescriptionInterval.productDescriptionIntervalRemainder9;\n return (\n \n {props.errorMessage}\n
      \n {products.map((product: ProductSearchResult, index: number) =>\n index % productDescriptionInterval === productDescriptionIntervalRemainder0 ||\n index % productDescriptionInterval === productDescriptionIntervalRemainder9\n ? renderProductCardsDescription(props, product, index, true)\n : renderProductCardsDescription(props, product, index, false)\n )}\n
    \n
    \n );\n};\n\n/**\n * Render Title Count.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitleCount = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return {title.titleCount};\n }\n return null;\n};\n\n/**\n * Render Category Hierarchy.\n * @param props - The category hierarchy view props.\n * @returns The JSX Element.\n */\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\n/**\n * Function to make filter sticky.\n * @param isMobile - The boolean prop.\n * @param isStickyHeader - The boolean prop.\n */\nexport const configureStickyFilter = (isMobile: boolean, isStickyHeader: boolean): void => {\n // Get heights of cookie and promotion banners\n const defaultValue = 0;\n const defaultOffset = 28;\n const headerContainer: HTMLElement | null = document.querySelector('.ms-header');\n\n const headerHeight: number | undefined = headerContainer?.offsetHeight;\n const containerHeight: number = headerHeight ?? defaultOffset;\n const bannerHeights = isStickyHeader ? defaultValue : containerHeight;\n const headerElement = document.querySelector('header .lock-opaque');\n const defaultContainer = document.querySelector('header .default-container');\n const refinerElement = isMobile ? document.querySelector('.msc-sort-filter-wrapper') : document.querySelector('.ms-refiner-heading');\n if (refinerElement && headerElement && defaultContainer) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\n refinerElement.classList.add('lock-Filter');\n refinerElement.setAttribute('style', `top: ${defaultContainer.clientHeight}px`);\n } else {\n refinerElement.classList.remove('lock-Filter');\n }\n } else if (refinerElement) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\n refinerElement.classList.add('lock-top');\n } else {\n refinerElement.classList.remove('lock-top');\n refinerElement.classList.remove('lock-Filter');\n refinerElement.removeAttribute('style');\n }\n }\n};\n\n/**\n * Function to setup filter sticky.\n * @param isMobile - The boolean prop.\n * @param isStickyHeader - The boolean prop.\n */\nfunction stickyFilterSetup(isMobile: boolean, isStickyHeader: boolean): void {\n window.addEventListener('scroll', () => {\n configureStickyFilter(isMobile, isStickyHeader);\n });\n configureStickyFilter(isMobile, isStickyHeader);\n}\n\n/**\n * Function to make filter sticky.\n * @param refinerRefernce - Ref prop for filter.\n * @param toggle - Toggle function for filter menu.\n */\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event) => void) {\n React.useEffect(() => {\n /**\n * Function to make filter sticky.\n * @param event - Event prop for filter.\n */\n function handleClickOutside(event: Event) {\n const element = document.querySelector('.ms-refine-filter__toggle_collapsed');\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node) && !element) {\n toggle(event);\n }\n }\n if (MsDyn365.isBrowser) {\n document.addEventListener('click', handleClickOutside);\n }\n return () => {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('click', handleClickOutside);\n }\n };\n }, [refinerRefernce, toggle]);\n}\n\n/**\n * Render the category page items.\n * @param props - The view props.\n * @returns The search Result container module view.\n */\nconst SearchResultContainerView: React.FC> = props => {\n const {\n SearchResultContainer,\n pagination,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n FeatureSearchContainer,\n similarLookProduct,\n errorMessage,\n resources\n } = props;\n useEffect(() => {\n if (props.config.useStickyFilter && MsDyn365.isBrowser) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app context is generic\n stickyFilterSetup(props.isMobile, props.context.app.config.enableStickyHeader as boolean);\n }\n }, [props]);\n const [isExpanded, setIsExpanded] = useState(false);\n const toggle = () => {\n setIsExpanded(!isExpanded);\n };\n const wrapperRefiner = React.useRef(null);\n useOutsideClick(wrapperRefiner, toggle);\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {similarLookProduct ? null : (\n \n {renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {renderTitleCount(TitleViewProps)}\n \n )}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n );\n }\n return (\n \n {similarLookProduct ? null : (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {TitleViewProps && renderTitle(TitleViewProps)}\n {TitleViewProps && renderTitleCount(TitleViewProps)}\n \n )}\n {similarLookProduct}\n \n \n \n \n {resources.filterText}\n \n
    {choiceSummary}
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n
    \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n
    \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n
    \n
    \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerResources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n"],"names":["CartLineItemFunctions","renderProductDimensions","Product","DimensionStrings","Dimensions","map","productDimension","DimensionTypeValue","React","key","RecordId","className","colorString","DimensionValue","Value","configString","sizeString","IsGiftCard","amountString","styleString","props","data","cartLine","DiscountLines","length","discountLine","index","OfferId","OfferName","resources","discountStringText","PriceComponent","isSalesLine","price","CustomerContextualPrice","PeriodicDiscount","EffectiveAmount","BasePrice","context","id","typeName","undefined","Percentage","inventoryInformationLabel","inventoryCssName","inventoryLabelClassName","_props$context$reques","pickupDeliveryModeCode","request","channel","PickupDeliveryModeCode","channelDeliveryOptionConfig","cartline","hasShippingMethod","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","some","deliveryMode","shippingChargeLines","ChargeLines","filter","chargeLine","IsShipping","freightFee","reduce","chargeTotal","CalculatedAmount","priceComponent","freePriceText","shippingChargesText","_cartline$ChargeLines","otherCharges","chargeline","otherCharge","Description","productUrl","product","destructDimensionStrings","fallbackImageUrl","getFallbackImageUrl","ItemId","actionContext","requestContext","apiSettings","productDimensions","imageSettings","cropFocalRegion","renderDisountLines","renderInventoryLabel","renderShippingLabel","renderOtherCharges","payLoad","getPayloadObject","telemetryContent","toString","prodAttribute","getTelemetryAttributes","productName","Name","Image","src","primaryImageUrl","fallBackSrc","altText","gridSettings","loadFailureBehavior","Object","assign","href","ArrayExtensions","hasElements","NetAmount","Price","NetAmountWithoutTax","NetPrice","showShippingChargesForLineItems","_generateQuantityandPrice","nodes","isOutOfStock","errorMessage","IsInvoiceLine","isQuantityEditable","push","originalPriceText","currentPriceText","DiscountAmount","DiscountAmountWithoutTax","PromoCode","constructor","state","super","_onInputChange","e","error","target","value","this","setState","promoCodeInputValue","canApply","_applyPromotion","cartState","cart","appliedPromo","addPromoCode","promoCode","then","result","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","catch","failedToAddPromoCodeErrorText","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","attributes","onSubmit","event","preventDefault","onChange","placeholder","Button","title","onClick","disabled","_removePromotion","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_calculateDiscount","CartLines","discountAmount","line","DiscountCode","DiscountCost","_renderAppliedPromoCode","Coupons","promoCodTotalDiscount","count","coupon","Code","appliedPromoCodeHeadingText","ariaLabel","removePromoAriaLabelFormat","format","removePromoText","TelemetryConstant","ApplyPromoCode","isCollapseOpen","render","promoCodeHeadingText","role","HeaderPreferredStore","modalCloseButtonRef","handleClick","_findPreferredStoreOnClick","storeSelectorStateManager","slots","storeSelector","storeName","preferredStore","StoreName","headerPreferredStoreText","color","headerPreferredStoreAriaLabel","ref","modules","storeSelectorId","keys","openDialog","showMapViewLink","parentElementRef","onLocationSelected","orgUnitLocation","Promise","resolve","telemetry","message","debug","__decorate","observer","Logo","_renderLogo","config","link","linkUrl","destinationUrl","openInNewTab","rel","_renderImage","Msdyn365","image","viewports","xs","q","w","h","lg","lazyload","editProps","moduleType","imagePropertyName","shouldSkipToMainImage","NavIcon","toggleNavBar","mobileHamburgerAriaLabel","isExpanded","targetId","Header","isB2BSite","handleLinkTextChange","linkIndex","_this$props$config$my","myAccountLinks","linkText","popOverRef","_toggleNavbar","bind","_togglePopover","_keydown","mobileMenuCollapsed","signinPopoverOpen","hasSigninerror","getTelemetryObject","telemetryPageName","friendlyName","isChannelTypeB2B","_this$props$context$r","MsDyn365","workerName","customerName","user","name","_this$props$data$empl","worker","employee","_this$props$data$acco","customer","accountInformation","FirstName","componentDidMount","isBrowser","window","addEventListener","reaction","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","signInCustomerNotAuthorizedTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","instance","addNotification","ErrorNotification","componentWillUnmount","removeEventListener","wishlists","cartLabel","cartQtyLabel","logoLink","logoImage","shouldShowWishlistCount","disableTooltip","app","headerToggleClass","headerClassName","classnames","navbarKey","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","currentDistributorSlot","CommerceListLines","viewProps","_objectSpread","logo","wishListIconDesktop","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","wishListIconMobile","cartIcon","CartIconComponent","navIcon","menuBar","search","siteOptions","HeaderTag","moduleProps","headerAriaLabel","tag","HeaderContainer","HeaderTopBarContainer","Divider","MobileMenuContainer","Modal","isOpen","wrapClassName","toggle","MobileMenuHeader","ModalHeader","MobileMenuBodyContainer","ModalBody","MobileMenuLinksContainer","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","displayName","Popover","placement","signInLink","_getSigninButton","signOutLink","_getSignOutButton","isOBORequest","switchCustomerLink","_getSwitchCustomerButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","accountLinks","_getAccountLinks","currentDistributor","renderView","slotName","SignIn","signInLinkText","signInUrl","signInLinkAriaText","onTelemetryClick","_user$signOutUrl","SignOut","signOutLinkText","signOutUrl","signOutLinkAriaText","SwitchCustomer","isOBOAccountSelected","cookies","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","getBusinessPartnerSelectionUrl","removeAccountSelectionCookie","shoppingAsText","route","url","URL","location","forEach","param","searchParams","delete","retailServerErrorCode","signUpCustomerNotFound","signUpMultipleCustomerFound","signInCustomerNotAuthorized","retailServerErrorMessage","MyProfile","innerRef","cta","contentAction","etext","editableLink","additionalProperties","onTextChange","keyCode","KeyCodes","Escape","computed","_renderReactFragment","items","slot","Module","Node","_renderDesktopAccountBlock","OrderTemplateActions","onRemoveOrderTemplate","handlers","itemKey","removeOrderTemplateActionHandler","input","OrderTemplateRender","Id","orderTemplate","removeFromOrderTemplateListText","orderTemplateState","enableImageProductLink","onDismiss","orderTemplateImage","_renderOrderTemplateImages","orderTemplateLines","orderTemplateAriaLabel","_renderAriaLabel","orderTemplateName","_getOrderTemplatePageUrl","_getUrlSync","getUrlSync","separator","includes","totalLines","addToCartButton","AddOrderTemplateToCartComponent","moduleTypeName","addToCartText","addToBagText","dialogStrings","isMultipleCatalogFeatureEnabledInHq","removeButton","orderTemplateStatusMessage","userMessage","Alert","statusCssString","onClickHandler","defaultImageSettings","xl","slice","_line$productListLine","_line$fullProduct$Pro","_line$fullProduct","_line$fullProduct2","_line$fullProduct$Pro2","_line$fullProduct3","_getFallbackImageUrl","_line$fullProduct4","_context$request$app","fullProduct","_updateProductUrlCatalog","ProductDetails","productListLine","CatalogId","PrimaryImageUrl","OmniChannelMedia","productDetails","catalogId","getProductUrlSync","StringExtensions","isNullOrWhitespace","fullUrl","set","OrderTemplateListStatusMessage","_ref","errorType","text","modalCloseButtonReference","onCancelHandler","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","useState","onCreateButtonClick","createOrderTemplateText","OrderTemplateNameDialog","modalOpen","isUpdateDialog","setModalOpen","createOrderTemplateDialogResources","onCancel","onSuccess","onOrderTemplateCreated","OrderTemplateList","_isChannelMultipleCatalogsFeatureEnabled","_this$props$data$feat","featureState","find","feature","IsEnabled","_onDismiss","_reloadPage","async","reload","_onRemoveFromOrderTemplateList","productListId","orderTemplates","isAuthenticated","token","p","productList","deleteAsync","callerContext","warning","headerStatusMessage","deleteOrderTemplateFailedText","messageGlyph","shouldComponentUpdate","nextProps","nextState","_heading$text","_heading$tag3","heading","emptyOrderTemplateText","createNewTemplateButtonText","orderTemplatesData","orderTemplateListHeading","orderTemplateListTitle","_heading$tag","errorProps","statusMessage","Spinner","msg","progressNotificationText","Heading","_heading$tag2","emptyViewProps","createOrderTemplateButton","CreateNewTemplateButtonComponent","_generateOrderTemplateNameDialogResources","templateHeaderStatusMessage","OrderTemplates","OrderTemplate","_renderOrderTemplateList","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","currentTemplateProps","addToBagButtonText","moduleId","closeWindowButtonText","addToCartFailureMessage","addToCartSuccessMessage","addToCartProcessMessage","orderTemplateErrorMessage","linesAddedToCartDialogResources","viewCartButtonText","orderTemplateCloseButtonText","linesAddedToCartHeaderItemsOneText","linesAddedToCartHeaderLinesOneText","linesAddedToCartHeaderLinesFormatText","linesAddedToCartHeaderMessageText","OrderTemplateListView","_renderOrderTemplate","CONTENT","AddLineToTemplate","query","products","productCatalogs","content","Search","selectedProduct","selectedCatalogId","searchTextInput","addLineButtonRef","_renderSearchForm","searchButtonAriaLabel","searchModalPlaceholderText","selectCatalogTitleText","autoComplete","_onSearchSubmit","htmlFor","_onCatalogSelectionChange","_getCatalogNodes","type","autoFocus","maxLength","_get","Loading","_getSearchResults","NotFound","ProductList","Error","_onQuantityChangeHandler","selectedQuantity","_onSelectItem","channelId","varianteInput","SelectedVariantInput","productVariant","getSelectedVariant","dimensions","_getProductDimensions","selectedProductDimensions","ProductConfiguration","_onBackButtonClickHandler","_highlightSearchTerm","parsedName","unescape","replace","RegExp","dangerouslySetInnerHTML","__html","_resultCountText","searchResultsCountVerbage","searchResultsCountSubject","_addItemToTemplateHandler","orderTemplateId","AddItemToOrderTemplateInput","quantity","DefaultUnitOfMeasure","addItemToOrderTemplate","reloadPage","Number","parseInt","_toggleModalHandler","_getCatalogs","current","focus","onComponentDidMount","_this$searchTextInput","onComponentDidUpdate","_this$searchTextInput2","addLineModalLinkText","backToResultsText","modalProps","showBackArrow","_renderContent","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","clickHandler","renderResultCountText","notFoundSearchErrorNotice","notFoundSearchErrorRedediation","NotFoundComponent","searchErrorMessage","catalogs","getCatalogId","validateCatalogId","productCatalog","isSelected","selected","searchText","searchCriteriaInput","Context","ChannelId","IncludeAttributes","SearchCondition","searchByCriteriaAsync","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","Dropdown","selectMenu","_onChanged","selectedIndex","dropdownId","selectId","selectedValue","innerText","dropdownList","dropdownName","item","OrderTemplateQuantity","inputRef","_validateMin","minValue","min","isNaN","currentInput","currentCount","_handleChange","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","incDisabled","max","currentValue","extraClass","getChangeHandler","amount","_onIncrementalChange","decrementButtonAriaLabel","tabIndex","pattern","onBlur","inputQuantityAriaLabel","incrementButtonAriaLabel","updatedQuantity","inputElement","HTMLInputElement","_debounce","setAttribute","defaultProps","selectedDimensions","_getDimensionsError","dimensionName","dimensionMissingError","_addToTemplateHandler","isBusy","showAddConfirmation","errors","add","missingDimensions","dimension","ProductListId","addToTemplateDuplicateError","addToTemplateGenericError","_onQuantityChange","newValue","totalPrice","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","_onDimensionChanged","_this$state$errors","remainingDimensionsErrors","selection","buttonDisabled","mappedDimensions","ExtensionProperties","variantProduct","dimensionInput","variantDimensions","availabilityInput","ProductAvailabilitiesForSelectedVariantInput","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","priceInput","PriceForSelectedVariantInput","productPrice","getPriceForSelectedVariant","productAvailableQuantity","unitPrice","sort","a","b","_getDropdownName","dimensionType","productDimensionTypeColor","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeStyle","_product$Name","_product$PrimaryImage","_product$Name2","addItemToTemplateText","addLineProductUnitPricePrefix","quantitySelectLabel","addLineProductUnitOfMeasurePrefix","totalPriceLabel","isMultipleCatalogSelect","_formatPrice","_getDimensionsNodes","ModalFooter","_getConfirmationMessage","selectedDimensionNames","_dimension$DimensionV","variant","addToTemplateConfirmation","values","join","_this$state$errors2","unshift","assertive","cultureFormatter","formatCurrency","currencyCode","toFixed","selectProductButtonText","_generateImageUrl","primaryImageSource","generateImageUrl","fallBackImg","ProductSelectButton","buttonText","setBusy","getClickHandler","OrderTemplateBulkActions","isAddDisabled","isRemoveDisabled","addHandler","onAddSelectionToBag","removeHandler","onRemoveSelection","selectedLines","_this$props$data$cata","searchInputAriaLabel","backButtonText","addSelectedToBagButtonText","removeSelectedToBagButtonText","addLineProps","isMinifiedView","removeOrderActionHandler","_removeOrderTemplate","onRemoveTemplate","_getOrderTemplateAddToCartDialog","addTemplateToBagButtonText","_getOrderTemplateRenameControl","renameOrderTemplateDialogStrings","RenameOrderTemplateComponent","onRenameTemplate","renameOrderTemplateButtonText","renameTemplateButtonText","buttonEventReference","ActionsSplitButton","isStatementRequestAdminDropdownOpen","setIsStatementRequestAdminDropdownOpen","renameOrderTemplateDialogOpen","onToggleDropdown1","popoverReference","renderModalPopup","existingOrderTemplate","onOrderTemplateNameCancel","_buttonEventReference","requestStatementDropdownString","Random","Guid","generateGuid","OrderTemplateLineActions","orderTemplateLine","LineId","onAddToBag","onRemoveItem","getAddToBag","getRemoveItem","PopUp","removeFromOrderTemplateLinesText","moreButtonText","viewProductDetailsText","showMobile","setShowMobile","toggleDetailsDisplayed","getActionButton","isMobile","removeButtonClassName","addButtonClassName","getDesktopActionButton","onSelectLineHandler","isChecked","onSelect","checked","ExtraActionsPopup","showActions","setShowActions","actionsContainerClassName","OrderTemplateMobileLineView","_context$request$app2","UnitOfMeasure","fallbackImage","productLineCatalog","renderProductCatalog","productImage","_renderProductImage","productInfo","renderProductInfo","_renderPrice","productNumber","productUnitOfMeasure","productQuantityView","_generateQuantity","onChangeHandler","onChangeQuantity","isQuantityDisabledForUpdate","_context$actionContex","_context$request","isB2b","catalog","_renderProductError","OOS","outOfStockProductErrorMessage","UNASSORTED","unavailableProductErrorMessage","NONE","_orderTemplateLine$fu","_renderProductDimensions","dimensionsLine","OrderTemplateLinesStatusMessage","OrderTemplateTableHeading","componentClassName","getOnChange","checkedLines","lines","scope","selectAllRowsText","productLineCatalogName","productUnitPrice","productUOM","productQuantity","productActions","OrderTemplateLines","_onRemoveSelection","removeSelectedFailureMessage","removeSelectedSuccessMessage","productSelection","productListLines","maxWaitTimeInMilliSeconds","removeProductListLinesAsync","setTimeout","_this$props$data$orde","substr","indexOf","_onAddSelectionToBag","productLine","_productLine$fullProd","_productLine$fullProd2","_productLine$fullProd3","_productLine$fullProd4","_productLine$productL","ProductTypeValue","AdjustedPrice","Quantity","_addItemToBag","_getCurrentUrl","reqContext","requestUrl","onCloseHandler","isItemAddedToOrderTemplateOpen","_renderItemAddedToCartDialog","_this$props$data$feat2","itemAddedToCartDialogData","ItemAddedToCartDialog","_generateItemAddedToCartDialogResources","onClose","_renderPagination","itemsPerPage","skipCount","_getCurrentPageNumber","totalItems","previousText","flipperPrevious","nextText","flipperNext","UncontrolledPagination","paginationAriaLabel","qsp","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","_toggleDetailsDisplayed","isDetailsDisplayed","detailedProductView","absoluteUrl","_changeQuantity","orderTemplateLinesData","orderLineIndex","findIndex","newProductListLine","prevQuantity","_objectWithoutProperties","_excluded","updateProductListLinesAsync","list","newLine","updatedLines","updatedOrderTemplate","ProductListLines","update","ActiveOrderTemplateLinesInput","editOrderTemplateLineQuantityError","maxQuantityLimitText","addedToCartFailureMessage","addProductToCartInput","addProductToCart","priceResult","AsyncResult","reject","isMiniCart","addToCartBehavior","maxQuantityForCartLineItem","_cart$result","_cart$result2","cartLineQuantity","ProductId","defaultMessage","_result$errorDetails","errorDetails","LocalizedMessage","_removeItemFromOrderTemplateLines","userToken","featureStates","getFeatureState","createGetFeatureStateInput","_featureStates$find","_renameTemplate","_removeTemplate","_orderTemplate$result","newLink","_getViewport","device","Type","innerWidth","sm","md","paginationPreviousText","paginationNextText","_viewport","_updateViewport","isConfirmAddSelectionToBagModalOpen","params","isEditor","emptyOrderTemplateLinesText","errorGettingOrderTemplateLines","ObjectExtensions","isNullOrUndefined","orderTemplateResult","_isFirstPage","orderActions","_renderOrderTemplateActions","bulkOrderLineActions","_getOrderTemplateLineActions","productsStatusMessage","ProductsTable","ProductsTableRow","ProductsTableHeading","_renderProductListHeader","orderLines","_renderProductList","callbacks","updateQuantity","debounce","pagination","itemAddedToCartDialog","updated","_product$fullProduct","onSelectAll","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productActionsText","headers","_generateLinesAddedToCartDialogResources","itemAddedToCartHeaderItemOneText","itemAddedToCartHeaderItemFormatText","itemAddedToCartHeaderMessageText","deleteTemplateButtonText","addTemplateToBag","renameTemplate","removeTemplate","actionsSplitButton","OrderTemplateActionsView","renameOrderTemplateTitleText","cancelBtnLabel","skip","selectOneRowText","priceFree","addOrderTemplateItemToBagButtonText","removeItemFromOrderTemplateButtonText","deleteButtonText","selectLine","addToBagButton","extraActionsPopup","popUp","shouldDisable","OrderTemplateLineView","ProductPrice","observable","action","_renderItem","quantityLabel","disableElement","pointerEvents","opacity","style","toggleDetails","fade","applicationNode","ProductComparisonPreview","_renderGreyPlaceHolders","productData","counts","greyPlaceHoldersCount","displayGreyPlaceHolders","elements","_removeProductFromList","itemId","ProductComparisonState","removeItemById","previousState","_previousState$produc","productsData","_handleCollapseClick","_previousState$isExpa","_hasUserInteractedWithComparison","_clearAllProductsFromTheComparison","_this$props$data$acco2","clearAll","_instanceId","_displayedInstanceId","_this$props$data$acco3","_loadProducts","listModifiedEvent","subscribe","instanceId","handler","_this$props$data$acco4","unsubscribe","_this$state$productsD","_this$props$data$prod","collapseButton","_renderCollapseButton","isMainContentReady","hasUserInteractedWithComparison","_getProdutComparisonDataByCatalogId","productsLimit","_getProductsLimit","subheaderText","productComparisonPreviewHeaderTextWithLimit","handleCollapseClick","productsMainInfo","_getProductsMainInfo","previewGreyPlaceHolders","productComparisonLink","clearAllProductsFromTheComparison","removeProductFromList","goToComparisonButton","_renderGoToComparisonButton","clearAllButton","_renderClearAllButton","_productData$filter","_this$props$data$acco5","GetProductsInPreviewProductComparisonInput","getProductsInPreviewProductComparisonAction","productDataByCatalogId","_getGreyPlaceHoldersCount","limit","placeHolder","productImageContainerClassName","tableRowClassName","productImageClassName","productNameClassName","productNameLink","msdyn365Commerce","_product$Dimensions","dimensionValue","convertProductDimensionTypeToDimensionTypes","removeFromComparisonButton","RemoveFromComparisonButtonComponent","productLink","viewport","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","defaultImageSettingQ","_this$state$isExpande","shouldBeExpanded","headerContainerClassName","mainContainerClassName","collapseClassName","collapseButtonClassName","footerClassName","productComparisonCompareProductsButtonText","productComparisonClearAllProductsButtonText","containerClassName","headerLabelClassName","tableClassName","ProductComparisonPreviewViewFunctionalComponent","_props$isExpanded","_props$productsMainIn","_props$productsMainIn2","productComparisonPreviewHeaderText","info","SpecificationDataTypeValues","ProductSpecification","CurrencyValue","CurrencyCode","_product$DateTimeOffs","isFunction","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","getRichTextHtml","_specification$DataTy","specification","DataTypeValue","none","currency","_renderCurrencyCell","dateTime","_renderDateTimeCell","decimal","_renderDecimalCell","integer","_renderIntegerCell","_renderTextCell","boolean","_renderTrueFalseCell","video","BooleanValue","productComparisonProductItemSpecificationTrue","productComparisonProductItemSpecificationFalse","RemoveFromComparisonButtonFunctionalComponent","useCallback","productComparisonRemoveProductFromListAriaLabel","SelectionType","ProductClickerDirections","ProductComparison","_clearAllProductsFromComparison","_configureBoxShadowOnScroll","_this$_tableReference","_tableReference","comparisonProductCardHeader","getElementsByClassName","tableHeaderClassName","Array","from","document","documentElement","scrollTop","classList","tableHeaderLockedClassName","remove","_handleScroll","_this$_tableHeaderRef","_tableHeaderReference","scrollTo","top","left","scrollLeft","_checkClickersState","_handleScrollClick","direction","_this$_tableBodyRefer","_this$_tableCellRefer","_document$body$parent","tableBody","_tableBodyReference","newLeftPosition","cellWidth","_tableCellReference","clientWidth","_getCellWidth","scrollPosition","Math","ceil","minLeftPosition","maxScroll","scrollWidth","body","parentElement","currentClickerPosition","change","hoverStateLastUpdate","Date","now","hoveringCellItemId","_handlePreviousClick","_document$body$parent2","right","_handleNextClick","_document$body$parent3","_this$_tableBodyRefer2","floor","_this$_tableBodyRefer3","_document$body$parent4","_shouldShowNextClicker","forceUpdate","_shouldShowPreviousClicker","newClickerPosition","_handleHoverIn","_hoveringCellItemId","_handleHoverOut","_goBack","backToShoppingUrl","referrer","history","back","specifications","_product$specificatio","specificationsList","allSpecifications","flatten","specificationNames","validValues","AttributeValueId","uniqueSpecificationNames","unique","allDimensions","dimensionIds","actionBarClassName","clearAllProductsFromComparison","isEmptyContent","_renderHeading","loading","_renderLoading","actionBarContainerProps","_getActionBarContainerProps","previousClicker","_renderPreviousClicker","nextClicker","_renderNextClicker","backToShopping","_renderBackToShoppingButton","emptyComparison","emptyComparisonContentSlots","_getProductComparisonDataByCatalogId","isConsentGiven","productCountText","productComparisonCountText","productsMainInfoData","allUniqueDimensionIds","getProductsDimensionsIds","updatedDimensionProps","getUpdatedDimensionsProps","tableReference","tableHeaderReference","tableBodyReference","tableCellReference","shouldShowPreviousClicker","shouldShowNextClicker","handlePreviousClick","handleNextClick","handleScroll","handleHoverIn","handleHoverOut","uniqueDimensionIds","_getProductsDimensions","dimensionsProps","uniqueSpecifications","_getProductsSpecifications","specificationsProps","_getSpecificationProps","GetProductsInProductComparisonInput","getProductsInProductComparisonAction","_renderQuickView","_product$productInfo$","quickViewSlot","quickViews","selectedProductId","defaultImageSettingsQ","_getTableHeaderProps","isHoverModeEnabled","tableHeaderCellClassName","onMouseEnter","onMouseLeave","_getTableCellProps","cellClassName","tableCellClassName","_renderProductRating","rating","_ratingValue$reviewsC","averageRating","ratingValue","RatingComponent","avgRating","readOnly","productComparisonProductItemRatingAriaLabel","ratingCount","reviewsCount","shouldShowFullRatingDescription","backToShoppingLabel","_getDimensionName","dimensionId","ProductDimensionType","Color","productComparisonProductItemColorDimension","Size","productComparisonProductItemSizeDimension","Style","productComparisonProductItemStyleDimension","dimensionClassName","dimensionsRowClassName","dimensionDescription","dimensionSelectionType","dimensionsAsSwatchConfiguration","dimensionsAsSwatchType","DimensionTypes","swatch","productDimensionValues","productMainInfo","_this$props$data$prod2","renderSwatch","textValue","productsDimension","_productsDimension$di","_productsDimension$di2","dimensionItems","dimensionItem","_dimensionItem$map","currentDimensionId","swatches","swatchItem","_productMainInfo$prod","_swatchItem$Dimension2","_swatchItem$Dimension3","_swatchItem$Dimension4","_swatchItem$Dimension5","_swatchItem$Dimension6","_swatchItem$Dimension7","_swatchItem$Dimension8","_swatchItem$Dimension9","isDefaultDimension","selectedDimension","_swatchItem$Dimension","DimensionId","colorHexCode","ColorHexCode","imageUrl","ImageUrl","isDefault","SwatchComponent","isSelectionEnabled","_dimensionItem$Dimens","_dimensionItem$Dimens2","productDimensionSeperatorValue","productDimensionSeparator","dimensionProps","node","specificationClassName","specificationsRowClassName","specificationValues","_productMainInfo$prod2","productSpecification","productSpecifications","productComparisonTitle","productComparisonLoadingText","productComparisonClearAllButtonAriaLabel","productComparisonClearAllButtonText","tableClickerClassName","onKeyUp","productComparisonPreviousProduct","productComparisonNextProduct","_renderRemoveFromComparisonButton","productRowClassName","currentCatalogId","productUrlLink","_product$productInfo$2","_dimension$DimensionV2","isFromCurrentCatalog","productPriceClassName","cellNewWidth","width","minWidth","maxWidth","cellContainerProps","productComparisonProductItemFreePrice","productComparisonProductItemOriginalPrice","productComparisonProductItemCurrentPrice","quickView","goToProductDetailsButton","productComparisonGoToProductDetailsButtonText","tableCellProps","tableHeaderProps","productRating","productDescription","_renderProductDescription","tableBodyClassName","tableRowContentClassName","tableRowContentInformationClassName","renderDynamicHeaderCells","headerName","tabindex","renderDynamicCells","ProductComparisonViewFunctionalComponent","_props$productsMainIn5","_props$dimensionsProp","_props$specifications","_props$productsMainIn8","_props$productsMainIn9","actionsClassName","onScroll","_props$productsMainIn3","_props$productsMainIn4","productComparisonProductItemRating","description","_props$productsMainIn6","_props$productsMainIn7","productComparisonProductItemDescription","specificationProps","attributeBooleanStringValue","AttributeDataType","TrueFalse","isNullOrEmpty","productComparisonProductItemSku","PromoBannerCloseButton","closeButtonAriaLabel","label","PromoBannerClose","PromoBannerLinks","links","editableLinks","_mapEditableLinks","linkdata","PromoBannerText","onEdit","PromoBanner","animating","isVisible","activeIndex","handleTextChange","bannerMessages","_next","nextIndex","_isLastItem","_goToIndex","_previous","_isFirstItem","dismissEnabled","interval","hideFlipper","autoplay","closeButtonLabel","bannerText","bannerAriaLabel","handleLinks","handleText","promoBannerProps","promoBannerTextProps","promoBannerLinksProps","contentProps","promoBannerText","carouselProps","Carousel","next","previous","onIndicatorsClickHandler","hideIndicator","closeButton","slides","AddToCartProductListComponent","_quickOrderTemplate$q","_quickOrderTemplate$q2","quickOrderTemplate","quickOrderTemplateLines","buttonLabel","quickOrderGridBuySelectedButtonText","buttonAriaLabel","quickOrderGridBuySelectedButtonAriaLabel","_props$resources$quic","_props$resources$quic2","_props$resources$quic3","_props$resources$quic4","_props$resources$quic5","_props$resources$quic6","_props$resources$quic7","_props$resources$free","_props$resources$orig","_props$resources$curr","_props$resources$adde","_props$resources$quic8","_props$resources$quic9","goToCartText","quickOrderGridGoToCartText","continueShoppingText","quickOrderGridDialogCloseText","quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel","headerItemOneText","quickOrderGridSingleItemText","headerItemFormatText","quickOrderGridMultiLineItemFormatText","headerLinesFormatText","quickOrderGridMultiLinesFormatText","headerMessageText","quickOrderGridHeaderMessageText","addedQuantityText","buyAgainNotificationTitle","quickOrderGridBuySelectedAddingToCartErrorNotificationTitle","buyAgainNotificationCloseAriaLabel","getDialogStrings","orderDetailProducts","quickOrder","orderDetails","quickLine","_quickLine$fullProduc","salesLine","OrderDetailsProduct","getOrderDetails","AddToCartComponent","outOfStockText","addToCartArialLabel","navigationUrl","shouldSkipSiteSettings","orderDetailsProducts","onError","getQuickOrderGridAddToCartDialog","moduleClassName","_result$cartActionRes","cartActionResult","onErrorMessage","removeActionHandler","removeProductList","removeQuickOrderList","QuickOrderGridDrawer","_props$collapseProps$","_props$collapseProps","_isManuallyToggled","onToggle","collapseProps","_drawerGlyphClass","toggleGlyphClassName","closeGlyph","isAnimateGlyph","_drawerOpenGlyph","openGlyph","_drawerCloseGlyph","children","drawerClass","drawerButtonClassName","toggleButtonProps","block","isDisabled","_generateDrawerButtonInnerMarkup","Collapse","isCollapseState","drawerButtonTextClass","toggleButtonClassName","headingDrawerClass","descriptionDrawerClass","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","QuickOrderGridFormComponent","productTextInput","quantityTextInput","quickOrderGridState","maxChars","minQuantity","maxQuantity","isAddtoListDisabled","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","handleQuantityChange","handleInputChange","handleAddProductListClick","onInputChange","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","quantityNode","addToListBtn","stateMessage","messageText","QuickOrderGridProduct","QuickOrderGridDesktopHeaderCellsComponent","columnWithNumberClassName","quickOrderGridProductNumberText","quickOrderGridProductText","quickOrderGridUnitPriceText","quickOrderGridUnitOfMeasureText","quickOrderGridQuantityText","quickOrderGridActionsText","QuickOrderGridMobileHeaderCellsComponent","QuickOrderGridTableHeaderComponent","rowClassName","headerCells","QuickOrderGridTableRowProductImageComponent","_props$data$product$p","_props$imageSettings","setShowPreviousActions","onRemoveHandler","quickOrderGridProductKey","QuickOrderGridExtraActionsPopupComponent","_props$data$product$p2","quickOrderGridViewDetailsButtonAriaLabel","quickOrderGridViewDetailsButtonText","shouldShowActions","getProductPageUrlSync","onClickViewDetails","shouldShowActionsNewValue","quickOrderGridRemoveItemButtonAriaLabel","QuickOrderGridDesktopTableRowCellComponent","_props$data$product$p3","_productListLine$Line","quickOrderGridProductDimensionsSeparator","renderProductPrice","renderUnitOfMeasure","IncrementalQuantity","quickOrderGridInputQuantityAriaLabel","quickOrderGridDecrementButtonAriaLabel","quickOrderGridIncrementButtonAriaLabel","isGiftCard","QuickOrderGridMobileTableRowCellComponent","_props$data$product$p4","_productListLine$Line2","QuickOrderGridTableRowComponent","Viewport","QuickOrderGridTableComponent","setIsMobile","isMobileView","quickOrderGridProducts","isOrderQuantityLimitsFeatureEnabled","updateViewport","quickOrderProduct","_product$ProductDetai","_quickOrderProduct$pr","_quickOrderProduct$pr2","behavior","Behavior","MinimumQuantity","MaximumQuantity","callBacks","QuickOrderGrid","_this$props$data$feat3","_this$props$data$feat4","_this$props$data$feat5","_cartConfiguration$re","_cartConfiguration$re2","_waitTime","_dimensionUpdateQueueMaxLength","_errorCssClass","_errorCssGlyphClass","_dimensionUpdateQueue","FinitePromiseQueue","_dimensions","_initializedDimensions","Set","_cssClassNameConfigure","_className","_isOrderQuantityLimitsFeatureEnabled","_isChannelLimitsFeatureEnabled","_applyDefaultOrderSettingsForCartLine","_quickOrderGridCallbacks","initializeDimension","initializedDimension","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","_this$state$productDi","size","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","changeUpdatingDimension","isUpdatingDimension","_quickOrderGridRowCallbacks","_removeItemRowFromTable","productListLineId","_changeRowQuantity","_removeProductList","ProductListsDataActions","_updateStatusState","quickOrderGridDeleteProductListFailedText","_handleInputChange","productResponse","_cancellabelDebounce","cancel","isQuickOrderGridFormExpanded","getScanResult","GetScanResultInput","results","ProductDimensionFull","_updateQuantitiesInState","exception","_handleQuantityChange","_this$state$productRe","_quantityInput","minimumQuantity","needToUpdateUIValue","_behavior$MinimumQuan","newCurrentValue","_this$state$productRe2","Configuration","productDimensionTypeAmount","hasProductDimensions","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","dimensionKey","configureErrors","errorState","_this$_updateDimensio","newProduct","_getDimensionErrorString","dimensionTypeValue","amountErrorMessage","quickOrderGridproductDimensionTypeAmountErrorMessage","quickOrderGridproductDimensionTypeColorErrorMessage","quickOrderGridproductDimensionTypeConfigurationErrorMessage","quickOrderGridproductDimensionTypeSizeErrorMessage","quickOrderGridproductDimensionTypeStyleErrorMessage","_validateCart","_productResponse$Dime","_getConfigureErrors","quickOrderGridWrongQuantityErrorMsg","quickOrderTemplateLinesData","previousQuantity","updatedProductList","ActiveProductListInput","_addItemToProductListLine","quickOrderGridAddedToGridSuccessMessage","quickOrderGridAddedToGridFailureMessage","quickOrderGridAddedToGridDuplicateError","_productResponse$Defa","_createProductList","AddItemToProductListInput","addItemToProductListAction","CreateProductListInput","ProductListType","QuickOrder","createProductList","_productTextInput","_telemetryContent","_quickOrderGridFormClass","_quickOrderGridFormProductContent","_quickOrderGridFormMsgContent","cartConfiguration","ValidateDefaultOrderSettingsPerLine","_this$state$min","_this$state$max","customerInformation","customerInfo","quickOrderGridModuleHeading","quickOrderGridModuleDescription","quickOrderGridAddtogrid","quickOrderGridProductQuantityInputLabel","quickOrderGridProductInputLabel","quickOrderGridProductDimensionTypeColor","quickOrderGridProductDimensionTypeConfiguration","quickOrderGridSelectDimensionFormatString","quickOrderGridProductDimensionTypeSize","quickOrderGridProductDimensionTypeStyle","quickOrderGridProductDimensionTypeAmount","quickOrderGridModulePageHeading","productConfigureResources","selectDimensionFormatString","header","quickOrderGridProps","isB2bCustomer","IsB2b","actions","drawer","bulkPurchase","_renderBulkPurchase","quickOrderGridForm","quickOrderGridFormProductContent","quickOrderGridFormMsgContent","form","configure","getProductConfigure","container","_renderListContainer","_renderQuickOrderGridActions","quickOrderGridDeleteButtonText","userMessageNode","topStateMessage","addProductListToBag","QuickOrderGridActionsView","isBulkPurchaseEnabled","bulkPurchaseSlots","containerClass","_renderQuickOrderTable","_initQuickOrderGridProducts","quickOrderGridProduct","_getMinQuantityForCartLineItem","_getMaxQuantityForCartLineItem","_getQuantity","_product$Behavior","_getIgnoreOrderSettings","isQuantityLimitsFeatureEnabled","_product$Behavior2","_cartConfiguration$re3","_cartConfiguration$re4","IgnoreOrderSettings","applyDefaultOrderSettingsForCartLine","_product$Behavior3","defaultQuantity","DefaultQuantity","renderConfigureDropdown","dropdown","containerProps","labelContainerProps","select","renderConfigure","dropdowns","renderForm","quickOrderForm","quickOrderProductContent","quickOrderMessageContent","createObservableDataAction","ctx","productId","tenantId","inputIsValid","trace","serviceEndpoint","locale","sendRequest","userReviewData","Authorization","authorization","response","SubmitUserReviewInput","getCacheKey","getCacheObjectType","dataCacheType","onClickSubmit","ReviewModal","SubmitReview","submitButtonAttribute","Cancel","cancelButtonAttribute","modal","modalCSS","classNames","onModalToggle","returnFocusRef","returnRef","modalHeader","modalHeaderNode","modalFooter","modalBody","cancelButton","discardReviewButtonText","submitButton","submitDisabled","submitReviewButtonText","ratingsInput","ratingLabel","ratingsLabel","titleInput","titleLabel","textInput","textLabel","privacyPolicyUrl","privacyPolicyLink","inputRow","hasError","errorMessageText","userReview","reviewId","editReviewModalTitle","writeReviewModalTitle","stripWhiteSpacesFromString","reviewText","reviewTitle","selectRatingAriaLabel","initialRating","parentId","parentType","onRatingChange","selectRatingLabel","reviewTitleMaxLength","renderContextId","onTitleChange","reviewTitleAriaLabel","reviewTitleLabel","reviewTextMaxLength","rows","reviewAriaLabel","reviewTextLabel","policyTextBlocks","privacyPolicyTextFormat","split","isSeparatorAtStart","startsWith","isSeparatorAtEnd","endsWith","PrivacyPolicy","privacyPolicyAttribute","privacyPolicyTitle","submitReview","onReviewComplete","trim","onReviewSubmission","getRnrPartnerId","userEmail","emailAddress","userName","getRnrAuthEndpointId","submitUserReview","review","submittedDateTime","helpfulPositive","helpfulNegative","firstName","getReviewInput","GetUserReviewInput","TOGGLE_REVIEW_MODAL_BUTTON_ID","TOGGLE_EDIT_MODAL_BUTTON_CARD_ID","HistogramItems","ratingsSummary","totalRatingsCount","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","stars","totalCount","percentage","formattedPercent","Intl","NumberFormat","barItemAriaLabel","starLabel","bar","Progress","buttonProps","AverageRatingNumber","summary","TotalReviews","RatingsHistogram","handleHeadingChange","selectFilterBy","completeClass","classname","histogramItems","averageRatingAriaLabel","hideCount","averageNumber","totalReviews","ratingsSummaryProps","histogramProps","filterKey","createRatingsReviewsStateInput","histogramItem","authToken","requestBody","concernCategory","requestHeader","isHelpful","ReviewConcernCategory","ReportReviewConcernInput","ReviewCount","currentPage","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","reportConcernDropdownOptions","radioPairs","pairs","option","inputId","reportedKey","onRadioChange","reviewRatingNarratorText","voteHelpfulButton","isVoted","isVotedFor","i","votedReviews","approved","isUserReview","isOboRequest","yesButtonText","noButtonText","voteCount","onClickMethod","updateReviewHelpfulness","editButton","toggleWriteReviewModal","editReviewCardText","renderDate","date","DateTimeFormat","month","day","year","_unused","toggleReportReviewModal","reportToggle","reportConcernText","reportedReviews","reportedText","reportedReviewId","SubmitHelpfulnessVoteInput","ReviewsList","sortByDropdownOptions","mostHelpfulSortOptionText","mostRecentSortOptionText","highestRatedSortOptionText","lowestRatedSortOptionText","filterByDropdownOptions","allRatinsFilterByOptionText","fiveStarFilterByOptionText","fourStarFilterByOptionText","threeStarFilterByOptionText","twoStarFilterByOptionText","oneStarFilterByOptionText","reviewsListCallbacks","updateReviewTitle","userReviewTitle","updateReviewText","userReviewText","updateRating","userReviewRating","onReviewSubmitted","isSuccessful","isReviewModalOpen","hasReviewError","toggleModal","_toggleReviewModal","updateReviewHelpfulnessVote","toggleReportModal","isReportModalOpen","_onReportModalOpen","_onReportModalClose","reportReview","_reportReviewCallback","updateFilterByDropdown","updateSortByDropdown","reviewsList","pagingInfo","listOfReviews","isFilterApplied","ratingsReviewsState","filterKeyValue","dropdownItemsCount","filterByOption","_userReview","_reviewCard","_reviewCards","reviewList","reviewElements","isTakenDown","isPublished","cardProps","ratingHelpfulLabel","wasReviewHelpfulText","like","dislike","edit","report","responseName","userResponse","responderName","responseText","responseDate","cardBodyProps","responseProps","reviewProps","controlsProps","headerProps","ReviewCard","_userReportModalToggle","reportingReviewId","_userReviewModal","_onTitleChange","_onTextChange","_onRatingChange","_onReviewComplete","_userReviewModalToggle","isSuccess","_reportReviewModal","submitReviewAttribute","SuccessButton","successAttribute","cancelAttribute","SpamAdvertising","reportSpamText","OffensiveContent","offensiveContentText","Profanity","profanityContentText","headerSubmitted","feedbackThankYouText","cancelReportReviewText","reportReviewButtonText","succesfulButton","okReportReviewText","reportMessage","reportModalMessage","reportSubmittedMessage","radioButtons","ReportReviewModal","_onRadioChange","_reportReview","hasReportError","reported","reportReviewConcern","getUserToken","_value","reportedReview","notification","selectedOption","skipItems","getSelectedProductIdFromActionInput","getReviewsForGivenProduct","GetProductReviewsInput","getRnrEndpointId","_updateVoteUi","alreadyExists","concat","submitHelpfulnessVote","showSpinner","reviewModal","reportReviewModal","filterByDropdown","LabeledDropdown","labelText","filterByDropdownText","dropdownOptions","onSelectOption","controlledByParent","sortByDropdown","sortByDropdownText","reviewCount","refineReviewsProps","reviewsListProps","reviewCards","pageControls","noReviewsMessage","noReviewsWithFilterMessage","noReviewsWithSelectedFilterMessage","sortByOptions","filterByOptions","buildReviewCard","createReviewModal","createReportModal","SignInMessage","SignInButton","ModalToggle","WriteReview","writeReviewCallbacks","_modalToggleRef","userInfo","signInMessage","signInButton","signInLabel","signInAriaLabel","modalToggle","editReviewButtonText","reviewButtonLabel","_buildUserReviewModal","WishlistItemDimension","WishListItemActions","onAddToCart","formattedPrice","renderProductLink","recordId","productAttributes","productPageUrlWithSwatch","renderInventoryInformationLabel","WishlistItemAddToCartButtonComponent","isInStock","isServiceItem","ItemTypeValue","ReleasedProductType","Service","addItemAction","WishlistItemRemoveFromWishlistButtonComponent","removeFromWishlistText","removeItemAction","unitOfMeasure","unitOfMeasureDisplayType","WishlistItem","wishlistState","_props$product$Dimens","_getFullProductLink","entireProductLink","productAriaLabel","inventoryInformation","productStatusMessage","WishlistItemsStatusMessage","WishlistItems","_addItemToCart","productAvailability","addedToCartSuccessMessage","invoiceInCartErrorMessage","productInventoryInformation","_getProductInventory","_this$props$context$a","_product$Behavior$Min","emailDeliveryModeCode","EmailDeliveryModeCode","deliveryOptions","getDeliveryOptionsAsync","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","validateQuantity","isQuantityValidationRequired","respectQuantityLimits","enableStockCheck","availableQuantity","ProductAvailableQuantity","AvailableQuantity","isAddEmailDeliveryItemToCart","DeliveryOptions","_await$cart$cart","curQuantity","maxQtyLimitReachedMessage","_getInventoryValueMessage","_result$errorDetails2","isChannelQuantityLimitsFeatureEnabledInHq","_this$props$data$cart","_this$props$data$cart2","validateLimitsPerLine","_this$props$context","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","_this$props$data$cart3","_cartConfiguration$Ig","_removeItemFromWishlist","noLongerLineExist","wishlistLineId","_getWishlistLineIdFromProductId","removeLinesAsync","commerceList","castCommerceList","_getProductsNoLongerExists","_removeNoLongerExistsLines","createGetByCustomerInput","getItemsInWishlists","ActiveWishlistInput","castSimpleProducts","isError","_inventoryLabel","StockLevelLabel","_inventoryClassName","StockLevelCode","toLowerCase","_isProductInStock","productResult","IsProductAvailable","foundWishlistItem","commerceListLine","_castCommerceList$Com","noLongerExist","emptyWishlistText","wishlistErrorGettingWishlist","noLongerExitsWishlistItemText","productsList","Products","ProductDimensions","statusNotExistsMessage","_getProductNotExists","emptytext","noLongerExisttext","addToCartButtonText","removeButtonText","currentProductProps","maxQuantityForLineItem","updateMaxQuantityForCartLineItem","minInventory","productInventoryCollection","getDefaultColorSwatchSelected","_colorAttribute$swatc","_colorAttribute$swatc2","_colorAttribute$swatc3","attributeValues","colorAttribute","attributeValue","_attributeValue$keyNa","keyName","toLocaleLowerCase","defaultSwatch","updateProductUrl","productDetailsPageUrl","coreContext","queryString","sourceUrl","baseUrl","pathname","renderProductUnitOfMeasure","renderLabel","ratingAriaLabelText","ratingCountAriaLabelText","reviewCountArialableText","getReviewAriaLabel","getRatingAriaLabel","ratingAriaLabel","roundedRating","renderPrice","basePrice","adjustedPrice","savingsText","isPriceMinMaxEnabled","priceResources","renderProductPlacementImage","_context$app$config","contextConfig","placeholderImageName","fallbackImageSource","img","imageProps","bypassHideOnFailure","ProductComponentV2","createComponentOverride","component","_product$name","_product$recordId","_getProductImageUrlFr","_getProductPageUrlFro","ratingCountAriaLabel","allowBack","quickViewButton","productComparisonButton","isEnabledProductDescription","inventoryLabel","dimensionAvailabilities","swatchItemAriaLabel","MIN_VALUE","productImageUrlFromSwatch","dimensionToPreSelectInProductCard","productImageUrls","getProductImageUrlFromDefaultColorSwatch","productPageUrlFromSwatch","swatchValue","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","updatePageAndImageUrl","setValue","newUrl","swatchProductImageUrl","newImageUrl","attribute","isUnitOfMeasureEnabled","totalRatings","defaultUnitOfMeasure","_item$keyName$toLocal","_item$keyName","_item$swatches$map","_item$swatches","dimensionsToDisplayOnProductCard","dimensionsInProductCard","shouldDisplayDimension","_item$recordId","_swatchItem$swatchVal","_swatchItem$swatchVal2","_dimensionAvailabilit","swatchColorHexCode","swatchImageUrl","dimensionAvailability","_swatchItem$swatchVal3","ProductComponentV2SwatchComponent","onSelectDimension","hideRating","numberRatings","renderRating","inventoryAvailabilityLabel","quickview","getValues","convertDimensionTypeToProductDimensionType","renderQuickView","renderProductComparisonButton","getDefaultSwatchSelected","_productData$Attribut","_attributeSwatches$fi","AttributeValues","attributeSwatches","_attributeValue$KeyNa","KeyName","Swatches","IsDefault","productSearchResult","IsMasterProduct","ProductType","Master","Standalone","MaxVariantPrice","MinVariantPrice","ProductComponent","_product$RecordId","swatchProductImageUrls","ProductImageUrls","getProductImageUrlFromDefaultSwatch","SwatchValue","encodeURIComponent","AverageRating","TotalRatings","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","SwatchColorHexCode","SwatchImageUrl","_swatchItem$SwatchVal3","ProductComponentSwatchComponent","mockRequest","buildMockRequest","mockRequestURL","staticCdnUrl","signUpUrl","mockAnonRequest","mockSigninErrorRequest","mockActionContext","buildHydratedMockActionContext","HeaderView","_configureStickyHeader","headerAlertsContainer","querySelector","bannerHeights","offsetHeight","headerElement","stickyHeader","headerLogo","navStickyPos","_renderAccountBlock","accountClassName","_renderAccountDropdownLinks","menuNode","useStickyHeader","_renderMobileLogo","_config$mobileLogoIma","mobileLogoImage","DescriptionInterval","renderProductCards","productsContainer","getInventoryLabel","channelInventoryConfigurationId","inventoryAttribute","renderProductCardsDescription","_props$data$products$","_props$data$featureSt","productsDimensionAvailabilities","breadCrumbType","breadcrumbType","isAllowBack","allowBackNavigation","quickviewslot","isPriceMinMaxFeatureState","priceRangeSeparator","masterProductId","renderProducts","_data$products$result","_data$products$result2","listPageState","activeProducts","productDescriptionInterval","productDescriptionIntervalRemainder0","productDescriptionIntervalRemainder9","renderTitleCount","titleContainer","titleCount","configureStickyFilter","isStickyHeader","headerContainer","headerHeight","defaultContainer","refinerElement","clientHeight","removeAttribute","createSearchResultModal","refineMenu","sortByDropDown","isRecoSearchPage","createModalBody","renderSort","refiners","refineMenuContainer","refinerSectionContainer","submenu","renderRefinerMobile","renderRefiner","renderRefinerFooter","doneAriaLabel","doneText","sortingContainer","renderTitle","titlePrefix","titleText","_props$context$action","searchResultContainer","productSectionContainer","choiceSummary","searchResultModal","titleViewProps","categoryNavContainer","refineAndProductSectionContainer","featureSearchContainer","similarLookProduct","useStickyFilter","stickyFilterSetup","enableStickyHeader","setIsExpanded","wrapperRefiner","refinerRefernce","handleClickOutside","element","contains","useOutsideClick","recommendation","enableProdutDescription","filterText","ProductsContainer","_props$data$listPageS","TitleContainer","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","RefineMenuContainer","RefinerSectionContainer","SortingContainer","SearchResultContainer","ProductSectionContainer","TitleViewProps","categoryHierarchy","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","useEffect"],"sourceRoot":""}