{"version":3,"file":"static/js/5.b6e2237a8ae321ea42d2.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/components/price-component.tsx?ed26","webpack://Citta2.0/./src/modules/citta-b2b-wishlist-items/components/citta-b2b-wishlist-items-dimensions.tsx?a72f","webpack://Citta2.0/./src/modules/citta-b2b-wishlist-items/components/wishlist-item.tsx?51bb","webpack://Citta2.0/./src/modules/citta-b2b-wishlist-items/components/citta-b2b-wishlist-items-status-message.tsx?97d5","webpack://Citta2.0/./src/modules/citta-b2b-wishlist-items/citta-b2b-wishlist-items.tsx?7730","webpack://Citta2.0/./src/modules/citta-b2b-wishlist-items/citta-b2b-wishlist-items.view.tsx?88c1","webpack://Citta2.0/./src/modules/citta-promo-banner/components/close-button.tsx?7ba2","webpack://Citta2.0/./src/modules/citta-promo-banner/components/links.tsx?a64a","webpack://Citta2.0/./src/modules/citta-promo-banner/components/text.tsx?2035","webpack://Citta2.0/./src/modules/citta-promo-banner/citta-promo-banner.tsx?f097","webpack://Citta2.0/./src/modules/citta-promo-banner/citta-promo-banner.view.tsx?4353","webpack://Citta2.0/./src/modules/citta-search/actions/get-auto-suggest-suggestions.ts?357b","webpack://Citta2.0/./src/modules/citta-search/components/citta-search.keywordsuggest.tsx?fcba","webpack://Citta2.0/./src/modules/citta-search/components/citta-search.productsuggest.tsx?89f1","webpack://Citta2.0/./src/modules/citta-search/components/citta-search.categorysuggest.tsx?2fc6","webpack://Citta2.0/./src/modules/citta-search/components/citta-search.form.tsx?f887","webpack://Citta2.0/./src/modules/citta-search/components/citta-search.label.tsx?585c","webpack://Citta2.0/./src/modules/citta-search/citta-search.tsx?9717","webpack://Citta2.0/./src/modules/citta-search/citta-search.view.tsx?861d","webpack://Citta2.0/./src/modules/citta-wishlist-items/components/citta-wishlist-items-dimensions.tsx?42bc","webpack://Citta2.0/./src/modules/citta-wishlist-items/components/wishlist-item.tsx?cb43","webpack://Citta2.0/./src/modules/citta-wishlist-items/components/citta-wishlist-items-status-message.tsx?e2b6","webpack://Citta2.0/./src/modules/citta-wishlist-items/citta-wishlist-items.tsx?878b","webpack://Citta2.0/./src/modules/citta-wishlist-items/citta-wishlist-items.view.tsx?20f3","webpack://Citta2.0/./src/themes/citta/utilities/quantity/Quantity.tsx?4279","webpack://Citta2.0/./src/themes/citta/views/components/cartlineitem.component.tsx?ca68","webpack://Citta2.0/./src/themes/citta/views/components/product-collection-component.tsx?595b","webpack://Citta2.0/./src/themes/citta/views/product-collection.view.tsx?2634","webpack://Citta2.0/./src/modules/active-image-utilities/active-product.tsx?69b2","webpack://Citta2.0/./src/modules/active-image-utilities/additional-content.tsx?6946","webpack://Citta2.0/./src/modules/active-image-utilities/image-mapper.tsx?dd86","webpack://Citta2.0/./src/modules/active-image/active-image.tsx?00d3","webpack://Citta2.0/./src/modules/active-image/active-image.view.tsx?a935","webpack://Citta2.0/./src/checkout-errors/checkout-errors.ts?a9e0","webpack://Citta2.0/./src/common/components/address-error-alert.tsx?bcde","webpack://Citta2.0/./src/common/components/address-select.tsx?c1df","webpack://Citta2.0/./src/common/components/address-ship-multiple-heading.tsx?5d65","webpack://Citta2.0/./src/common/components/address-ship-multiple-lines.tsx?ce68","webpack://Citta2.0/./src/common/components/address-ship-multiple.tsx?136d","webpack://Citta2.0/./src/common/components/address-billing-checkbox.tsx?4008","webpack://Citta2.0/./src/common/components/address-billing-heading.tsx?7bbd","webpack://Citta2.0/./src/modules/checkout-billing-address/checkout-billing-address.tsx?2aa0","webpack://Citta2.0/./src/modules/checkout-billing-address/checkout-billing-address.view.tsx?b194","webpack://Citta2.0/./src/modules/checkout-shipping-address/components/checkout-shipping-cartlines-images.tsx?c635","webpack://Citta2.0/./src/modules/checkout-shipping-address/checkout-shipping-address.tsx?de3a","webpack://Citta2.0/./src/modules/checkout-shipping-address/checkout-shipping-address.view.tsx?3386","webpack://Citta2.0/./src/modules/carousel/carousel.tsx?80d4","webpack://Citta2.0/./src/modules/carousel/carousel.view.tsx?d82f","webpack://Citta2.0/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Citta2.0/./src/modules/header/components/logo.tsx?f27e","webpack://Citta2.0/./src/modules/header/components/nav-icon.tsx?2475","webpack://Citta2.0/./src/modules/header/header.tsx?e91a","webpack://Citta2.0/./src/modules/header/header.view.tsx?cf0f","webpack://Citta2.0/./src/modules/order-template-list/components/order-template-list.tsx?86c4","webpack://Citta2.0/./src/modules/order-template-list/components/orderTemplateList-status-message.tsx?183c","webpack://Citta2.0/./src/modules/order-template-list/components/create-order-template.tsx?ea38","webpack://Citta2.0/./src/modules/order-template-list/order-template-list.tsx?18d0","webpack://Citta2.0/./src/modules/order-template-list/order-template-list.view.tsx?103b","webpack://Citta2.0/./src/modules/order-template/components/add-line/spinner.tsx?b423","webpack://Citta2.0/./src/modules/order-template/components/add-line/add-line.tsx?5f8a","webpack://Citta2.0/./src/modules/order-template/components/add-line/dropdown.tsx?1cba","webpack://Citta2.0/./src/modules/order-template/components/add-line/not-found.tsx?392d","webpack://Citta2.0/./src/modules/order-template/components/common/order-template-quantity.tsx?99a1","webpack://Citta2.0/./src/modules/order-template/components/add-line/product-configuration.tsx?b256","webpack://Citta2.0/./src/modules/order-template/components/add-line/product-list.tsx?4284","webpack://Citta2.0/./src/modules/order-template/components/bulk-actions.tsx?dbe8","webpack://Citta2.0/./src/modules/order-template/components/order-template-actions.tsx?8136","webpack://Citta2.0/./src/modules/order-template/components/order-template-lines.tsx?3703","webpack://Citta2.0/./src/modules/order-template/components/order-template-lines-status-message.tsx?2986","webpack://Citta2.0/./src/modules/order-template/components/order-template-table-heading.tsx?665c","webpack://Citta2.0/./src/modules/order-template/order-template.tsx?4ecb","webpack://Citta2.0/./src/modules/order-template/order-template.view.tsx?a45e","webpack://Citta2.0/./src/modules/quick-order/components/quick-order-drawer.tsx?f8b4","webpack://Citta2.0/./src/modules/quick-order/components/quick-order-form.tsx?eb54","webpack://Citta2.0/./src/modules/quick-order/components/quick-order-product.ts?7702","webpack://Citta2.0/./src/modules/quick-order/components/quick-order-table/components/quick-order-table-header-component.tsx?49e7","webpack://Citta2.0/./src/modules/quick-order/components/quick-order-table/components/quick-order-table-row-component.tsx?e487","webpack://Citta2.0/./src/modules/quick-order/components/quick-order-table/quick-order-table-component.tsx?46c1","webpack://Citta2.0/./src/modules/quick-order/quick-order.tsx?ef21","webpack://Citta2.0/./src/modules/quick-order/quick-order.view.tsx?a96d","webpack://Citta2.0/./src/actions/submit-user-review.ts?ac78","webpack://Citta2.0/./src/actions/inputs/submit-user-review-input.ts?3afb","webpack://Citta2.0/./src/common/review-modal.tsx?54a9","webpack://Citta2.0/./src/common/rnrInterface.ts?f761","webpack://Citta2.0/./src/modules/ratings-histogram/component/components.tsx?f324","webpack://Citta2.0/./src/modules/ratings-histogram/ratings-histogram.tsx?f6bc","webpack://Citta2.0/./src/modules/ratings-histogram/ratings-histogram.view.tsx?5bff","webpack://Citta2.0/./src/actions/report-review-concern.ts?bf43","webpack://Citta2.0/./src/actions/submit-helpfulness-vote.ts?a8ab","webpack://Citta2.0/./src/actions/inputs/report-review-concern-input.ts?b071","webpack://Citta2.0/./src/modules/reviews-list/components/components.tsx?033b","webpack://Citta2.0/./src/modules/reviews-list/components/report-review-modal.tsx?53d3","webpack://Citta2.0/./src/modules/reviews-list/components/review-card.tsx?6bbd","webpack://Citta2.0/./src/actions/inputs/submit-helpfulness-vote-input.ts?07aa","webpack://Citta2.0/./src/modules/reviews-list/reviews-list.tsx?37e8","webpack://Citta2.0/./src/modules/reviews-list/reviews-list.view.tsx?0e4a","webpack://Citta2.0/./src/modules/write-review/components/components.tsx?3575","webpack://Citta2.0/./src/modules/write-review/write-review.tsx?9afc","webpack://Citta2.0/./src/modules/write-review/write-review.view.tsx?b867","webpack://Citta2.0/./src/search-state.ts?dd10","webpack://Citta2.0/./src/modules/search/actions/get-auto-suggest-suggestions.ts?4735","webpack://Citta2.0/./src/modules/search/components/search.categorysuggest.tsx?c65d","webpack://Citta2.0/./src/modules/search/components/search.form.tsx?25a5","webpack://Citta2.0/./src/modules/search/components/search.keywordsuggest.tsx?297c","webpack://Citta2.0/./src/modules/search/components/search.label.tsx?0c17","webpack://Citta2.0/./src/modules/search/components/search.productsuggest.tsx?2af9","webpack://Citta2.0/./src/modules/search/search.tsx?72fb","webpack://Citta2.0/./src/modules/search/search.view.tsx?1505","webpack://Citta2.0/./src/modules/social-share-item/social-share-item.tsx?bbcb","webpack://Citta2.0/./src/modules/social-share-item/social-share-item.view.tsx?2d3e","webpack://Citta2.0/./src/modules/video-player/components/additional-content.tsx?b368","webpack://Citta2.0/./src/modules/video-player/video-player.tsx?53e5","webpack://Citta2.0/./src/modules/video-player/video-player.view.tsx?fedb"],"sourcesContent":["import { __assign } from \"tslib\";\r\nimport { msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nvar PriceComponentActions = {};\r\nvar Price = function (props: any) {\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n return (React.createElement(\"span\", { className: classnames('msc-price', props.className) }, showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)));\r\n};\r\nvar showStrikethroughPricing = function (props: any) {\r\n var originalPrice = getOriginalPrice(props);\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n return false;\r\n};\r\nvar getOriginalPrice = function (props: any) {\r\n return Math.max(props.data.price.BasePrice || 0, props.data.price.TradeAgreementPrice || 0, props.data.price.AdjustedPrice || 0);\r\n};\r\nvar renderCurrentPrice = function (props: any) {\r\n var initialPrice = formatCurrency(props, props.data.price.CustomerContextualPrice);\r\n return (React.createElement(\"span\", { className: 'msc-price__actual', itemProp: 'price' }, initialPrice));\r\n};\r\nvar formatCurrency = function (props: any, price: any) {\r\n if (price === undefined) {\r\n return undefined;\r\n }\r\n if (price === 0 && props.freePriceText) {\r\n return props.freePriceText;\r\n }\r\n let returnPrice = `$${price}`;\r\n try {\r\n var formatter = new Intl.NumberFormat(props.context.cultureFormatter.locale, {\r\n style: 'currency',\r\n currency: props.context.cultureFormatter.currencyCode,\r\n currencyDisplay: 'narrowSymbol'\r\n });\r\n returnPrice = formatter.format(price)\r\n\r\n } catch {}\r\n return returnPrice;\r\n};\r\nvar renderCurrentPriceWithOriginalPrice = function (props: any) {\r\n var originalPrice = getOriginalPrice(props);\r\n var initialPrice = formatCurrency(props, originalPrice);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: 'sr-only' },\r\n ' ',\r\n props.originalPriceText,\r\n ' ',\r\n initialPrice,\r\n ' ',\r\n props.currentPriceText,\r\n ' ',\r\n renderCurrentPrice(props)),\r\n React.createElement(\"span\", { className: 'msc-price__strikethrough', \"aria-hidden\": 'true' }, initialPrice),\r\n React.createElement(\"span\", { \"aria-hidden\": 'true' }, renderCurrentPrice(props)),\r\n props.savingsText && React.createElement(\"span\", { className: 'msc-price__savings' }, props.savingsText)));\r\n};\r\n\r\nconst PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'Product',\r\n { component: msdyn365Commerce.createComponent('Price', __assign({ component: Price }, PriceComponentActions)) }\r\n);\r\n\r\nexport default PriceComponent","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface IWishlistItemDimension {\r\n key: string;\r\n className?: string;\r\n dimensionType: string;\r\n dimensionValue: string;\r\n}\r\n\r\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\r\n
\r\n {dimensionType}:\r\n {dimensionValue}\r\n
\r\n);\r\n","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport {\r\n CommerceListLine,\r\n ProductPrice,\r\n ReleasedProductType,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n convertProductDimensionTypeToDimensionTypes,\r\n getFallbackImageUrl,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IWishlistItemActionMessageState } from '../citta-b2b-wishlist-items';\r\nimport { WishlistItemDimension } from './citta-b2b-wishlist-items-dimensions';\r\n\r\nexport interface IWishlistItemProps extends CommerceListLine {\r\n product: SimpleProduct;\r\n wishlistState: IWishlistItemActionMessageState;\r\n price?: ProductPrice;\r\n context: ICoreContext>;\r\n productUrl: string;\r\n imageSettings?: IImageSettings;\r\n removeFromWishlistText: string;\r\n isInStock: boolean;\r\n addToCartText: string;\r\n outOfStockText: string;\r\n index: number;\r\n itemKey: string;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n enableImageProductLink?: boolean;\r\n inventoryInformationLabel?: string;\r\n inventoryLabelClassName?: string;\r\n telemetryContent?: ITelemetryContent;\r\n handlers: {\r\n onAddToCart(product: SimpleProduct, itemKey: string): void;\r\n onRemoveItem(productId: number): void | undefined;\r\n onDismiss(): void;\r\n };\r\n resources: {\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n freePriceText: string;\r\n };\r\n}\r\n\r\nexport interface IWishlistItemViewProps {\r\n key: string;\r\n productImage: React.ReactNode;\r\n productLink: React.ReactNode;\r\n productDimensions?: React.ReactNode[];\r\n productPrice?: React.ReactNode;\r\n addToCartButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n productStatusMessage?: React.ReactNode;\r\n productName?: React.ReactNode;\r\n productAriaLabel?: string;\r\n entireProductLink?: string;\r\n inventoryInformation?: React.ReactNode;\r\n productUnitOfMeasure?: React.ReactNode;\r\n}\r\n\r\nconst _addItemToCart = (props: IWishlistItemProps): void => {\r\n const { product, itemKey, handlers } = props;\r\n const { onAddToCart } = handlers;\r\n\r\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\r\n};\r\n\r\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\r\n const { onRemoveItem } = props.handlers;\r\n const { RecordId } = props.product;\r\n\r\n onRemoveItem && RecordId && onRemoveItem(RecordId);\r\n};\r\n\r\nconst WishListItemActions = {\r\n addToCart: _addItemToCart,\r\n removeItem: _removeItemFromWishlist\r\n};\r\n\r\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\r\n if (!msdyn365Commerce.isBrowser) {\r\n return '';\r\n }\r\n\r\n const fullUrl = new URL(props.productUrl, window.location.href);\r\n for (const dimension of props.product.Dimensions ?? []) {\r\n const dimensionValue = dimension.DimensionValue?.Value;\r\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\r\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\r\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\r\n }\r\n }\r\n return fullUrl.href;\r\n // return updateProductUrl(productUrl, context, swatch);\r\n};\r\n\r\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\r\n const { product, price, context, resources } = props;\r\n\r\n const { Name, Dimensions } = product;\r\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\r\n\r\n let formattedPrice = 'Free';\r\n let dimensions = null;\r\n\r\n if (price) {\r\n formattedPrice =\r\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\r\n }\r\n\r\n if (Dimensions) {\r\n dimensions = Dimensions.map(productDimension => {\r\n switch (productDimension.DimensionTypeValue) {\r\n case 1:\r\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n case 3:\r\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n case 4:\r\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n default:\r\n return '';\r\n }\r\n });\r\n }\r\n\r\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\r\n};\r\n\r\n/**\r\n * Renders a link to a product based on the given props.\r\n * @param input - Wishlist item props with the info about the product.\r\n * @param productUrl - The url to the product.\r\n * @returns React component with a link to a product.\r\n */\r\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\r\n const { telemetryContent } = input;\r\n const { RecordId: recordId, Name: productName } = input.product;\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\r\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const productPageUrlWithSwatch = productUrl;\r\n return (\r\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\r\n \r\n {productName}\r\n \r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Renders a product name box.\r\n * @param productName - The text to display.\r\n * @returns React component with a name of a product.\r\n */\r\nconst renderProductName = (productName: string) => {\r\n return
{productName}
;\r\n};\r\n\r\n/**\r\n * Renders inventory information.\r\n * @param inventoryInformationLabel - The text to display.\r\n * @param inventoryLabelClassName - The component class name.\r\n * @returns React component.\r\n */\r\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\r\n const inventoryCssName = inventoryLabelClassName\r\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\r\n : 'ms-wishlist-items__inventory-label';\r\n return (\r\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\r\n {inventoryInformationLabel}\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Renders add to cart button.\r\n * @param input - Wishlist item props with the configuration.\r\n * @returns React component.\r\n */\r\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\r\n const { isInStock, addToCartText, outOfStockText } = input;\r\n\r\n // Check if the product is service or not by product type.\r\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n const addItemAction = React.useCallback(() => {\r\n WishListItemActions.addToCart(input);\r\n }, [input]);\r\n\r\n return (\r\n \r\n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders remove from wishlist button.\r\n * @param input - Wishlist item props with the configuration.\r\n * @returns React component.\r\n */\r\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\r\n const { removeFromWishlistText } = input;\r\n\r\n const removeItemAction = React.useCallback(() => {\r\n WishListItemActions.removeItem(input);\r\n }, [input]);\r\n\r\n return \r\n );\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../citta-promo-banner.props.autogenerated';\r\n\r\nexport interface IPromoBannerLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nexport const PromoBannerLinks: React.FC = ({ links, requestContext, onTextChange, telemetryContent }) => {\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return(\r\n \r\n {editableLinks && editableLinks.length ?\r\n \r\n : null\r\n }\r\n \r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if(!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link,index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-promo-banner__link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport interface IPromoBannerText {\r\n text: string;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const PromoBannerText: React.FC = ({ text, onTextChange, requestContext }) => {\r\n return(\r\n \r\n );\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Carousel } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { PromoBannerCloseButton, PromoBannerLinks, PromoBannerText } from './components';\r\nimport { IBannerMessagesData, ICittaPromoBannerProps } from './citta-promo-banner.props.autogenerated';\r\n\r\nexport interface IPromoBannerState {\r\n animating: boolean;\r\n isVisible: boolean;\r\n activeIndex: number;\r\n}\r\n\r\nexport interface IPromoBannerViewProps extends ICittaPromoBannerProps<{}>, IPromoBannerState {\r\n promoBannerProps: IModuleProps;\r\n contentProps: INodeProps ;\r\n bannerMessages: IBannerMessagesData[];\r\n PromoBannerTextProps: INodeProps;\r\n PromoBannerLinksProps: INodeProps;\r\n CarouselProps: INodeProps;\r\n closeButton?: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n handleText(): void;\r\n handleLinks(): void;\r\n}\r\n\r\n/**\r\n *\r\n * PromoBannerModule component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass PromoBanner extends React.PureComponent, IPromoBannerState> {\r\n public state: IPromoBannerState = {\r\n animating: false,\r\n isVisible: true,\r\n activeIndex: 0\r\n };\r\n\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n public render(): JSX.Element | null {\r\n const { bannerMessages, dismissEnabled, interval, hideFlipper, autoplay, className= '' } = this.props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { isVisible, activeIndex } = this.state;\r\n\r\n if (!isVisible) {\r\n this.props.context.telemetry.error('Promo banner content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const viewProps = {\r\n // Context for telemetry and raw data for C1 to do customization\r\n // Including computed data, state data and methods\r\n ...this.props,\r\n className: classnames('ms-promo-banner', className),\r\n isVisible, // state data\r\n onDismiss: this._onDismiss, // methods\r\n handleLinks: this.handleLinkClick,\r\n handleText: this.handleTextChange,\r\n\r\n promoBannerProps: { className: classnames('ms-promo-banner', className), moduleProps: this.props, role: 'banner' },\r\n PromoBannerTextProps: {\r\n tag: PromoBannerText\r\n },\r\n PromoBannerLinksProps: {\r\n tag: PromoBannerLinks,\r\n telemetryContent: this.telemetryContent\r\n },\r\n contentProps: { className: 'ms-promo-banner__content' },\r\n bannerMessages: bannerMessages,\r\n activeIndex: activeIndex,\r\n CarouselProps: {\r\n tag: Carousel,\r\n className: 'ms-promo-banner__carousel',\r\n activeIndex: activeIndex,\r\n next: this._next,\r\n previous: this._previous,\r\n onIndicatorsClickHandler: this._goToIndex,\r\n hideIndicator: hideFlipper,\r\n interval: interval,\r\n hideFlipper: hideFlipper,\r\n autoplay: autoplay\r\n },\r\n closeButton: dismissEnabled && \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => {\r\n if(this.props.config.bannerMessages && this.props.config.bannerMessages[0]) {\r\n this.props.config.bannerMessages[0].text = event.target.value;\r\n }\r\n }\r\n\r\n public handleLinkClick = () => {\r\n // console.log('mlmlm')\r\n //const links = this.props.config.bannerMessages[1].links;\r\n // console.log('links', links)\r\n }\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if(this.props.config.bannerMessages && this.props.config.bannerMessages[1]) {\r\n const links = this.props.config.bannerMessages[1].links;\r\n if(links) {\r\n links[linkIndex].linkText = event.target.value;\r\n }\r\n }\r\n };\r\n\r\n private _next = (): void => {\r\n const nextIndex = this._isLastItem() ? 0 : this.state.activeIndex + 1;\r\n this._goToIndex(nextIndex);\r\n };\r\n\r\n private _previous = (): void => {\r\n const nextIndex = this._isFirstItem() ? (this.props.config.bannerMessages ? this.props.config.bannerMessages.length - 1 : 0) : this.state.activeIndex - 1;\r\n this._goToIndex(nextIndex);\r\n };\r\n\r\n private _goToIndex = (index: number): void => {\r\n if (this.state.animating) {\r\n return;\r\n }\r\n this.setState({ activeIndex: index });\r\n };\r\n\r\n private _isFirstItem = () => this.state.activeIndex === 0;\r\n\r\n private _isLastItem = () => this.props.config.bannerMessages && this.state.activeIndex === this.props.config.bannerMessages.length - 1;\r\n\r\n private _onDismiss = (): void => {\r\n this.setState({ isVisible: false });\r\n };\r\n}\r\n\r\nexport default PromoBanner;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IPromoBannerViewProps } from './citta-promo-banner';\r\n\r\nconst PromoBannerView: React.FC = props => {\r\n const {\r\n promoBannerProps,\r\n contentProps,\r\n closeButton,\r\n bannerMessages,\r\n PromoBannerTextProps,\r\n PromoBannerLinksProps,\r\n CarouselProps,\r\n handleLinks,\r\n handleText\r\n } = props;\r\n const slides = bannerMessages && bannerMessages.map((message, index) => {\r\n if (message.links?.length) {\r\n return ( \r\n \r\n {message.text && }\r\n {message.links && message.links.length > 0 && }\r\n \r\n );\r\n }\r\n return (\r\n \r\n {message.text && }\r\n {message.links && message.links.length > 0 && }\r\n \r\n );\r\n });\r\n if(bannerMessages.length > 0){\r\n return (\r\n \r\n \r\n {closeButton}\r\n \r\n );\r\n }\r\n return null;\r\n};\r\nexport default PromoBannerView;\r\n","import { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport { SearchSuggestion, SearchSuggestionCriteria } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getSearchSuggestionsAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\n\r\n// @ts-ignore\r\nexport const enum SuggestionType {\r\n Category = 'ScopedCategory',\r\n Keyword = 'Keyword',\r\n Product = 'Product',\r\n None = 'None'\r\n}\r\n\r\n/**\r\n * Input class for auto suggest search input\r\n */\r\nexport class AutoSuggestInput implements IActionInput {\r\n public searchQuery?: string;\r\n public topResultsCount?: number;\r\n public suggestionType?: string;\r\n public hitPrefix?: string;\r\n public hitSuffix?: string;\r\n\r\n constructor(searchText?: string, top?: number, suggestionType?: string, hitPrefix?: string, hitSuffix?: string) {\r\n this.searchQuery = searchText;\r\n this.topResultsCount = top;\r\n this.suggestionType = suggestionType;\r\n this.hitPrefix = hitPrefix;\r\n this.hitSuffix = hitSuffix;\r\n }\r\n\r\n public getCacheKey = () => `AutoSuggestSearchSuggestions`;\r\n public getCacheObjectType = () => 'AutoSuggestSearchSuggestions';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nconst createInput = (inputData: ICreateActionContext) => {\r\n return new AutoSuggestInput();\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a auto-suggest suggestions\r\n */\r\nexport async function getSearchSuggestionsAction(input: AutoSuggestInput, ctx: IActionContext): Promise {\r\n // If no input is provided fail out\r\n if (!input || !input.searchQuery) {\r\n throw new Error('[getSearchSuggestionsAction]No valid Input was provided, failing');\r\n }\r\n\r\n const autosuggest: Autosuggestions = {};\r\n\r\n const autoSuggestPromises = [\r\n _getAutoSuggest(input, autosuggest, ctx),\r\n ];\r\n return Promise.all(autoSuggestPromises).then(() => {\r\n return autosuggest;\r\n });\r\n}\r\n\r\nasync function _getAutoSuggest(\r\n input: AutoSuggestInput,\r\n autosuggest: Autosuggestions,\r\n ctx: IActionContext\r\n): Promise {\r\n const searchCriteria: SearchSuggestionCriteria = {\r\n ProductSearchCriteria: {\r\n SearchCondition: input.searchQuery && input.searchQuery.length > 0 ? input.searchQuery : '',\r\n Context: {\r\n ChannelId: +ctx.requestContext.apiSettings.channelId,\r\n CatalogId: +ctx.requestContext.apiSettings.catalogId\r\n }\r\n },\r\n HitPrefix: input.hitPrefix,\r\n HitSuffix: input.hitSuffix,\r\n SuggestionType: input.suggestionType\r\n };\r\n\r\n const searchSuggestions = await getSearchSuggestionsAsync(\r\n { callerContext: ctx, queryResultSettings: { Paging: { Top: input.topResultsCount } } },\r\n searchCriteria\r\n );\r\n\r\n if (searchSuggestions && searchSuggestions.length > 0) {\r\n // Generate image url\r\n searchSuggestions.map(\r\n (item: SearchSuggestion) =>\r\n (item.ImageUrl = item.ImageUrl ? generateImageUrl(item.ImageUrl, ctx.requestContext.apiSettings) : '')\r\n );\r\n\r\n autosuggest.AllSearchResults = searchSuggestions;\r\n } else {\r\n ctx.telemetry.error(`[getSearchSuggestionsAction] unable to get availabilites for search with suggestion type ${searchCriteria.SuggestionType}`);\r\n }\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/citta-search/get-auto-suggest-suggestions',\r\n action: >getSearchSuggestionsAction,\r\n input: createInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport { SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { ICittaSearchData } from '../citta-search.data';\r\nimport { ICittaSearchProps } from '../citta-search.props.autogenerated';\r\n\r\nexport interface ISearchKeywordSuggestProps {\r\n searchKeywordSuggestClass: string;\r\n searchPageURL: string;\r\n searchQsp: string | undefined;\r\n hitPrefix: string;\r\n hitSuffix: string;\r\n autoSuggestProps: ICittaSearchProps;\r\n searchText: string;\r\n suggestions: SearchSuggestion[] | undefined;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ISearchKeywordViewProps {\r\n text: React.ReactNode[];\r\n}\r\n\r\nlet payLoad: IPayLoad;\r\n\r\n/**\r\n *\r\n * KeywordSuggestionsComponent\r\n */\r\nexport const KeywordSuggestionsComponent = (props: ISearchKeywordSuggestProps): ISearchKeywordViewProps | undefined => {\r\n const {\r\n suggestions,\r\n hitPrefix,\r\n hitSuffix\r\n } = props;\r\n\r\n if (!suggestions) {\r\n return undefined;\r\n }\r\n\r\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n\r\n const reactNodes: React.ReactNode[] = [];\r\n\r\n suggestions.map(item => {\r\n reactNodes.push(_assembleNode(item, hitPrefix, hitSuffix, props));\r\n });\r\n\r\n return { text: reactNodes };\r\n};\r\n\r\nconst _assembleNode = (item: SearchSuggestion, hitPrefix: string, hitSuffix: string, props: ISearchKeywordSuggestProps) => {\r\n const ariaLabel = item.Value &&\r\n (item.Value).replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n payLoad.contentAction.etext = ariaLabel;\r\n const attribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n return (\r\n
  • \r\n \r\n {_generateLink(item, hitPrefix, hitSuffix, props) &&\r\n _getHighlightedText(item.Value ? item.Value : '', hitPrefix, hitSuffix)}\r\n \r\n
  • \r\n );\r\n};\r\n\r\nconst _generateLink = (suggestion: SearchSuggestion, hitPrefix: string, hitSuffix: string, props: ISearchKeywordSuggestProps): string => {\r\n const { searchPageURL, searchQsp } = props;\r\n\r\n const formattedLink = (suggestion.Value as string)\r\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\r\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n const route = searchPageURL || '';\r\n return formattedLink && formattedLink.length > 0\r\n ? `${route}${route.indexOf('?') === -1 ? '?' : '&'}${searchQsp}=${formattedLink}`\r\n : route;\r\n};\r\n\r\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\r\n const formattedText = suggestion\r\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\r\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n\r\n // tslint:disable:react-no-dangerous-html\r\n return ;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { getRichTextHtml, IActionContext, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, INodeProps, IPayLoad, ITelemetryContent, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICittaSearchData } from '../citta-search.data';\r\nimport { ICittaSearchProps } from '../citta-search.props.autogenerated';\r\n\r\nexport interface ISearchProductSuggestProps {\r\n searchProductSuggestClass: string;\r\n searchPageURL: string;\r\n searchQsp: string | undefined;\r\n hitPrefix: string;\r\n hitSuffix: string;\r\n autoSuggestProps: ICittaSearchProps;\r\n searchText: string;\r\n suggestions: SearchSuggestion[] | undefined;\r\n telemetry: ITelemetry;\r\n moduleType: string;\r\n moduleId: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ISearchProductViewProps {\r\n title: React.ReactNode;\r\n items: ISearchProductItemViewProps[];\r\n}\r\n\r\nexport interface ISearchProductItemViewProps {\r\n text: React.ReactNode;\r\n price: React.ReactNode;\r\n LiProduct: INodeProps;\r\n AProduct: INodeProps;\r\n id: string | undefined;\r\n}\r\n\r\nlet payLoad: IPayLoad;\r\nlet telemetryContent: ITelemetryContent | undefined;\r\n\r\n/**\r\n *\r\n * ProductSuggestionsComponent\r\n */\r\nexport const ProductSuggestionsComponent = (props: ISearchProductSuggestProps): ISearchProductViewProps | undefined => {\r\n const {\r\n suggestions,\r\n hitSuffix,\r\n hitPrefix,\r\n autoSuggestProps: {\r\n context: { actionContext },\r\n resources: { productSuggestionHeading }\r\n },\r\n moduleType,\r\n moduleId\r\n } = props;\r\n const reactNodes: ISearchProductItemViewProps[] = [];\r\n telemetryContent = props.telemetryContent;\r\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n\r\n if (!suggestions) {\r\n return undefined;\r\n }\r\n\r\n suggestions.map(item => {\r\n reactNodes.push(_assembleNode(item, hitPrefix, hitSuffix, actionContext, props, moduleType, moduleId));\r\n });\r\n\r\n const titleNode = _renderTitle(productSuggestionHeading);\r\n\r\n return { title: titleNode, items: reactNodes };\r\n};\r\n\r\nconst _renderTitle = (productSuggestionHeading: string) => {\r\n const productAutoSuggestionHeading = productSuggestionHeading ? productSuggestionHeading : 'Go to products';\r\n\r\n return
  • {productAutoSuggestionHeading}
  • ;\r\n};\r\n\r\nconst _assembleNode = (\r\n item: SearchSuggestion,\r\n hitPrefix: string,\r\n hitSuffix: string,\r\n actionContext: IActionContext,\r\n props: ISearchProductSuggestProps,\r\n moduleType: string,\r\n moduleId: string\r\n): ISearchProductItemViewProps => {\r\n return {\r\n text: _getHighlightedText(item.Value ? item.Value : '', hitPrefix, hitSuffix),\r\n price:\r\n item.Id &&\r\n item.Value3 &&\r\n item.Value3.Value &&\r\n item.Value3.Value.DecimalValue &&\r\n _renderPrice(item.Value3.Value.DecimalValue, item.Value3.Value.DecimalValue, moduleId, moduleType, props),\r\n LiProduct: _getLiWrapper(),\r\n AProduct: _getAWrapper(item, hitPrefix, hitSuffix, actionContext),\r\n id: item.Id\r\n };\r\n};\r\n\r\nconst _getLiWrapper = () => {\r\n return {\r\n className: 'msc-autoSuggest__productResults-item',\r\n tag: 'li' as NodeTag\r\n };\r\n};\r\n\r\nconst _getAWrapper = (item: SearchSuggestion, hitPrefix: string, hitSuffix: string, actionContext: IActionContext) => {\r\n const ariaLabel = item.Value &&\r\n (item.Value).replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n\r\n payLoad.contentAction.recid = item.Id;\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n return {\r\n className: 'msc-autoSuggest__productResults-item',\r\n tag: 'a' as NodeTag,\r\n 'aria-label': ariaLabel,\r\n href: _generateLink(item, hitPrefix, hitSuffix, actionContext),\r\n ...attribute\r\n };\r\n};\r\n\r\nconst _generateLink = (suggestion: SearchSuggestion, hitPrefix: string, hitSuffix: string, actionContext: IActionContext) => {\r\n const formattedLink = (suggestion.Value as string).replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n return suggestion.Value && suggestion.Id ?\r\n getProductPageUrlSync(formattedLink,suggestion.Id as unknown as number, actionContext, undefined) : '';\r\n};\r\n\r\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\r\n const formattedText = suggestion\r\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\r\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n\r\n // tslint:disable:react-no-dangerous-html\r\n return ;\r\n};\r\n\r\nconst _renderPrice = (adjustedPrice: number, basePrice: number, moduleId: string, moduleType: string, props: ISearchProductSuggestProps): JSX.Element | null => {\r\n const {\r\n autoSuggestProps: { context }\r\n } = props;\r\n\r\n return (\r\n \r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport { ProductRefiner, ProductRefinerValue, SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICittaSearchData } from '../citta-search.data';\r\nimport { ICittaSearchProps } from '../citta-search.props.autogenerated';\r\n\r\nexport interface ISearchCategorySuggestProps {\r\n searchCategorySuggestClass: string;\r\n searchPageURL: string;\r\n searchQsp: string | undefined;\r\n hitPrefix: string;\r\n hitSuffix: string;\r\n autoSuggestProps: ICittaSearchProps;\r\n searchText: string;\r\n searchRefiners: ProductRefiner[] | undefined;\r\n suggestions: SearchSuggestion[] | undefined;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ISearchCategoryViewProps {\r\n title: React.ReactNode;\r\n text: React.ReactNode[];\r\n}\r\n\r\nlet payLoad: IPayLoad;\r\n\r\n/**\r\n *\r\n * CategorySuggestionsComponent\r\n */\r\nexport const CategorySuggestionsComponent = (props: ISearchCategorySuggestProps): ISearchCategoryViewProps | undefined => {\r\n const {\r\n suggestions,\r\n searchText,\r\n autoSuggestProps: {\r\n resources: { categorySuggestionHeading }\r\n }\r\n } = props;\r\n\r\n if (!suggestions) {\r\n return undefined;\r\n }\r\n\r\n const reactNodes: React.ReactNode[] = [];\r\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\r\n\r\n suggestions.map(item => {\r\n reactNodes.push(_assembleNode(item, props));\r\n });\r\n\r\n const titleNode = _renderTitle(categorySuggestionHeading, searchText);\r\n\r\n return { title: titleNode, text: reactNodes };\r\n};\r\n\r\nconst _renderTitle = (categorySuggestionHeading: string, searchText: string) => {\r\n const categoryAutoSuggestionHeading = categorySuggestionHeading\r\n ? format(categorySuggestionHeading, searchText)\r\n : `Search \"${searchText}\" in categories`;\r\n\r\n return
  • {categoryAutoSuggestionHeading}
  • ;\r\n};\r\n\r\nconst _assembleNode = (item: SearchSuggestion, props: ISearchCategorySuggestProps) => {\r\n const { searchText, hitPrefix, hitSuffix } = props;\r\n\r\n const splitValue = item.Value && item.Value.split('|').pop();\r\n const ariaLabel = splitValue\r\n ? splitValue.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '')\r\n : item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n payLoad.contentAction.etext = item.Value;\r\n const attribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n return (\r\n
  • \r\n \r\n {_generateLink(item, searchText, props) && _getHighlightedText(item.Value ? item.Value : '', hitPrefix, hitSuffix)}\r\n \r\n
  • \r\n );\r\n};\r\n\r\nconst _generateLink = (suggestion: SearchSuggestion, searchText: string, props: ISearchCategorySuggestProps): string => {\r\n return suggestion && suggestion.Id ? _getCategoryLink(suggestion.Id, searchText, props) : '';\r\n};\r\n\r\nconst _getCategoryLink = (id: string, searchText: string, props: ISearchCategorySuggestProps): string => {\r\n const { searchPageURL, searchQsp, searchRefiners } = props;\r\n\r\n const route = searchPageURL || '';\r\n const urlPath = `${route}${route.indexOf('?') === -1 ? '?' : '&'}${searchQsp}=${searchText}`;\r\n const categoryRefiners =\r\n searchRefiners &&\r\n searchRefiners.find(refiners => {\r\n return refiners.KeyName === 'Category';\r\n });\r\n const refiner =\r\n categoryRefiners &&\r\n categoryRefiners.Values &&\r\n categoryRefiners.Values.find(item => {\r\n return item.RefinerRecordId === parseInt(id, 10);\r\n });\r\n\r\n const encodedRefiner = refiner && encodeURIComponent(JSON.stringify(compressRefiners([refiner])));\r\n\r\n return encodedRefiner ? `${urlPath}&refiners=${encodedRefiner}` : urlPath;\r\n};\r\n\r\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\r\n let formattedText = suggestion\r\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\r\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\r\n formattedText = formattedText.split('|').pop() || '';\r\n\r\n // tslint:disable:react-no-dangerous-html\r\n return ;\r\n};\r\n\r\n// TODO: This code is currently duplicated in categoryautosuggest need to either remove one of these files\r\n// or move this code to a common place\r\nconst compressedRefinerKeys = ['DataTypeValue', 'LeftValueBoundString', 'RefinerRecordId', 'RefinerSourceValue', 'RightValueBoundString', 'UnitText'];\r\n\r\n/**\r\n * Compressed a list of refiners for use in URLs\r\n * @param refiners The uncompressed refiners\r\n */\r\nconst compressRefiners = (refiners: ProductRefinerValue[]) => {\r\n const compressedRefiners: (string | number)[][] = [];\r\n\r\n refiners.forEach((refiner) => {\r\n const compressedRefiner: (string | number)[] = [];\r\n compressedRefinerKeys.forEach((refinerKey) => {\r\n // @ts-ignore: This line is intentionally not typesafe\r\n compressedRefiner.push(refiner[refinerKey]);\r\n });\r\n compressedRefiners.push(compressedRefiner);\r\n });\r\n\r\n return compressedRefiners;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISearchFormProps {\r\n hideSearchLabel: boolean | undefined;\r\n isSearchFormExpanded: boolean | undefined;\r\n disableSubmitSearch: boolean | undefined;\r\n searchTextInput: React.RefObject;\r\n maxChars: number;\r\n searchQsp: string;\r\n searchPlaceholder: string;\r\n query: string;\r\n ariaLabelCancel: string;\r\n ariaLabelSearch: string;\r\n ariaLabelSubmit: string;\r\n handleCancelSearchChange(): void;\r\n handleInputChange(query: string): void;\r\n handleSearchClick(): void;\r\n}\r\n\r\nexport interface ISearchFormViewProps {\r\n input: React.ReactNode;\r\n submitBtn: React.ReactNode;\r\n cancelBtn: React.ReactNode;\r\n searchBtn: React.ReactNode;\r\n}\r\n\r\nexport const FormComponent = (props: ISearchFormProps): ISearchFormViewProps => {\r\n const {\r\n searchQsp,\r\n searchPlaceholder,\r\n hideSearchLabel,\r\n isSearchFormExpanded,\r\n searchTextInput,\r\n handleInputChange,\r\n maxChars,\r\n disableSubmitSearch,\r\n handleCancelSearchChange,\r\n handleSearchClick,\r\n query,\r\n ariaLabelCancel,\r\n ariaLabelSearch,\r\n ariaLabelSubmit\r\n } = props;\r\n\r\n const onInputChange = (e: React.ChangeEvent): void => {\r\n handleInputChange(e.target.value || '');\r\n };\r\n\r\n const inputNode = !hideSearchLabel ? (\r\n \r\n ) : (\r\n \r\n );\r\n\r\n const submitBtnNode = !disableSubmitSearch && (\r\n \r\n );\r\n\r\n const cancelBtNoden = (\r\n \r\n );\r\n\r\n return {input: inputNode, cancelBtn: cancelBtNoden, submitBtn: submitBtnNode, searchBtn: searchBtnNode };\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISearchLabelProps {\r\n isSearchFormExpanded: boolean;\r\n searchLabelClass: string;\r\n searchLabelArialLabel: string;\r\n searchtext: string;\r\n searchCollapsedLabel: React.RefObject;\r\n hideSearchLabel?: boolean;\r\n telemetryContent: ITelemetryContent;\r\n handleCancelSearchChange(): void;\r\n}\r\n\r\nexport const LabelComponent = (props: ISearchLabelProps) => {\r\n const { searchLabelClass, searchLabelArialLabel, isSearchFormExpanded, searchtext, searchCollapsedLabel, hideSearchLabel, handleCancelSearchChange, telemetryContent} = props;\r\n const payLoad = getPayloadObject('click', telemetryContent, searchtext, '');\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n return (\r\n
    \r\n \r\n {!hideSearchLabel && {searchtext}}\r\n \r\n
    \r\n );\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport { debounce } from 'lodash';\r\nimport * as React from 'react';\r\n\r\nimport { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\r\nimport { getUrlSync } from '@msdyn365-commerce/core';\r\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\r\nimport { getProductSearchRefinersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nimport { createSearchStateInput } from '@msdyn365-commerce-modules/search-utilities';\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport getSearchSuggestionsAction, { AutoSuggestInput, SuggestionType } from './actions/get-auto-suggest-suggestions';\r\nimport { ICittaSearchData } from './citta-search.data';\r\nimport { ICittaSearchProps, ISuggestionTypeCriterionData } from './citta-search.props.autogenerated';\r\nimport {\r\n CategorySuggestionsComponent,\r\n FormComponent,\r\n ISearchCategoryViewProps,\r\n ISearchKeywordViewProps,\r\n ISearchProductViewProps,\r\n KeywordSuggestionsComponent,\r\n LabelComponent,\r\n ProductSuggestionsComponent\r\n} from './components';\r\n\r\nexport interface ISearchState {\r\n isSearchFormExpanded: boolean;\r\n searchText: string;\r\n searchKeywordSuggestClass: string;\r\n searchProductSuggestClass: string;\r\n searchCategorySuggestClass: string;\r\n suggestions: Autosuggestions | undefined;\r\n searchRefiners?: ProductRefiner[] | undefined;\r\n autoSuggestAriaLabel: string;\r\n isInitialState: boolean;\r\n inSearchMode: boolean;\r\n}\r\n\r\nexport interface ISearchViewProps extends ICittaSearchProps {\r\n Search: IModuleProps;\r\n AutoSuggestAriaLabel: INodeProps;\r\n AutoSuggestAriaLabelText: string;\r\n searchText: string;\r\n AutoSuggest: INodeProps;\r\n KeywordSuggest: INodeProps;\r\n ProductSuggest: INodeProps;\r\n CategorySuggest: INodeProps;\r\n SearchForm: INodeProps;\r\n SearchBtn: INodeProps;\r\n FormWrapper: INodeProps;\r\n BtnWrapper: INodeProps;\r\n UlKeyword: INodeProps;\r\n UlProduct: INodeProps;\r\n UlCategory: INodeProps;\r\n label: React.ReactNode;\r\n searchLabel: INodeProps;\r\n searchLabelText: string;\r\n form: React.ReactNode;\r\n autosuggestKeyword?: ISearchKeywordViewProps;\r\n autosuggestProduct?: ISearchProductViewProps;\r\n autosuggestCategory?: ISearchCategoryViewProps;\r\n callbacks: {\r\n handleCancelSearchChange(): void;\r\n handleSearchClick(): void;\r\n };\r\n isSearchFormExpanded: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Search module\r\n * @extends {React.Component, ISearchState>}\r\n */\r\nclass Search extends React.Component, ISearchState> {\r\n private searchTextInput: React.RefObject;\r\n private searchCollapsedLabel: React.RefObject;\r\n private formReference: React.RefObject;\r\n private maxChars: number;\r\n private inputSuggestionType?: ISuggestionTypeCriterionData[];\r\n private topResultsCount?: number;\r\n private hitPrefix: string = '{';\r\n private hitSuffix: string = '}';\r\n private waitTime: number = 500;\r\n private autoSuggestResultScreenReaderDiv: React.RefObject;\r\n private autoSuggestResultDiv: React.RefObject;\r\n private searchFormClass: string;\r\n private searchBtnClass: string;\r\n private searchLabelClass: string;\r\n private telemetryContent: ITelemetryContent;\r\n // @ts-ignore\r\n private cancellabelDebounce: debounce;\r\n\r\n constructor(props: ICittaSearchProps) {\r\n super(props);\r\n this.searchTextInput = React.createRef();\r\n this.searchCollapsedLabel = React.createRef();\r\n this.autoSuggestResultScreenReaderDiv = React.createRef();\r\n this.autoSuggestResultDiv = React.createRef();\r\n this.formReference = React.createRef();\r\n this.state = {\r\n isSearchFormExpanded: false,\r\n searchText: '',\r\n searchKeywordSuggestClass: 'ms-search__autoSuggest__keyword',\r\n searchProductSuggestClass: 'ms-search__autoSuggest__product',\r\n searchCategorySuggestClass: 'ms-search__autoSuggest__category',\r\n suggestions: undefined,\r\n searchRefiners: undefined,\r\n autoSuggestAriaLabel: '',\r\n isInitialState: true,\r\n inSearchMode: false\r\n };\r\n this.maxChars =\r\n (this.props.context &&\r\n this.props.context.app &&\r\n this.props.context.app.config &&\r\n this.props.context.app.config.searchInputMaxLength) ||\r\n 50;\r\n this.inputSuggestionType = this.props.config && this.props.config.suggestionTypeCriterion;\r\n this.topResultsCount = this.props.config && this.props.config.topResultsCount ? this.props.config.topResultsCount : 5;\r\n this.searchFormClass = 'ms-search__form';\r\n this.searchBtnClass = 'ms-search__btn';\r\n this.searchLabelClass = 'ms-search__label';\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n document.body && document.body.addEventListener('mousedown', this._focusOutTarget);\r\n window && window.addEventListener('keyup', this._keyup);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.body.removeEventListener('mousedown', this._focusOutTarget, false);\r\n window && window.removeEventListener('keyup', this._keyup, false);\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n const {\r\n config: { hideSearchLabel }\r\n } = this.props;\r\n const { isSearchFormExpanded, isInitialState } = this.state;\r\n\r\n if (!this.props.context.request.params.isEditor) {\r\n if (!hideSearchLabel && isSearchFormExpanded) {\r\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\r\n } else if (!isInitialState) {\r\n this.searchCollapsedLabel && this.searchCollapsedLabel.current && this.searchCollapsedLabel.current.focus();\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity max-func-body-length\r\n public render(): JSX.Element {\r\n const {\r\n context,\r\n resources: { searchtext, searchLabelArialLabel, cancelBtnAriaLabel, searchBtnAriaLabel, submitBtnAriaLabel },\r\n config: { hideSearchLabel, disableSubmitSearch, searchplaceholderText, className = '' }\r\n } = this.props;\r\n\r\n const {\r\n isSearchFormExpanded,\r\n searchText,\r\n searchKeywordSuggestClass,\r\n searchProductSuggestClass,\r\n searchCategorySuggestClass,\r\n suggestions,\r\n searchRefiners\r\n } = this.state;\r\n\r\n const searchQsp = (context && context.app && context.app.config && context.app.config.searchQueryStringParameter) || 'q';\r\n const searchPageURL = getUrlSync('search', context && context.actionContext) || '';\r\n const searchURL = this._appendQueryParams(searchPageURL, searchText, searchQsp);\r\n const searchPlaceholder = searchplaceholderText && searchplaceholderText.length > 0 ? searchplaceholderText : '';\r\n\r\n const keywordSuggestions =\r\n suggestions &&\r\n suggestions.AllSearchResults &&\r\n suggestions.AllSearchResults.filter(\r\n i => i.SuggestionType === SuggestionType.Keyword || i.SuggestionType === SuggestionType.None\r\n );\r\n const productSuggestions =\r\n suggestions &&\r\n suggestions.AllSearchResults &&\r\n suggestions.AllSearchResults.filter(i => i.SuggestionType === SuggestionType.Product);\r\n const categorySuggestions =\r\n suggestions &&\r\n suggestions.AllSearchResults &&\r\n suggestions.AllSearchResults.filter(i => i.SuggestionType === SuggestionType.Category);\r\n\r\n const viewProps: ISearchViewProps = {\r\n ...(this.props as ICittaSearchProps),\r\n\r\n Search: {\r\n moduleProps: this.props,\r\n className: `${classnames('ms-search', className)} ${disableSubmitSearch ? 'no-submit' : 'with-submit'}`,\r\n },\r\n AutoSuggestAriaLabel: {\r\n tag: 'div',\r\n className: 'msc-autoSuggest__screen-reader',\r\n 'aria-live': 'assertive',\r\n ref: this.autoSuggestResultScreenReaderDiv\r\n },\r\n AutoSuggestAriaLabelText: this.state.autoSuggestAriaLabel,\r\n searchText: this.state.searchText,\r\n AutoSuggest: {\r\n ref: this.autoSuggestResultDiv,\r\n className: 'ms-search__autoSuggest'\r\n },\r\n KeywordSuggest: {\r\n className: searchKeywordSuggestClass\r\n },\r\n ProductSuggest: {\r\n className: searchProductSuggestClass\r\n },\r\n CategorySuggest: {\r\n className: searchCategorySuggestClass\r\n },\r\n SearchForm: {\r\n className: `${this.searchFormClass} ${isSearchFormExpanded ? 'bx-show' : 'bx-hide'}`\r\n },\r\n SearchBtn: {\r\n className: `${this.searchBtnClass} ${isSearchFormExpanded ? 'bx-show' : 'bx-show'}`\r\n },\r\n BtnWrapper: {\r\n className: 'ms-search__btnWrapper',\r\n 'aria-label': 'Search',\r\n },\r\n FormWrapper: {\r\n tag: 'form',\r\n ref: this.formReference,\r\n className: 'ms-search__searchForm',\r\n 'aria-label': 'Search',\r\n name: 'searchForm',\r\n role: 'Search',\r\n action: searchURL,\r\n autoComplete: 'off',\r\n onSubmit: this._handleSubmit\r\n },\r\n UlKeyword: {\r\n tag: 'ul',\r\n className: classnames('msc-autoSuggest__keywordResults-items', className)\r\n },\r\n UlProduct: {\r\n tag: 'ul',\r\n className: classnames('msc-autoSuggest__productResults-items', className)\r\n },\r\n UlCategory: {\r\n tag: 'ul',\r\n className: classnames('msc-autoSuggest__categoryResults-items', className)\r\n },\r\n searchLabel: {\r\n tag: 'div',\r\n className: 'search-label',\r\n },\r\n searchLabelText: 'Search',\r\n label: LabelComponent({\r\n isSearchFormExpanded: isSearchFormExpanded,\r\n searchLabelClass: `${this.searchLabelClass} 'bx-show'}`,\r\n searchtext: searchtext,\r\n searchLabelArialLabel: searchLabelArialLabel,\r\n searchCollapsedLabel: this.searchCollapsedLabel,\r\n hideSearchLabel: hideSearchLabel,\r\n handleCancelSearchChange: this._handleCancelSearchChange,\r\n telemetryContent: this.telemetryContent\r\n }),\r\n // @ts-ignore\r\n form: FormComponent({\r\n ariaLabelCancel: cancelBtnAriaLabel,\r\n ariaLabelSearch: searchBtnAriaLabel,\r\n ariaLabelSubmit: submitBtnAriaLabel,\r\n hideSearchLabel: hideSearchLabel,\r\n searchTextInput: this.searchTextInput,\r\n isSearchFormExpanded: isSearchFormExpanded,\r\n disableSubmitSearch: disableSubmitSearch,\r\n handleInputChange: this._handleInputChange,\r\n handleCancelSearchChange: this._handleCancelSearchChange,\r\n handleSearchClick: this._handleSearchClick,\r\n maxChars: this.maxChars,\r\n searchQsp: searchQsp,\r\n searchPlaceholder: searchPlaceholder,\r\n query: searchText\r\n }),\r\n autosuggestKeyword:\r\n searchText && searchText.length > 0 && keywordSuggestions && keywordSuggestions.length > 0\r\n ? KeywordSuggestionsComponent({\r\n searchKeywordSuggestClass: searchKeywordSuggestClass,\r\n searchPageURL: searchPageURL,\r\n searchQsp: searchQsp,\r\n hitPrefix: this.hitPrefix,\r\n hitSuffix: this.hitSuffix,\r\n autoSuggestProps: this.props,\r\n searchText: searchText,\r\n suggestions: keywordSuggestions,\r\n telemetryContent: this.telemetryContent\r\n })\r\n : undefined,\r\n autosuggestProduct:\r\n searchText && searchText.length > 0 && productSuggestions && productSuggestions.length > 0\r\n ? ProductSuggestionsComponent({\r\n searchProductSuggestClass: searchProductSuggestClass,\r\n searchPageURL: searchPageURL,\r\n searchQsp: searchQsp,\r\n hitPrefix: this.hitPrefix,\r\n hitSuffix: this.hitSuffix,\r\n autoSuggestProps: this.props,\r\n searchText: searchText,\r\n suggestions: productSuggestions,\r\n telemetry: this.props.telemetry,\r\n moduleType: this.props.typeName,\r\n moduleId: this.props.id,\r\n telemetryContent: this.telemetryContent\r\n })\r\n : undefined,\r\n autosuggestCategory:\r\n searchText && searchText.length > 0 && categorySuggestions && categorySuggestions.length > 0\r\n ? CategorySuggestionsComponent({\r\n searchCategorySuggestClass: searchCategorySuggestClass,\r\n searchPageURL: searchPageURL,\r\n searchQsp: searchQsp,\r\n hitPrefix: this.hitPrefix,\r\n hitSuffix: this.hitSuffix,\r\n autoSuggestProps: this.props,\r\n searchText: searchText,\r\n suggestions: categorySuggestions,\r\n searchRefiners: searchRefiners,\r\n telemetryContent: this.telemetryContent\r\n })\r\n : undefined,\r\n callbacks: {\r\n handleCancelSearchChange: this._handleCancelSearchChange,\r\n handleSearchClick: this._handleSearchClick\r\n },\r\n isSearchFormExpanded: this.state.isSearchFormExpanded\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _focusOutTarget = (e: any): void => {\r\n const { suggestions } = this.state;\r\n\r\n if (\r\n suggestions &&\r\n suggestions.AllSearchResults &&\r\n e.target.closest('.ms-search') === null\r\n ) {\r\n this._clearAutoSuggestState();\r\n }\r\n };\r\n\r\n private _keyup = (e: KeyboardEvent): void => {\r\n const { suggestions } = this.state;\r\n\r\n if (suggestions && suggestions.AllSearchResults && e.keyCode === KeyCodes.Escape) {\r\n this._clearAutoSuggestState();\r\n } else if (this.state.isSearchFormExpanded && e.keyCode === KeyCodes.Escape) {\r\n if (this.state.isSearchFormExpanded) {\r\n this.setState({ isSearchFormExpanded: false });\r\n window.document.body.classList.toggle('search-open', false);\r\n }\r\n }\r\n\r\n if (!((this.formReference.current && this.formReference.current.contains(e.target as unknown as Node)) ||\r\n (this.autoSuggestResultDiv.current && this.autoSuggestResultDiv.current.contains(e.target as unknown as Node)))) {\r\n if (suggestions && suggestions.AllSearchResults) {\r\n this._clearAutoSuggestState();\r\n }\r\n\r\n if (this.state.isSearchFormExpanded) {\r\n this.setState({ isSearchFormExpanded: false });\r\n window.document.body.classList.toggle('search-open', false);\r\n }\r\n }\r\n };\r\n\r\n private _clearAutoSuggestState = (): void => {\r\n const {\r\n context: { actionContext },\r\n data: { searchState }\r\n } = this.props;\r\n\r\n if (this.searchTextInput.current && this.searchTextInput.current.value.length > 0) {\r\n searchState.searchText = '';\r\n searchState.defaultBasicSearchUrl = '';\r\n searchState.searchQueryStringParameter = '';\r\n actionContext ? actionContext.update(createSearchStateInput(searchState), searchState) : null;\r\n this.searchTextInput.current.value = '';\r\n }\r\n\r\n this.setState({ searchText: '', suggestions: undefined, searchRefiners: undefined });\r\n };\r\n\r\n private _handleSearchClick = (): void => {\r\n console.log('handle search click')\r\n const { isSearchFormExpanded } = this.state;\r\n const updatedIsSearchFormExpanded = !isSearchFormExpanded;\r\n const headerElem = document.querySelector('.ms-header');\r\n if (headerElem) {\r\n if (updatedIsSearchFormExpanded) {\r\n headerElem.classList.add('lock-opaque');\r\n // window.document.body.classList.toggle('menu-open', true);\r\n window.document.body.classList.toggle('search-open', true);\r\n } else {\r\n if (document.documentElement.scrollTop < 2) {\r\n headerElem.classList.remove('lock-opaque');\r\n }\r\n // window.document.body.classList.toggle('menu-open', false);\r\n window.document.body.classList.toggle('search-open', false);\r\n }\r\n }\r\n this.setState({ isSearchFormExpanded: updatedIsSearchFormExpanded });\r\n }\r\n\r\n private _handleInputChange = (query: string): void => {\r\n if (!query || query.length < this.maxChars) {\r\n this.setState({ searchText: query });\r\n }\r\n\r\n if (this.cancellabelDebounce) {\r\n this.cancellabelDebounce.cancel();\r\n }\r\n\r\n const {\r\n telemetry,\r\n context,\r\n data: { searchState }\r\n } = this.props;\r\n\r\n if (context) {\r\n if (query && query.length > 0) {\r\n if (query.length > this.maxChars) {\r\n return;\r\n }\r\n\r\n this.cancellabelDebounce = debounce(\r\n () => {\r\n getSearchSuggestionsAction(\r\n new AutoSuggestInput(\r\n query,\r\n this.topResultsCount,\r\n this._getSuggestionType(this.inputSuggestionType),\r\n this.hitPrefix,\r\n this.hitSuffix\r\n ),\r\n context.actionContext\r\n )\r\n .then(results => {\r\n this._getSearchRefiners(query)\r\n .then(refiners => {\r\n this.setState({\r\n suggestions: results, searchRefiners: refiners,\r\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(results)\r\n });\r\n })\r\n .catch(error => {\r\n this.setState({\r\n suggestions: results, searchRefiners: undefined,\r\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(results)\r\n });\r\n telemetry.exception(error);\r\n telemetry.debug('Unable to get refiners results');\r\n });\r\n })\r\n .catch(error => {\r\n this.setState({\r\n suggestions: undefined, searchRefiners: undefined,\r\n autoSuggestAriaLabel: this._setAutoSuggestResultCount()\r\n });\r\n telemetry.exception(error);\r\n telemetry.debug('Unable to get auto suggest results');\r\n });\r\n },\r\n this.waitTime\r\n );\r\n\r\n setTimeout(\r\n () => {\r\n this.cancellabelDebounce();\r\n },\r\n 0\r\n );\r\n\r\n searchState.searchText = query;\r\n } else {\r\n this.setState({ suggestions: undefined, searchRefiners: undefined });\r\n searchState.searchText = '';\r\n }\r\n context.actionContext.update(createSearchStateInput(searchState), searchState);\r\n }\r\n };\r\n\r\n private _getSuggestionType = (suggestionTypes?: ISuggestionTypeCriterionData[]): string => {\r\n if (suggestionTypes && suggestionTypes.length > 0) {\r\n const distinctSuggestionTypes: string[] = [];\r\n suggestionTypes && suggestionTypes.forEach((suggestionTypeItem, index) => {\r\n suggestionTypeItem.SuggestionType && distinctSuggestionTypes.push(suggestionTypeItem.SuggestionType.charAt(0).toUpperCase() + suggestionTypeItem.SuggestionType.slice(1));\r\n });\r\n return distinctSuggestionTypes.join(',');\r\n }\r\n return 'Keyword, Product, ScopedCategory';\r\n };\r\n\r\n private async _getSearchRefiners(searchText: string): Promise {\r\n const { actionContext: ctx } = this.props.context;\r\n return getProductSearchRefinersAsync(\r\n { callerContext: ctx },\r\n {\r\n SearchCondition: searchText,\r\n Context: {\r\n ChannelId: +ctx.requestContext.apiSettings.channelId,\r\n CatalogId: +ctx.requestContext.apiSettings.catalogId\r\n }\r\n }\r\n );\r\n }\r\n\r\n private _handleSubmit = (\r\n e: React.MouseEvent | React.KeyboardEvent | React.FormEvent\r\n ): void => {\r\n const {\r\n config: { disableSubmitSearch },\r\n context: {\r\n actionContext,\r\n app: {\r\n config: { searchQueryStringParameter }\r\n }\r\n }\r\n } = this.props;\r\n\r\n const query = this.searchTextInput.current && this.searchTextInput.current.value;\r\n e.preventDefault();\r\n\r\n if (!query || (query && query.length === 0) || disableSubmitSearch) {\r\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\r\n } else {\r\n const searchQsp = searchQueryStringParameter || 'q';\r\n const searchURL = this._appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\r\n document.location.href = searchURL;\r\n }\r\n };\r\n\r\n private _handleCancelSearchChange = (): void => {\r\n const { isSearchFormExpanded, suggestions } = this.state;\r\n\r\n if (!isSearchFormExpanded) {\r\n this.setState({\r\n isSearchFormExpanded: true,\r\n searchText: '',\r\n isInitialState: false\r\n });\r\n } else {\r\n if (suggestions && suggestions.AllSearchResults) {\r\n this._clearAutoSuggestState();\r\n }\r\n\r\n this.setState({ isSearchFormExpanded: false });\r\n window.document.body.classList.toggle('search-open', false);\r\n }\r\n };\r\n\r\n private _appendQueryParams = (route: string, query: string, qsp: string): string => {\r\n if (route && route.length > 0) {\r\n return query && query.length > 0 ? `${route}${route.indexOf('?') === -1 ? '?' : '&'}${qsp}=${query}` : route;\r\n }\r\n return '';\r\n };\r\n\r\n private _setAutoSuggestResultCount = (result?: Autosuggestions) => {\r\n if (this.autoSuggestResultScreenReaderDiv.current !== null) {\r\n const ariaLiveRegion = this.autoSuggestResultScreenReaderDiv.current;\r\n const suggestResultString = this.props.resources.autoSuggestFoundMessage;\r\n const emptyResultString = this.props.resources.noAutoSuggestionMessage;\r\n ariaLiveRegion.innerText = result && (result.AllSearchResults && result.AllSearchResults.length > 0) ? suggestResultString : emptyResultString;\r\n ariaLiveRegion.setAttribute('aria-live', 'assertive');\r\n return ariaLiveRegion.innerText;\r\n } else {\r\n return '';\r\n }\r\n };\r\n}\r\n\r\nexport default Search;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as React from 'react';\r\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from './components';\r\n\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { ISearchViewProps } from './citta-search';\r\n\r\nconst SearchView: React.FC = props => {\r\n const {\r\n Search,\r\n AutoSuggestAriaLabel,\r\n AutoSuggestAriaLabelText,\r\n searchText,\r\n AutoSuggest,\r\n KeywordSuggest,\r\n ProductSuggest,\r\n CategorySuggest,\r\n UlKeyword,\r\n UlProduct,\r\n UlCategory,\r\n form,\r\n searchLabel,\r\n searchLabelText,\r\n autosuggestCategory,\r\n autosuggestKeyword,\r\n autosuggestProduct,\r\n SearchForm,\r\n SearchBtn,\r\n FormWrapper,\r\n BtnWrapper\r\n } = props;\r\n\r\n return (\r\n \r\n { /* @ts-ignore */}\r\n {_renderButton(form as ISearchFormViewProps, SearchBtn, BtnWrapper)}\r\n { /* @ts-ignore */}\r\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper, searchLabel, searchLabelText)}\r\n \r\n {searchText && searchText.length > 0 ?\r\n {AutoSuggestAriaLabelText} : ''\r\n }\r\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword)}\r\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct)}\r\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderButton = (form: ISearchFormViewProps, SearchBtn: INodeProps, BtnWrapper: INodeProps) => {\r\n return (\r\n \r\n \r\n {form.searchBtn}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps, searchLabel: INodeProps, searchLabelText: string) => {\r\n return (\r\n \r\n \r\n {form.input}\r\n \r\n {form.cancelBtn}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderKeywordSuggestions = (\r\n KeywordSuggest: INodeProps,\r\n UlKeyword: INodeProps,\r\n keywordSuggestions?: ISearchKeywordViewProps\r\n) => {\r\n return (\r\n keywordSuggestions && (\r\n \r\n \r\n {keywordSuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderProductSuggestions = (\r\n ProductSuggest: INodeProps,\r\n UlProduct: INodeProps,\r\n productSuggestions?: ISearchProductViewProps\r\n) => {\r\n return (\r\n productSuggestions && (\r\n \r\n \r\n {productSuggestions.title}\r\n {productSuggestions.items.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.text}\r\n {item.price}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst _renderCategorySuggestions = (\r\n CategorySuggest: INodeProps,\r\n UlCategory: INodeProps,\r\n categorySuggestions?: ISearchCategoryViewProps\r\n) => {\r\n return (\r\n categorySuggestions && (\r\n \r\n \r\n {categorySuggestions.title}\r\n {categorySuggestions.text.map(text => {\r\n return text;\r\n })}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nexport default SearchView;","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface IWishlistItemDimension {\r\n key: string;\r\n className?: string;\r\n dimensionType: string;\r\n dimensionValue: string;\r\n}\r\n\r\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\r\n
    \r\n {dimensionType}:\r\n {dimensionValue}\r\n
    \r\n);\r\n","/*!\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport {\r\n CommerceListLine,\r\n ProductPrice,\r\n ReleasedProductType,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n // convertProductDimensionTypeToDimensionTypes,\r\n getFallbackImageUrl,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IWishlistItemActionMessageState } from '../citta-wishlist-items';\r\nimport { WishlistItemDimension } from './citta-wishlist-items-dimensions';\r\n\r\nexport interface IWishlistItemProps extends CommerceListLine {\r\n product: SimpleProduct;\r\n wishlistState: IWishlistItemActionMessageState;\r\n price?: ProductPrice;\r\n context: ICoreContext>;\r\n productUrl: string;\r\n imageSettings?: IImageSettings;\r\n removeFromWishlistText: string;\r\n isInStock: boolean;\r\n addToCartText: string;\r\n outOfStockText: string;\r\n index: number;\r\n itemKey: string;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n enableImageProductLink?: boolean;\r\n inventoryInformationLabel?: string;\r\n inventoryLabelClassName?: string;\r\n telemetryContent?: ITelemetryContent;\r\n handlers: {\r\n onAddToCart(product: SimpleProduct, itemKey: string): void;\r\n onRemoveItem(productId: number): void | undefined;\r\n onDismiss(): void;\r\n };\r\n resources: {\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n freePriceText: string;\r\n };\r\n}\r\n\r\nexport interface IWishlistItemViewProps {\r\n key: string;\r\n productImage: React.ReactNode;\r\n productLink: React.ReactNode;\r\n productDimensions?: React.ReactNode[];\r\n productPrice?: React.ReactNode;\r\n addToCartButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n productStatusMessage?: React.ReactNode;\r\n productName?: React.ReactNode;\r\n productAriaLabel?: string;\r\n entireProductLink?: string;\r\n inventoryInformation?: React.ReactNode;\r\n productUnitOfMeasure?: React.ReactNode;\r\n}\r\n\r\nconst _addItemToCart = (props: IWishlistItemProps): void => {\r\n const { product, itemKey, handlers } = props;\r\n const { onAddToCart } = handlers;\r\n\r\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\r\n};\r\n\r\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\r\n const { onRemoveItem } = props.handlers;\r\n const { RecordId } = props.product;\r\n\r\n onRemoveItem && RecordId && onRemoveItem(RecordId);\r\n};\r\n\r\nconst WishListItemActions = {\r\n addToCart: _addItemToCart,\r\n removeItem: _removeItemFromWishlist\r\n};\r\n\r\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\r\n if (!msdyn365Commerce.isBrowser) {\r\n return '';\r\n }\r\n\r\n const fullUrl = new URL(props.productUrl, window.location.href);\r\n // for (const dimension of props.product.Dimensions ?? []) {\r\n // const dimensionValue = dimension.DimensionValue?.Value;\r\n // if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\r\n // const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\r\n // fullUrl.searchParams.set(dimensionName, dimensionValue!);\r\n // }\r\n // }\r\n return fullUrl.href;\r\n // return updateProductUrl(productUrl, context, swatch);\r\n};\r\n\r\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\r\n const { product, price, context, resources } = props;\r\n\r\n const { Name, Dimensions } = product;\r\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\r\n\r\n let formattedPrice = 'Free';\r\n let dimensions = null;\r\n\r\n if (price) {\r\n formattedPrice =\r\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\r\n }\r\n\r\n if (Dimensions) {\r\n dimensions = Dimensions.map(productDimension => {\r\n switch (productDimension.DimensionTypeValue) {\r\n case 1:\r\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n case 3:\r\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n case 4:\r\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n default:\r\n return '';\r\n }\r\n });\r\n }\r\n\r\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\r\n};\r\n\r\n/**\r\n * Renders a link to a product based on the given props.\r\n * @param input - Wishlist item props with the info about the product.\r\n * @param productUrl - The url to the product.\r\n * @returns React component with a link to a product.\r\n */\r\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\r\n const { telemetryContent } = input;\r\n const { RecordId: recordId, Name: productName } = input.product;\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\r\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const productPageUrlWithSwatch = productUrl;\r\n return (\r\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\r\n \r\n {productName}\r\n \r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Renders a product name box.\r\n * @param productName - The text to display.\r\n * @returns React component with a name of a product.\r\n */\r\nconst renderProductName = (productName: string) => {\r\n return
    {productName}
    ;\r\n};\r\n\r\n/**\r\n * Renders inventory information.\r\n * @param inventoryInformationLabel - The text to display.\r\n * @param inventoryLabelClassName - The component class name.\r\n * @returns React component.\r\n */\r\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\r\n const inventoryCssName = inventoryLabelClassName\r\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\r\n : 'ms-wishlist-items__inventory-label';\r\n return (\r\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\r\n {inventoryInformationLabel}\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Renders add to cart button.\r\n * @param input - Wishlist item props with the configuration.\r\n * @returns React component.\r\n */\r\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\r\n const { isInStock, addToCartText, outOfStockText } = input;\r\n\r\n // Check if the product is service or not by product type.\r\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n const addItemAction = React.useCallback(() => {\r\n WishListItemActions.addToCart(input);\r\n }, [input]);\r\n\r\n return (\r\n \r\n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders remove from wishlist button.\r\n * @param input - Wishlist item props with the configuration.\r\n * @returns React component.\r\n */\r\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\r\n const { removeFromWishlistText } = input;\r\n\r\n const removeItemAction = React.useCallback(() => {\r\n WishListItemActions.removeItem(input);\r\n }, [input]);\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _onIncrement(): void {\r\n let invokeCallback = false;\r\n let amount:number = this.props.min || 1;\r\n this.setState((prevState: IQuantityState) => {\r\n if (prevState.currentInput + amount <= this.props.max) {\r\n invokeCallback = true;\r\n return { currentInput: prevState.currentInput + amount};\r\n } else {\r\n invokeCallback = false;\r\n return { currentInput: prevState.currentInput };\r\n }\r\n // tslint:disable-next-line:align\r\n }, () => {\r\n invokeCallback && this.props.onChange && this.props.onChange(this.state.currentInput);\r\n });\r\n }\r\n\r\n private _onDecrement(): void {\r\n let invokeCallback = false;\r\n let amount:number = this.props.min || 1;\r\n this.setState((prevState: IQuantityState) => {\r\n if (prevState.currentInput > amount) {\r\n invokeCallback = true;\r\n return { currentInput: prevState.currentInput - amount };\r\n } else {\r\n invokeCallback = false;\r\n return { currentInput: amount };\r\n }\r\n // tslint:disable-next-line:align\r\n }, () => { invokeCallback && this.props.onChange && this.props.onChange(this.state.currentInput); });\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = parseInt((e.target.value), 10);\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement = this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n\r\n if (currentValue > this.props.max) {\r\n this.setState({ currentInput: this.props.max },\r\n () => {\r\n debounce(() => {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }, 200)();});\r\n } else {\r\n this.setState({ currentInput: currentValue },\r\n () => {\r\n debounce(() => {\r\n if(!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue)) {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n\r\n if (inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }\r\n }, 200)();});\r\n }\r\n }\r\n\r\n private _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n if(isNaN(this.state.currentInput) || (this.state.currentInput < minValue)) {\r\n this.setState({ currentInput: minValue }, () => { this.props.onChange && this.props.onChange(this.state.currentInput); });\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n }\r\n}","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { CartLine, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport * as React from 'react';\r\nimport { Quantity } from '../../utilities/quantity';\r\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from '../../../../data-actions/accordion/get-attributes-for-selected-variant';\r\n\r\n\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 /** 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 quanitity component */\r\n decrementButtonAriaLabel: string;\r\n /** Aria label for the increment button in quanitity component */\r\n incrementButtonAriaLabel: string;\r\n salesLineSkuText: string;\r\n}\r\n\r\ninterface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n product: SimpleProduct;\r\n imperilDimension: string;\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 /** Quantity onChange callback */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number): void;\r\n\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}\r\n\r\nconst CartLineItemFunctions = {\r\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings, props: any) => {\r\n if (!Product || !Product.Dimensions) {\r\n return [];\r\n }\r\n\r\n return Product.Dimensions.map(productDimension => {\r\n\r\n if (productDimension.DimensionTypeValue === 1) {\r\n return (\r\n
    \r\n {DimensionStrings.colorString}\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n
    \r\n );\r\n }\r\n if (productDimension.DimensionTypeValue === 2) {\r\n return (\r\n
    \r\n {DimensionStrings.configString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n
    \r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 3) {\r\n return (\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 }\r\n\r\n if (productDimension.DimensionTypeValue === 4) {\r\n return (\r\n
    \r\n {DimensionStrings.styleString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n
    \r\n );\r\n }\r\n return null;\r\n });\r\n },\r\n\r\n renderProductSKU:(props:ICartLineProps) => {\r\n var CartLine = props.data.cartLine;\r\n if (!CartLine || !CartLine.ItemId) {\r\n return undefined;\r\n }\r\n if(CartLine) {\r\n return(\r\n
    \r\n SKU:\r\n {CartLine.ItemId}\r\n
    \r\n );\r\n }\r\n return undefined;\r\n },\r\n\r\n renderDiscountLines: (props: ICartLineProps) => {\r\n\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 : ''}:\r\n {` ${props.resources.discountStringText || 'Discount'} `}\r\n \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 }\r\n};\r\n\r\nclass DimensionLine extends React.Component {\r\n public dimension: string = '';\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n // dimension: props.data.product.result.Dimensions[1].DimensionValue.Value\r\n dimension: props.defaultValue\r\n };\r\n }\r\n public async componentDidMount(): Promise {\r\n const actionInput = new AttributesForSelectedVariantInput(\r\n this.props.product.RecordId,\r\n // @ts-ignore\r\n +this.props.context.actionContext.requestContext.apiSettings.channelId,\r\n this.props.product);\r\n\r\n await getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).then((result) => {\r\n result!.forEach(res => {\r\n if (res.Name === \"Online size imperial\" && res.TextValue) {\r\n this.setState({ dimension: res.TextValue })\r\n }\r\n })\r\n }).catch(error => {\r\n console.log('error', error);\r\n });\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n {this.state.dimension}\r\n );\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 } = props.data;\r\n\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 };\r\n const fallbackImageUrl = getFallbackImageUrl(product.ItemId, props.context.actionContext.requestContext.apiSettings);\r\n const productDimensions = CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings, props);\r\n const productSKU = CartLineItemFunctions.renderProductSKU(props);\r\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\r\n const onChange = (newValue: number) => {\r\n if (props.quantityOnChange) {\r\n props.quantityOnChange(props.data.cartLine, newValue);\r\n }\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 if (props.isQuantityEditable && !props.data.cartLine.IsGiftCardLine) {\r\n const isB2B = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n const eoqQuantity = isB2B ? props.data?.product?.Behavior?.MultipleOfQuantity : 1;\r\n nodes.push(\r\n
    \r\n
    {resources.quantityDisplayString}
    \r\n\r\n {_generateErrorMessage()}\r\n\r\n \r\n
    \r\n );\r\n } else {\r\n nodes.push(\r\n
    \r\n \r\n\r\n {_generateErrorMessage()}\r\n\r\n {props.data.cartLine.Quantity}\r\n
    \r\n );\r\n }\r\n const isB2B = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n\r\n nodes.push(\r\n
    \r\n \r\n {\r\n props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 &&\r\n <>\r\n {` ${props.resources.discountStringText || 'Discount'} `}\r\n \r\n ||\r\n null\r\n }\r\n
    \r\n );\r\n\r\n return nodes;\r\n };\r\n const isB2B = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {product.Name}\r\n {productDimensions.length > 0 ?\r\n
    \r\n {productDimensions}\r\n {productSKU}\r\n
    :\r\n ''\r\n }\r\n
    \r\n \r\n
    \r\n {renderDisountLines}\r\n
    \r\n {\r\n _generateQuantityandPrice()\r\n }\r\n {props.data.cartLine.ItemId &&\r\n

    \r\n {resources.salesLineSkuText || 'SKU:'} {props.data.cartLine.ItemId}\r\n

    \r\n }\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CartLine;","import { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { RatingComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, ICoreContext, IGridSettings, IImageData, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport React from 'react';\r\nimport PriceComponent from '../../../../components/price-component';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n}\r\n\r\nconst ProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText,\r\n ratingAriaLabel,\r\n typeName,\r\n id\r\n}) => {\r\n const product = data.product;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let imageOrientation: string = '';\r\n if (product.AttributeValues!.length > 0) {\r\n product.AttributeValues!.map(property => {\r\n if (property.Name === 'Image Orientation') {\r\n imageOrientation = property.TextValue!;\r\n }\r\n });\r\n }\r\n const productUrl = getProductPageUrlSync(product.Name || '', product.RecordId, context && context.actionContext, undefined);\r\n const productImageSettings = imageOrientation === 'Landscape' ? getLandscapeImageSettings(imageSettings) : imageSettings;\r\n\r\n // Construct telemetry attribute to render\r\n const attribute = context\r\n && context.telemetry\r\n && context.telemetry.setTelemetryAttribute\r\n && context.telemetry.setTelemetryAttribute(product.RecordId.toString(), {\r\n pid: product.RecordId,\r\n pname: product.Name,\r\n mname: id\r\n }\r\n );\r\n return (\r\n \r\n
    \r\n {renderProductPlacementImage(productImageSettings, context.request.gridSettings, product.PrimaryImageUrl, product.Name)}\r\n
    \r\n
    \r\n

    {product.Name}

    \r\n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText, currentPriceText)}\r\n {renderDescription(product.Description)}\r\n {renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nfunction renderLabel(name: string = '', price: string = '', rating?: number, ratingAriaLabel?: string): string {\r\n let ratingLabel = '';\r\n\r\n if (rating) {\r\n const roundedRating = rating.toFixed(2);\r\n ratingLabel = format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n\r\n return (`${name} ${price} ${ratingLabel}`);\r\n}\r\n\r\nfunction renderDescription(description?: string): JSX.Element | null {\r\n return

    {description}

    ;\r\n}\r\n\r\nfunction renderRating(context: ICoreContext, typeName: string, id: string, avgRating?: number, totalRatings?: number, ariaLabel?: string): JSX.Element | null {\r\n if (!avgRating) {\r\n return null;\r\n }\r\n\r\n const numRatings = totalRatings && totalRatings.toString() || undefined;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction renderPrice(\r\n context: ICoreContext,\r\n typeName: string,\r\n id: string,\r\n basePrice?: number,\r\n adjustedPrice?: number,\r\n savingsText?: string,\r\n freePriceText?: string,\r\n originalPriceText?: string,\r\n currentPriceText?: string): JSX.Element | null {\r\n const price: ProductPrice = {\r\n BasePrice: basePrice,\r\n AdjustedPrice: adjustedPrice,\r\n CustomerContextualPrice: adjustedPrice\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction renderProductPlacementImage(imageSettings?: IImageSettings, gridSettings?: IGridSettings, imageUrl?: string, altText: string = ''): JSX.Element | null {\r\n if (!imageUrl || !gridSettings || !imageSettings) {\r\n return null;\r\n }\r\n const img: IImageData = {\r\n src: imageUrl,\r\n altText: altText\r\n };\r\n const imageProps = {\r\n gridSettings: gridSettings,\r\n imageSettings: imageSettings\r\n };\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction getLandscapeImageSettings(cmsImageSettings?: IImageSettings): IImageSettings {\r\n // tslint:disable-next-line: no-unnecessary-local-variable\r\n const landscapeImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=390&h=292&q=80&m=6&f=jpg', w: 390, h: 292 },\r\n sm: { q: 'w=528&h=396&q=80&m=6&f=jpg', w: 528, h: 396 },\r\n md: { q: 'w=640&h=479&q=80&m=6&f=jpg', w: 640, h: 479 },\r\n lg: { q: 'w=584&h=437&q=80&m=6&f=jpg', w: 584, h: 437 },\r\n xl: { q: 'w=702&h=526&q=80&m=6&f=jpg', w: 702, h: 526 }\r\n },\r\n disableLazyLoad: cmsImageSettings && cmsImageSettings.disableLazyLoad,\r\n lazyload: cmsImageSettings && cmsImageSettings.lazyload\r\n };\r\n\r\n return landscapeImageSettings;\r\n}\r\n\r\n// @ts-ignore\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'Product',\r\n { component: ProductCard }\r\n);","import { IProductCollectionViewProps } from '@msdyn365-commerce-modules/product-collection';\r\nimport { INodeProps, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport {ProductComponent} from './components/product-collection-component';\r\n\r\nconst ProductCollectionView: React.FC = props => {\r\n const { heading, ProductCollectionContainer, products, SingleSlideCarouselComponentProps, GridComponentProps, isCarousel } = props;\r\n if (products) {\r\n return (\r\n \r\n {heading}\r\n {\r\n isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps,props.config.productCollection.products,props) :\r\n _renderGrid(GridComponentProps, props.config.productCollection.products,props)\r\n }\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst _renderCarousel = (carouselContainer: INodeProps, items: ProductSearchResult[],PropDetails: React.PropsWithChildren): JSX.Element => {\r\n const isMobile = PropDetails.context && PropDetails.context.request && PropDetails.context.request.device.Type === 'Mobile'\r\n let mobileCarouselContainer = {\r\n tag: 'ul' as NodeTag,\r\n className: 'ms-product-collection__custom-carousel'\r\n }\r\n return (\r\n \r\n {items && items.map((item,index)=>_renderProduct(item,PropDetails,index))}\r\n \r\n );\r\n};\r\n\r\nconst _renderGrid = (gridContainer: INodeProps, items: ProductSearchResult[],PropDetails: React.PropsWithChildren): JSX.Element => {\r\n return (\r\n \r\n {items && items.map((item,index)=>_renderProduct(item,PropDetails,index))}\r\n \r\n );\r\n};\r\n\r\nconst _renderProduct = (product: ProductSearchResult,PropDetails: React.PropsWithChildren,index: number): JSX.Element => {\r\n const liClass = 'ms-product-collection__item';\r\n const orientationClass = getImageOrientation(product) === 'Landscape'? 'product-placement__item-limage' : 'product-placement__item-pimage';\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n};\r\n\r\nfunction getImageOrientation(product: ProductSearchResult): string {\r\n let imageOrientation: string ='';\r\n if (product.AttributeValues!.length > 0) {\r\n product.AttributeValues!.map(property => {\r\n if (property.Name?.toLowerCase() === 'image orientation') {\r\n imageOrientation = property.TextValue!;\r\n }\r\n });\r\n }\r\n return imageOrientation;\r\n}\r\n\r\nexport default ProductCollectionView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\nimport {\n IComponent,\n IComponentProps,\n ICoreContext,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * IActiveProductProps interface.\n */\nexport interface IActiveProductProps extends IComponentProps<{ product?: ProductSearchResult }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n}\n\n/**\n * IActiveProduct interface.\n */\nexport interface IActiveProduct extends IComponent {}\n\n/**\n * RenderDescription function.\n * @param description - Product description string.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderDescription(description?: string): JSX.Element | null {\n return

    {description}

    ;\n}\n\n/**\n * GetRatingAriaLabel function.\n * @param rating - Product rating number.\n * @param ratingAriaLabel - Product rating aria label.\n * @returns - Returns string.\n */\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n const numberTwo: number = 2;\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(numberTwo);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\n/**\n * RenderRating function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param ratingId - The rating id.\n * @param avgRating - The average rating.\n * @param totalRatings - The total ratings.\n * @param ariaLabel - The rating aria label.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderRating(\n context: ICoreContext,\n typeName: string,\n ratingId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() ?? undefined;\n const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\n\n return (\n \n );\n}\n\n/**\n * RenderPrice function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param productId - The product id.\n * @param basePrice - The base price of the product.\n * @param adjustedPrice - The adjusted price of the product.\n * @param savingsText - The savings text of the product.\n * @param freePriceText - The free price text.\n * @param originalPriceText - The original price text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n productId: string,\n basePrice?: number,\n adjustedPrice?: number,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string\n): JSX.Element | null {\n const price: ProductPrice = {\n BasePrice: basePrice,\n AdjustedPrice: adjustedPrice,\n CustomerContextualPrice: adjustedPrice\n };\n\n return (\n \n );\n}\n\n/**\n * RenderProductPlacementImage function.\n * @param requestContext - RequestContext.\n * @param imageSettings - The product image settings.\n * @param gridSettings - The viewport gird settings.\n * @param imageUrl - The product image url.\n * @param altText - The product image alt text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderProductPlacementImage(\n requestContext: IRequestContext,\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n altText?: string\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n const imgData: IImageData = {\n src: imageUrl,\n altText: altText ? altText : ''\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return ;\n}\n\n/**\n * ActiveProduct constant.\n * @param props - The active product props.\n * @param props.data - The product search result data.\n * @param props.context - The core context.\n * @param props.imageSettings - The prodcut image settings.\n * @param props.savingsText - The product savings text.\n * @param props.freePriceText - The free price text.\n * @param props.originalPriceText - The original price text.\n * @param props.ratingAriaLabel - The product rating aria label.\n * @param props.typeName - The type name of the module.\n * @param props.id - The id of the product.\n * @returns - Returns JSX.Element | null.\n */\nexport const ActiveProductComponent: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n ratingAriaLabel,\n typeName,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Do not need naming convention check for library prameters\n id\n}) => {\n const product = data.product;\n if (!product) {\n return null;\n }\n\n return (\n <>\n
    \n
    \n {renderProductPlacementImage(\n context.actionContext.requestContext,\n imageSettings,\n context.request.gridSettings,\n product.PrimaryImageUrl,\n product.Name\n )}\n
    \n
    \n

    {product.Name}

    \n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText)}\n {renderDescription(product.Description)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\n
    \n
    \n \n );\n};\n\nexport default ActiveProductComponent;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * ILinksData: Interface for\n * Additional content.\n */\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n isOpenInNewTab?: boolean;\n}\n\n/**\n * IAdditionalContentData: Interface for\n * Active content.\n */\ninterface IAdditionalContentData {\n heading?: string;\n subtext?: string;\n links?: ILinksData[];\n}\n\n/**\n * IActiveImageAdditionalContentProps: Interface for\n * Active Image Additional Content Component props.\n */\nexport interface IActiveImageAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IActiveImageAdditionalContentViewProps: Interface for\n * Active Image Additional Content view props.\n */\nexport interface IActiveImageAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Active Image Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Active Image Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Active Image Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IActiveImageAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'msc-active-image__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.isOpenInNewTab,\n role: 'button'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Active Image additonal content item props.\n * @param props - Active Image Additional content component props.\n * @returns IActiveImageAdditionalContentItemViewProps.\n */\nconst assembleNode = (item: IAdditionalContentData, props: IActiveImageAdditionalContentProps): IActiveImageAdditionalContentViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n additionalContentNode: { className: 'msc-active-image__details__additional-content' },\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentContainer: { className: 'msc-active-image__details__additional-content__container' },\n additionalContentItemLinks: { className: 'msc-active-image__details__additional__content__cta' }\n };\n};\n\n/**\n * ActiveImageAdditionalContent component.\n * @param props - Active Image Additional content component props.\n * @returns Active Image Additional content view props.\n */\nexport const activeImageAdditionalContent = (\n props: IActiveImageAdditionalContentProps\n): IActiveImageAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n return assembleNode(additionalContent, props);\n};\n\nexport default activeImageAdditionalContent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IRgbColor\n * @description - The IRgbColor interface contract.\n */\nexport interface IRgbColor {\n rValue: number;\n gValue: number;\n bValue: number;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IArea {\n areaId: string;\n coords: number[];\n href?: string;\n center?: number[];\n primaryImageUrl?: string;\n productUrl: string;\n productSearchResult?: ProductSearchResult;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IAreaMap {\n name: string;\n areas: IArea[];\n}\n\n/**\n * @enum CanvasCalculations\n * @description - The canvas calculations enum.\n */\nexport enum CanvasCalculations {\n defaultWidth = 0,\n defaultHeight = 0,\n defaultPositionX = 0,\n defaultPositionY = 0,\n defaultScale = 1,\n halfDivisor = 2,\n doubleMultiplier = 2,\n buttonHeight = 30,\n buttonPadding = 30,\n paddingAdjustment = 3,\n expandAnimationStartWidth = 10,\n expandAnimationEndWidth = 40,\n collapseAnimationStartWidth = 40,\n collapseAnimationEndWidth = 8,\n expandRadius = 12,\n collapseRadius = 8,\n rotation = 1.57,\n startAngle = 0,\n endAngle = 7,\n clearMargin = 50,\n clearHeight = 100,\n clearWidth = 100,\n textFadeInStartValue = 0,\n textFadeOutStartValue = 0.5,\n textFadeInterval = 0.01\n}\n\n/**\n * @enum CanvasStyles\n * @description - The canvas styles enum.\n */\nexport enum CanvasStyles {\n color = '#FFFFFF',\n buttonTextClor = '#000000'\n}\n\n/**\n * @enum\n * @description - The canvas styles enum.\n */\nexport interface IImageMapperResources {\n buttonText?: string;\n altText?: string;\n}\n\n/**\n * @interface IImageMapperProps\n * @description - The IImageMapperProps interface contract.\n */\nexport interface IImageMapperProps {\n imageData: IImageData;\n areaMap: IAreaMap;\n viewPort: string;\n requestContext: IRequestContext;\n color?: string;\n buttonTextClor?: string;\n width?: number;\n imgWidth?: number;\n activeImageRefs: React.RefObject;\n imageMapperResources?: IImageMapperResources;\n onLoad?(): void;\n onClick?(area: IArea, index: number, event: AreaEvent): void;\n onFocus?(area: IArea, index: number, event: AreaEvent): void;\n onMouseEnter?(area: IArea, index: number, event: AreaEvent): void;\n onMouseLeave?(area: IArea, index: number, event: AreaEvent): void;\n}\n\n/**\n * ImageMapper.\n */\nexport class ImageMapper extends React.Component {\n private readonly _backgroundImage: React.RefObject;\n\n private readonly _container: React.RefObject;\n\n private readonly _canvas: React.RefObject;\n\n private _isDesktopViewPort: boolean = false;\n\n private _context: CanvasRenderingContext2D | null | undefined = null;\n\n public constructor(props: IImageMapperProps) {\n super(props);\n this._backgroundImage = React.createRef();\n this._container = React.createRef();\n this._canvas = React.createRef();\n }\n\n /**\n * ComponentDidMount method.\n */\n public componentDidMount(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n this.renderAreas();\n this._context = null;\n }\n\n /**\n * ComponentDidUpdate method.\n */\n public componentDidUpdate(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n }\n\n /**\n * ShouldComponentUpdate method.\n * @param nextProps - Next props.\n * @returns Returns boolean.\n */\n public shouldComponentUpdate(nextProps: IImageMapperProps): boolean {\n let shouldRender = false;\n if (nextProps !== this.props) {\n shouldRender = true;\n }\n return shouldRender;\n }\n\n /**\n * GetActiveImageWidth method - Gets the active image width.\n * @returns Returns number | undefined.\n */\n public getActiveImageWidth = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return undefined;\n };\n\n /**\n * GetActiveImageHeight method - Gets the active image height.\n * @returns Returns number | undefined.\n */\n public getActiveImageHeight = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return undefined;\n };\n\n /**\n * ConvertHexToRgb method - This method takes color in HEX format and returns IRgbColor color object.\n * @param hexColor -The color hex value.\n * @returns -Returns IRgbColor object.\n */\n public convertHexToRgb = (hexColor: string): IRgbColor => {\n // RegEx used to execute the conversion of the hex color to rgb value.\n const regEx = new RegExp('^#?([a-f\\\\d]{2})([a-f\\\\d]{2})([a-f\\\\d]{2})$', 'u');\n\n // RegEx.exec method executes a search for a match in a specified string. Returns a result array, or null.\n const result = regEx.exec(hexColor);\n const defaultValue = 0;\n return result\n ? {\n rValue: Number.parseInt(result[1], 16),\n gValue: Number.parseInt(result[2], 16),\n bValue: Number.parseInt(result[3], 16)\n }\n : {\n rValue: defaultValue,\n gValue: defaultValue,\n bValue: defaultValue\n };\n };\n\n /**\n * ApplyFadingTransition method - Applys fading transition to button text.\n * @param text -The button text.\n * @param coords -The coordinates.\n * @param rgbColor -The RGB color object.\n * @param alpha -The alpha value of the button text.\n */\n public applyFadingTransition = (text: string, coords: number[], rgbColor: IRgbColor, alpha: number): void => {\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n context.fillStyle = `rgba(${rgbColor.rValue}, ${rgbColor.gValue}, ${rgbColor.bValue}, ${alpha} )`;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * Draw button method - Draws button and contains fixed hight, padding values.\n * @param text -The button text.\n * @param coords -The coordinates.\n */\n public drawButton = (text: string, coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonHeight = CanvasCalculations.buttonHeight;\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n const buttonPositionX = coords[0] - buttonWidth / halfDivisor;\n const buttonPositionY = coords[1] - buttonHeight / halfDivisor;\n const arcsize = buttonHeight / halfDivisor;\n\n context.beginPath();\n context.moveTo(buttonPositionX + arcsize, buttonPositionY);\n context.lineTo(buttonPositionX + buttonWidth - arcsize, buttonPositionY);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY,\n buttonPositionX + buttonWidth,\n buttonPositionY + arcsize,\n arcsize\n );\n context.lineTo(buttonPositionX + buttonWidth, buttonPositionY + buttonHeight - arcsize);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY + buttonHeight,\n buttonPositionX + buttonWidth - arcsize,\n buttonPositionY + buttonHeight,\n arcsize\n );\n context.lineTo(buttonPositionX + arcsize, buttonPositionY + buttonHeight);\n context.arcTo(buttonPositionX, buttonPositionY + buttonHeight, buttonPositionX, buttonPositionY - arcsize, arcsize);\n context.lineTo(buttonPositionX, buttonPositionY + arcsize);\n context.arcTo(buttonPositionX, buttonPositionY, buttonPositionX + arcsize, buttonPositionY, arcsize);\n context.lineTo(buttonPositionX + arcsize, buttonPositionY);\n context.stroke();\n context.closePath();\n context.fillStyle = color;\n context.fill();\n context.fillStyle = buttonTextClor;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * ExpandAnimation method - Shows expand animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public expandAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.expandAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.expandAnimationEndWidth;\n const radius = CanvasCalculations.expandRadius;\n const rotation = CanvasCalculations.rotation;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeInValue = CanvasCalculations.textFadeInStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Reders expand animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n context.fillStyle = color;\n if (buttonText) {\n if (animationStartWidth < animationEndWidth) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeInValue);\n textFadeInValue += CanvasCalculations.textFadeInterval;\n animationStartWidth++;\n } else {\n this.drawButton(buttonText, [pointPositionX, pointPositionY]);\n }\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * CollapseAnimation method - Shows collapse animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public collapseAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.collapseAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.collapseAnimationEndWidth;\n const rotation = CanvasCalculations.rotation;\n const clearMargin = CanvasCalculations.clearMargin;\n const clearHeight = CanvasCalculations.clearHeight;\n const clearWidth = CanvasCalculations.clearWidth;\n const radius = CanvasCalculations.collapseRadius;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeOutValue = CanvasCalculations.textFadeOutStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Renders collapse animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.clearRect(pointPositionX - clearMargin, pointPositionY - clearMargin, clearWidth, clearHeight);\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n if (animationEndWidth < animationStartWidth && buttonText) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeOutValue);\n textFadeOutValue -= CanvasCalculations.textFadeInterval;\n animationStartWidth--;\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * DrawCircle method - Renders active points.\n * @param coords -Coordinates.\n */\n public drawCircle = (coords: number[]): void => {\n const { color = CanvasStyles.color, viewPort } = this.props;\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n const startAngle: number = CanvasCalculations.startAngle;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n const radius = viewPort === 'xs' || viewPort === 'sm' ? coords[2] * doubleMultiplier : coords[2];\n if (!context) {\n return;\n }\n context.fillStyle = color;\n context.beginPath();\n context.strokeStyle = color;\n context.arc(coords[0], coords[1], radius, startAngle, Math.PI * doubleMultiplier);\n context.closePath();\n context.stroke();\n context.fill();\n };\n\n /**\n * ScaleCoords method - To scale the active point coordinates based on the window size.\n * @param coords -Coordinates.\n * @returns -Returns number[].\n */\n public scaleCoords = (coords: number[]): number[] => {\n const { imgWidth } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultScale: number = CanvasCalculations.defaultScale;\n\n // Calculate scale based on current 'width' and the original 'imgWidth'\n const width = this.getActiveImageWidth();\n const scale = width && imgWidth && imgWidth > defaultWidth ? width / imgWidth : defaultScale;\n return coords.map(coord => coord * scale);\n };\n\n /**\n * RenderPrefilledAreas method - To render active points in case of events.\n */\n public renderPrefilledAreas = (): void => {\n const { areaMap } = this.props;\n areaMap.areas.map(area => {\n this.drawCircle(this.scaleCoords(area.coords));\n return null;\n });\n };\n\n /**\n * ComputeCenter method - To re-calculate the center of active point based on window size.\n * @param area -IArea.\n * @returns -Returns number[].\n */\n public computeCenter = (area: IArea): number[] => {\n const scaledCoords = this.scaleCoords(area.coords);\n return [scaledCoords[0], scaledCoords[1]];\n };\n\n /**\n * HandleHoverOn method - To handle mouse hover on event.\n * @param area -IArea.\n */\n public handleHoverOn = (area: IArea): void => {\n if (area.center && this._canvas.current) {\n this.drawCircle(this.scaleCoords(area.coords));\n this.expandAnimation(area.center);\n }\n };\n\n /**\n * HandleHoverOff method - To handle mouse hover off event.\n * @param area -IArea.\n */\n public handleHoverOff = (area: IArea): void => {\n if (this._canvas.current) {\n const context = this._canvas.current.getContext('2d') ?? this._context;\n const canvasPositionX: number = CanvasCalculations.defaultPositionX;\n const canvasPositionY: number = CanvasCalculations.defaultPositionY;\n\n if (!context) {\n return;\n }\n context.clearRect(canvasPositionX, canvasPositionY, this._canvas.current.width, this._canvas.current.height);\n this.renderPrefilledAreas();\n if (area.center) {\n this.collapseAnimation(area.center);\n }\n }\n };\n\n /**\n * Click method - Mouse click event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public click = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onClick } = this.props;\n if (onClick) {\n event.preventDefault();\n onClick(area, index, event);\n }\n };\n\n /**\n * HoverOn method - Mouse hover on event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOn = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseEnter } = this.props;\n this.handleHoverOn(area);\n if (onMouseEnter) {\n onMouseEnter(area, index, event);\n }\n };\n\n /**\n * HoverOff method - Mouse hover off event.\n * @param area - IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOff = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseLeave } = this.props;\n\n this.handleHoverOff(area);\n\n if (onMouseLeave) {\n onMouseLeave(area, index, event);\n }\n };\n\n /**\n * RenderAreas method - Renders active points at given coordinates.\n * @returns -Returns JSX.Element[].\n */\n public renderAreas = (): JSX.Element[] => {\n const { areaMap, viewPort } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText ? this.props.imageMapperResources.buttonText : '';\n const altText = this.props.imageMapperResources?.altText ? this.props.imageMapperResources.altText : '';\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n\n return areaMap.areas.map((area, index) => {\n const scaledCoords = this.scaleCoords(area.coords);\n const xsRadius = area.coords[2] * doubleMultiplier;\n if (viewPort === 'xs') {\n scaledCoords[2] = xsRadius;\n }\n const center = this.computeCenter(area);\n const extendedArea = { ...area, scaledCoords, center };\n const areaKey = `area-${index}`;\n const altTextWithProductName = altText\n .replace('{buttonText}', buttonText ? buttonText : '')\n .replace('{productName}', area.productSearchResult?.Name ? area.productSearchResult.Name : '');\n return (\n \n );\n });\n };\n\n /**\n * InitCanvas method - To render the canvas.\n */\n public initCanvas = (): void => {\n if (!this._canvas.current || !this._backgroundImage.current || !this._container.current) {\n return;\n }\n\n const { color, onLoad } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultHeight: number = CanvasCalculations.defaultHeight;\n\n const canvasWidth = this.getActiveImageWidth() ?? defaultWidth;\n const canvasHeight = this.getActiveImageHeight() ?? defaultHeight;\n\n this._canvas.current.width = canvasWidth;\n this._canvas.current.height = canvasHeight;\n this._container.current.style.width = `${canvasWidth}px`;\n\n const context = this._canvas.current.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.fillStyle = color ?? '';\n\n if (onLoad) {\n onLoad();\n }\n\n this.renderPrefilledAreas();\n };\n\n /**\n * Render method - To render the image mapper component with active image, canvas and active points.\n * @returns -Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const { imageData, areaMap, requestContext } = this.props;\n\n return (\n
    \n \n \n \n {this.renderAreas()}\n \n
    \n );\n }\n}\n\nexport default ImageMapper;\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 { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n activeImageAdditionalContent,\n ActiveProductComponent,\n IActiveImageAdditionalContentViewProps,\n IArea,\n IAreaMap,\n IImageMapperProps,\n ImageMapper\n} from '../active-image-utilities';\nimport { IActiveImageData } from './active-image.data';\nimport { IActiveImageProps } from './active-image.props.autogenerated';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IActiveImageViewProps\n * @classdesc - The IActiveImageViewProps interface contract.\n */\nexport interface IActiveImageViewProps extends IActiveImageProps<{}>, IImageMapperProps {\n activePointContainer: IModuleProps;\n activePointDetailsContainer: INodeProps;\n imageMapper: React.ReactNode;\n overlay: React.ReactNode;\n productCard: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IActiveImageAdditionalContentViewProps;\n productCardleftPosition: number;\n productCardtopPosition: number;\n handleAdditionalText?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalParagraph?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalLinkText?(event: MsDyn365.ContentEditableEvent): void;\n}\n\n/**\n * @interface IActiveImageLinksData\n * @classdesc - The IActiveImageLinksData interface contract.\n */\nexport interface IActiveImageLinksData {\n linkText?: string;\n linkUrl: MsDyn365.ILinkData;\n ariaLabel?: string;\n willOpenInNewTab?: boolean;\n}\n\n/**\n * @interface IActiveImageState\n * @classdesc - The IActiveImageState interface contract.\n */\ninterface IActiveImageState {\n clientWidth: number;\n area: IArea | null;\n viewport: string;\n overlayClass: string;\n}\n\n/**\n * @enum ActiveImageConstants\n * @description - The active image constants enum.\n */\nexport enum ActiveImageConstants {\n timeoutInterval = 200,\n enterKey = 'Enter',\n escKey = 'Escape'\n}\n\n/**\n *\n * ActiveImage class.\n * @extends {React.PureComponent & IImageMapperProps, IActiveImageState>}\n */\nexport class ActiveImage extends React.PureComponent & IImageMapperProps, IActiveImageState> {\n private readonly _telemetryContent: ITelemetryContent;\n\n private _isDesktopViewPort: boolean;\n\n private readonly _defaultProductCardWidth: number = 315;\n\n private readonly _defaultProdutCardHight: number = 490;\n\n private readonly _activePoints: IArea[] = [];\n\n private readonly _activeImageRefs: React.RefObject;\n\n private readonly _activeImageClass: string;\n\n private readonly _productCardDivRef: React.RefObject;\n\n public constructor(props: IActiveImageProps & IImageMapperProps) {\n super(props);\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this._activeImageClass = `msc-active-image-${this.getActiveImageId()}`;\n this.state = {\n clientWidth: 0,\n area: null,\n viewport,\n overlayClass: ''\n };\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n this._activeImageRefs = React.createRef();\n this._productCardDivRef = React.createRef();\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this.updateClientWidth);\n document.addEventListener('keydown', this.keyDown, false);\n document.addEventListener('mousedown', this._handleOutsideClick);\n }\n setTimeout(() => {\n this.updateClientWidth();\n }, ActiveImageConstants.timeoutInterval);\n\n if (MsDyn365.msdyn365Commerce.isBrowser && this._activeImageRefs.current) {\n const images: HTMLCollectionOf = this._activeImageRefs.current.getElementsByClassName(\n 'msc-thumbnail_image msc-active-image-img'\n );\n if (ArrayExtensions.hasElements(Array.from(images))) {\n images[0].removeAttribute('usemap');\n }\n }\n }\n\n /**\n * AddActivePoints method - To handle add Active Points.\n * @param area - IArea.\n * @param product - ProductSearchResult.\n * @param coords - Coords.\n * @param productUrl - String.\n */\n public addActivePoints = (area: IArea | undefined, product: ProductSearchResult, coords: number[], productUrl: string): void => {\n if (!area) {\n this._activePoints.push({\n areaId: product.RecordId.toString(),\n coords,\n primaryImageUrl: product.PrimaryImageUrl ?? '',\n productUrl,\n productSearchResult: product\n });\n }\n };\n\n /**\n * ComponentWillUnmount method.\n */\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this.updateClientWidth);\n document.removeEventListener('keydown', (this.keyDown as unknown) as EventListener, false);\n document.removeEventListener('mousedown', this._handleOutsideClick, false);\n }\n }\n\n /**\n * UpdateClientWidth method to update client width in state.\n */\n public updateClientWidth = (): void => {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this.setState({ clientWidth: this.getActiveImageWidth(), viewport });\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n };\n\n /**\n * Render method.\n * @returns - Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const viewProps: IActiveImageViewProps = {\n ...(this.props as IImageMapperProps & IActiveImageProps<{}>),\n activePointContainer: {\n moduleProps: this.props,\n className: classnames('msc-active-image', this._activeImageClass, this.props.config.className)\n },\n activePointDetailsContainer: {\n tag: 'div',\n className: classnames('msc-active-image-wrapper', this._activeImageClass, this.props.config.className),\n ref: this._activeImageRefs\n },\n imgWidth: this.props.config.canvasWidth,\n imageMapper: this.renderImageMapper(),\n overlay: this.renderOverlay(),\n productCard: this.renderProductCard(),\n productCardleftPosition: this.getProductCardPositionX(),\n productCardtopPosition: this.getProductCardPositionY(),\n title: this.renderActiveImageDetailsHeading(),\n text: this.renderActiveImageDetailsParagraph(),\n links: this.renderActiveImageDetailsLinks(),\n detailsContainer: { className: 'msc-active-image__details' },\n detailsContainerCta: { className: 'msc-active-image__details__cta' },\n additionalContent: activeImageAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkText: this.handleAdditionalTextChange\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * RenderImageMapper method - To render image mapper.\n * @returns - Returns React.ReactNode | null.\n */\n public renderImageMapper = (): React.ReactNode | null => {\n const { config, context } = this.props;\n const defaultPosition: number = 0;\n const defaultLength: number = 0;\n const productResults = this.props.data.products.result;\n if (config.activePoints && productResults) {\n for (const product of productResults) {\n for (const configProduct of config.activePoints) {\n if (product.ItemId === configProduct.itemId) {\n const productUrl = getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined);\n const coords = [\n configProduct.xPosition ?? defaultPosition,\n configProduct.yPosition ?? defaultPosition,\n configProduct.radius ?? defaultPosition\n ];\n const area = this._activePoints.find(activePoint => JSON.stringify(activePoint.coords) === JSON.stringify(coords));\n this.addActivePoints(area, product, coords, productUrl);\n }\n }\n }\n }\n const mappedArea: IAreaMap = {\n name: `map-${this._activeImageClass}`,\n areas: this._activePoints.length > defaultLength ? this._activePoints : []\n };\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n return (\n \n );\n };\n\n /**\n * EnterArea method - To handle mouse enter event.\n * @param area - Active point area.\n * @param index - Active point index.\n * @param event - Active point AreaEvent.\n */\n public enterArea = (area: IArea, index: number, event: AreaEvent): void => {\n this.setState({ area, overlayClass: 'msc-active-image-overlay' });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(area, index, event);\n }\n if (event.type.toLocaleLowerCase() === 'click' && this._isDesktopViewPort) {\n window.open(area.productUrl, '_self');\n }\n };\n\n /**\n * LeaveArea method - To handle mouse leave event.\n */\n public leaveArea = (): void => {\n if (this._isDesktopViewPort) {\n this.resetState();\n }\n };\n\n /**\n * ResetState method - To reset the state for area and overlayclass.\n */\n public resetState = (): void => {\n this.setState({ area: null, overlayClass: '' });\n };\n\n /**\n * RenderProductComponent method - To render the product card with product information.\n * @returns - Returns React.ReactNode.\n */\n public renderProductComponent = (): React.ReactNode => {\n if (this.state.area?.productSearchResult) {\n const baseImageUrl: string = this.props.context.request.apiSettings.baseImageUrl;\n const imageUrl: string = this.state.area.primaryImageUrl ?? '';\n const primaryImageUrl: string = `${baseImageUrl}${imageUrl}`;\n const product: ProductSearchResult = this.state.area.productSearchResult;\n product.PrimaryImageUrl = primaryImageUrl;\n\n return (\n \n );\n }\n return React.Fragment;\n };\n\n /**\n * RenderProductCard method - To render product cards.\n * @returns - Returns React.ReactNode.\n */\n public renderProductCard = (): React.ReactNode => {\n const { area } = this.state;\n\n return (\n <>\n {area?.center && (\n
    \n
    \n {!this._isDesktopViewPort &&
    \n
    \n )}\n \n );\n };\n\n /**\n * RenderOverlay method - To render overlay for non desktop viewports.\n * @returns - Returns React.ReactNode.\n */\n public renderOverlay = (): React.ReactNode => {\n return <>{!this._isDesktopViewPort &&
    };\n };\n\n /**\n * GetProductCardPositionX method - Provides product card x position to the left or right of active point based on available space.\n * For xs, sm and md viewports it provides x position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionX = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsWidth = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.w\n : defaultImageSettings.viewports.lg?.w;\n const defaultPositionX: number = 0;\n const halfDivisor: number = 2;\n const productCardWidth: number = productImageSettingsWidth ? productImageSettingsWidth : this._defaultProductCardWidth;\n const { area, clientWidth, viewport } = this.state;\n const pointPositionX = area?.center?.[0] ?? clientWidth / halfDivisor;\n const leftAllignPosition = pointPositionX - productCardWidth - productCardWidth / halfDivisor;\n const rightAllignPosition = pointPositionX + productCardWidth / halfDivisor;\n let position: number = (clientWidth - productCardWidth) / halfDivisor;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n if (leftAllignPosition < defaultPositionX) {\n position = rightAllignPosition;\n } else {\n position = leftAllignPosition;\n }\n }\n return position;\n };\n\n /**\n * GetProductCardPositionY method - Provides product card y position in center with respect to active point.\n * For xs, sm and md viewports it provides y position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionY = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsHeight = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.h\n : defaultImageSettings.viewports.lg?.h;\n const halfDivisor: number = 2;\n const { area, viewport } = this.state;\n const produtCardHight: number = productImageSettingsHeight ? productImageSettingsHeight : this._defaultProdutCardHight;\n const pointPositionY = (this.getActiveImageHeight() - produtCardHight) / halfDivisor;\n let position: number = pointPositionY;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n position = (area?.center?.[1] ?? this.getActiveImageHeight() / halfDivisor) - produtCardHight / halfDivisor;\n }\n return position;\n };\n\n /**\n * GetDefaultImageSettings method.\n * @returns MsDyn365.IImageSettings.\n */\n public getDefaultImageSettings = (): MsDyn365.IImageSettings => {\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n lg: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n xl: { q: 'w=275&h=275&m=6', w: 275, h: 275 }\n },\n lazyload: true\n };\n\n return defaultImageSettings;\n };\n\n /**\n * KeyDown method - To handle keydown event.\n * @param event - KeyboardEvent.\n */\n public keyDown = (event: KeyboardEvent): void => {\n if (event.key === ActiveImageConstants.enterKey) {\n const target: HTMLElement = event.target as HTMLElement;\n if (target.nodeName === 'AREA') {\n const area: HTMLAreaElement = target as HTMLAreaElement;\n if (area.href) {\n window.open(area.href, '_self');\n }\n }\n }\n if (event.key === ActiveImageConstants.escKey) {\n this.resetState();\n }\n };\n\n /**\n * GetActiveImageWidth method - To get active image width.\n * @returns Returns number.\n */\n public getActiveImageWidth = (): number => {\n const defaultWidth: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return defaultWidth;\n };\n\n /**\n * GetActiveImageHeight method - To get active image height.\n * @returns Returns number.\n */\n public getActiveImageHeight = (): number => {\n const defaultHeight: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return defaultHeight;\n };\n\n /**\n * HandleLinkTextChange method - To handle link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleTextChange method - To handle text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * HandleParagraphChange method - To handle paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * HandleAdditionalTextChange method - To handle additional text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalLinkTextChange method - To handle additional link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalParagraphChange method - To handle additional paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * RenderActiveImageDetailsLinks method - To render active image details links.\n * @returns - React node.\n */\n public renderActiveImageDetailsLinks = (): React.ReactNode[] | undefined => {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this._telemetryContent, '');\n\n return links?.map((linkData: IActiveImageLinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'msc-active-image__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.willOpenInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n };\n\n /**\n * RenderActiveImageDetailsHeading method - To render active image details heading.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsHeading = (): React.ReactNode | undefined => {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n };\n\n /**\n * RenderActiveImageDetailsParagraph method - To render active image details paragraph.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsParagraph = (): React.ReactNode | undefined => {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n };\n\n /**\n * GetActiveImageId - To get active image id from src.\n * @returns - String.\n */\n public getActiveImageId = (): string => {\n const { activeImage } = this.props.config;\n let activeImageId: string = '';\n if (activeImage?.src) {\n const activeImageSource = activeImage.src.split('/');\n const decrementOne: number = 1;\n const activeImageIdPart = activeImageSource[activeImageSource.length - decrementOne].split('?');\n activeImageId = activeImageIdPart[0] ?? '';\n }\n return activeImageId;\n };\n\n /**\n * Handle outside click method - To handle outside click of the active image product.\n * @param event - Mouse event.\n */\n private readonly _handleOutsideClick = (event: MouseEvent) => {\n if (this._productCardDivRef.current?.contains(event.target as Node)) {\n return;\n }\n this.resetState();\n };\n}\nexport default ActiveImage;\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 { IActiveImageAdditionalContentViewProps } from '../active-image-utilities';\nimport { IActiveImageViewProps } from './active-image';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IActiveImageAdditionalContentViewProps) => {\n return (\n \n {additionalContent.heading}\n \n {additionalContent.text}\n {additionalContent.links}\n \n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nexport const activeImageView: React.FC = props => {\n return (\n \n \n {props.imageMapper}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n \n \n {props.overlay}\n {props.productCard}\n \n \n );\n};\n\nexport default activeImageView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { CheckoutModule, getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state/';\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
    \n

    {title}

    \n

    {message}

    \n
    \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { format, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { AddressFormat } from '../address-format';\nimport { IAddressResource } from '../address-module.data';\nimport AddressButtonComponent from './address-button';\nimport AddressInputComponent from './address-input';\nimport { AddressShow, IAddressShowProps } from './address-show';\n\nexport interface IAddressSelectInputProps {\n hasExternalSubmitGroup?: boolean;\n addressFormat: AddressFormat;\n addresses: Address[];\n addressPurposes: AddressPurpose[];\n resources: IAddressResource;\n selectedAddress: Address;\n telemetryContent?: ITelemetryContent;\n onAddressOptionChange(event: React.ChangeEvent): void;\n onShipMultipleAddresses?(): void;\n onAddAddress(): void;\n onSave(): void;\n onCancel(): void;\n multipleAddressShippingEnabled?: boolean;\n}\n\nexport interface IAddressSelectItem {\n key: number;\n SelectItem: INodeProps;\n input: React.ReactNode;\n showItems: IAddressShowProps;\n}\n\nexport interface IAddressSelectProps {\n SelectAddress: INodeProps;\n shipMultipleAddressesButton?: React.ReactNode;\n addButton: React.ReactNode;\n items: IAddressSelectItem[];\n isShowSaveButton: boolean;\n saveButton: React.ReactNode;\n isShowCancelButton: boolean;\n cancelButton: React.ReactNode;\n}\n\nconst getInput = (index: number, address: Address, props: IAddressSelectInputProps): React.ReactNode => {\n const { addresses, onAddressOptionChange, selectedAddress, resources, addressPurposes } = props;\n const addressTypeDescription = address.AddressTypeValue\n ? addressPurposes.find(purpose => purpose.AddressType === address.AddressTypeValue)?.Description || ''\n : '';\n const ichecked = address.RecordId === selectedAddress.RecordId;\n const additionalAttributes = {\n checked: ichecked,\n 'aria-checked': ichecked,\n 'aria-setsize': addresses.length,\n 'aria-posinset': index + 1,\n 'aria-label': format(resources.addressChangeCheckboxAriaLabel, addressTypeDescription)\n };\n\n return (\n \n );\n};\n\nconst getAddressSelectItems = (props: IAddressSelectInputProps): IAddressSelectItem[] => {\n const { addresses, addressFormat, addressPurposes } = props;\n\n return addresses.map((address, index) => {\n return {\n key: address.RecordId || 0,\n SelectItem: { className: 'msc-address-select__item' },\n input: getInput(index, address, props),\n showItems: AddressShow({\n addressFormat: addressFormat.getAddressFormat(address.ThreeLetterISORegionName || ''),\n address,\n addressPurposes\n })\n };\n });\n};\n\nexport const AddressSelect = (props: IAddressSelectInputProps): IAddressSelectProps => {\n const {\n resources,\n onCancel,\n onSave,\n onAddAddress,\n onShipMultipleAddresses,\n hasExternalSubmitGroup,\n multipleAddressShippingEnabled\n } = props;\n\n return {\n SelectAddress: { className: 'msc-address-select' },\n addButton: (\n
    \n \n
    \n ),\n shipMultipleAddressesButton: multipleAddressShippingEnabled && onShipMultipleAddresses && (\n \n ),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n items: getAddressSelectItems(props)\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 interface IShipMultipleAddressesTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productQuantity: string;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n productAddress?: string;\n isAllSelected: boolean;\n isMobile: boolean;\n clearSelectionButton: React.ReactNode;\n}\n\nexport interface IShipMultipleAddressesTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IShipMultipleAddressesTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Ship multiple addresses table heading.\n */\nexport class ShipMultipleAddressesTableHeading extends React.PureComponent {\n public state: IShipMultipleAddressesTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\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 if (!this.props.isMobile) {\n return (\n \n \n \n \n \n {this.props.productNumber}\n {{this.props.productName}}\n {\n \n {this.props.productUnitPrice}\n \n }\n {\n \n {this.props.productQuantity}\n \n }\n {{this.props.productAddress}}\n \n \n );\n } else {\n return (\n \n \n \n \n\n {/* Clear Selection Button */}\n
    \n {this.props.clearSelectionButton}\n
    \n \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 React from 'react';\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { Address, CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IShipMultipleAddressesLineViewModel } from '../../modules/checkout-shipping-address';\nimport { ICheckoutShippingCartLineInfo } from '../../modules/checkout-shipping-address/components';\n\nexport interface IShipMultipleAddressesLineProps extends CartLine {\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewModel;\n shippingLineImage: ICheckoutShippingCartLineInfo;\n price?: number;\n context: ICoreContext;\n product?: SimpleProduct;\n imageSettings?: IImageSettings;\n quantity: number;\n moduleId: string;\n moduleTypeName: string;\n currencyCode: string | undefined;\n customerAddresses: Address[];\n error?: string;\n isMobile: boolean;\n onSelect(line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void;\n onShippingAddressChange(shippingLine: CartLine, event: React.ChangeEvent): void;\n resources: {\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n}\n\nexport interface IShipMultipleAddressesLineViewProps {\n key?: string;\n productImage?: React.ReactNode;\n productPrice?: React.ReactNode;\n productCurrencyCode?: 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 productListId?: string;\n productAddress?: React.ReactNode;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n productAddressPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n}\n\n/**\n * On Select line function.\n * @param shipMultipleAddressesLine - Ship multiple addresses line.\n * @param input - Ship multiple addresses line props.\n * @returns Set on select shipping line.\n */\nconst onSelectLineHandler = (shipMultipleAddressesLine: IShipMultipleAddressesLineViewModel, input: IShipMultipleAddressesLineProps) => (\n event: React.ChangeEvent\n) => {\n shipMultipleAddressesLine.isChecked = !shipMultipleAddressesLine.isChecked;\n\n input.onSelect(shipMultipleAddressesLine, event.target.checked);\n};\n\nexport const ShipMultipleAddressesLineView = (input: IShipMultipleAddressesLineProps): IShipMultipleAddressesLineViewProps | null => {\n const { customerAddresses, shipMultipleAddressesLine, shippingLineImage, product, context, onShippingAddressChange } = input;\n\n console.log('ShipMultipleAddressesLineView rendering');\n\n if (!product) {\n return null;\n }\n\n const { ItemId } = product;\n const { Quantity, ShippingAddress } = shipMultipleAddressesLine.cartLine;\n\n return {\n selectLine: (\n \n ),\n productImage: renderProductImage(\n '',\n context,\n product.Name!,\n shippingLineImage.imageProps.fallBackSrc,\n shippingLineImage.imageProps.src\n ),\n productInfo: renderProductInfo(input),\n productPrice: renderProductPrice(input),\n productNumber: product && (\n <>\n
    {ItemId}
    \n {input.error !== 'NONE' ?
    {renderProductError(input)}
    : undefined}\n \n ),\n productQuantity: Quantity,\n productAddress: (\n onShippingAddressChange(shipMultipleAddressesLine.cartLine, e)}\n value={ShippingAddress?.RecordId}\n >\n {customerAddresses?.map((address: Address, index: number) => (\n \n {address.FullAddress}\n \n ))}\n \n )\n };\n};\n\nconst renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string\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\nconst renderProductDimensions = (props: IShipMultipleAddressesLineProps): (string | undefined)[] => {\n const { product } = props;\n if (!product || !product.Dimensions) {\n return [];\n }\n return product.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n return dimension.DimensionValue.Value;\n });\n};\n\nconst renderProductInfo = (props: IShipMultipleAddressesLineProps): React.ReactNode | undefined => {\n const { product } = props;\n const name = product?.Name;\n const dimensions = renderProductDimensions(props);\n if (!product) {\n return [];\n }\n const productName =
    {name}
    ;\n const dimensionsLine: string = dimensions.join(', ');\n return (\n
    \n
    {productName}
    \n
    {dimensionsLine}
    \n
    \n );\n};\n\nconst renderProductPrice = (props: IShipMultipleAddressesLineProps): React.ReactNode | undefined => {\n const { product } = props;\n\n if (!product?.Price) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n\nconst renderProductError = (props: IShipMultipleAddressesLineProps) => {\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","/*!\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';\nimport { INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { Address, CartLine } from '@msdyn365-commerce/retail-proxy';\nimport AddressButtonComponent from './address-button';\nimport { IShipMultipleAddressesTableHeadingProps, ShipMultipleAddressesTableHeading } from './address-ship-multiple-heading';\nimport { IAddressResource } from '../address-module.data';\nimport {\n IShipMultipleAddressesLineProps,\n IShipMultipleAddressesLineViewProps,\n ShipMultipleAddressesLineView\n} from './address-ship-multiple-lines';\nimport { IShipMultipleAddressesLineViewModel } from '../../modules/checkout-shipping-address';\nimport { ICartLineWithProduct, ICheckoutShippingCartLineInfo } from '../../modules/checkout-shipping-address/components';\n\nexport interface IAddressShipMultipleInputProps {\n context: ICoreContext;\n hasExternalSubmitGroup?: boolean;\n moduleId: string;\n moduleTypeName: string;\n currencyCode: string | undefined;\n resources: IAddressResource;\n shippingLines: ICartLineWithProduct[];\n shippingLineImages: ICheckoutShippingCartLineInfo[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\n customerAddresses: Address[];\n onSelect(line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void;\n onSelectAll(isChecked: boolean): void;\n onClear(): void;\n onShippingAddressChange(shippingLine: CartLine, event: React.ChangeEvent): void;\n onBulkShippingAddressChange(event: React.ChangeEvent): void;\n onShipSingleAddress(): void;\n onSave(): void;\n onCancel(): void;\n isMobile: boolean;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IShipMultipleAddressesViewProps {\n ShipMultipleAddress?: INodeProps;\n shipSingleAddressButton?: React.ReactNode;\n clearSelectionButton?: React.ReactNode;\n addressDropdown?: React.ReactNode;\n ProductsTable?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductsTableRow?: INodeProps;\n shipMultipleAddressLines?: IShipMultipleAddressesLineViewProps[];\n isShowSaveButton?: boolean;\n saveButton?: React.ReactNode;\n isShowCancelButton?: boolean;\n cancelButton?: React.ReactNode;\n isMobile?: boolean;\n}\n\nexport const AddressShipMultiple = (props: IAddressShipMultipleInputProps): IShipMultipleAddressesViewProps => {\n const {\n context,\n currencyCode,\n hasExternalSubmitGroup,\n moduleId,\n moduleTypeName,\n shippingLines,\n shippingLineImages,\n selectedShippingLines,\n customerAddresses,\n isMobile,\n onSelect,\n onSelectAll,\n onClear,\n onShippingAddressChange,\n onBulkShippingAddressChange,\n onShipSingleAddress,\n onSave,\n onCancel,\n resources\n } = props;\n\n const { unavailableProductErrorMessage, outOfStockProductErrorMessage } = props.resources;\n\n const shipMultipleAddressLines: IShipMultipleAddressesLineViewModel[] = [];\n\n for (const line of shippingLines) {\n shipMultipleAddressLines.push({\n isChecked: false,\n cartLine: line.cartLine\n });\n }\n\n function _renderProductListHeader(): React.ReactNode {\n const headers: IShipMultipleAddressesTableHeadingProps = {\n selectAllRowsText: resources.addressSelectAllRowsText,\n productNumber: resources.addressProductNumberText!,\n productName: resources.addressProductText!,\n productUnitPrice: resources.addressProductUnitPriceText!,\n productQuantity: resources.addressProductQuantityText!,\n productAddress: resources.addressProductAddressText,\n clickHandler: (isChecked: boolean) => {\n onSelectAll(isChecked);\n },\n isAllSelected: selectedShippingLines && selectedShippingLines.every(line => line.isChecked),\n isMobile: isMobile,\n clearSelectionButton: (\n !line.isChecked)\n }}\n />\n )\n };\n\n return ;\n }\n\n function _renderShipMultipleAddressLines(): IShipMultipleAddressesLineViewProps[] {\n return shippingLines.map((line, index) => {\n const currentLineProps: IShipMultipleAddressesLineProps = {\n shipMultipleAddressesLine: {\n isChecked: (selectedShippingLines && selectedShippingLines[index] && selectedShippingLines[index].isChecked) || false,\n cartLine: line.cartLine\n },\n shippingLineImage: shippingLineImages[index],\n product: line.product ? line.product : undefined,\n price: line.product?.Price,\n context,\n quantity: line.cartLine?.Quantity!,\n moduleId: moduleId,\n moduleTypeName: moduleTypeName,\n currencyCode: currencyCode,\n customerAddresses: customerAddresses,\n isMobile: isMobile,\n onSelect: onSelect,\n onShippingAddressChange: onShippingAddressChange,\n resources: {\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n }\n };\n\n return ShipMultipleAddressesLineView({ ...currentLineProps })!;\n });\n }\n\n return {\n ShipMultipleAddress: { className: 'msc-address-select' },\n shipSingleAddressButton: (\n \n ),\n clearSelectionButton: (\n !line.isChecked)\n }}\n />\n ),\n addressDropdown: (\n onBulkShippingAddressChange(e)}\n defaultValue={''}\n disabled={selectedShippingLines.every(line => !line.isChecked)}\n >\n \n {customerAddresses?.map((address: Address, index: number) => (\n \n ))}\n \n ),\n ProductsTable: {\n className: `ms-address-select__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `ms-address-select-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: _renderProductListHeader(),\n shipMultipleAddressLines: _renderShipMultipleAddressLines(),\n isShowSaveButton: !hasExternalSubmitGroup,\n saveButton: (\n \n ),\n isShowCancelButton: !hasExternalSubmitGroup,\n cancelButton: (\n \n ),\n isMobile: isMobile\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\nimport AddressInputComponent from './address-input';\n\nexport interface IAddressBillingCheckbox {\n isChecked: boolean;\n value: string;\n ariaLabel: string;\n text: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\nexport const AddressBillingCheckbox: React.FC = ({\n isChecked,\n value,\n ariaLabel,\n text,\n telemetryContent,\n onChange\n}) => {\n const additionalAttributes = {\n checked: isChecked,\n 'aria-checked': isChecked\n };\n\n return (\n \n );\n};\nexport default AddressBillingCheckbox;\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 IAddressBillingHeading {\n text: string;\n}\n\nexport const AddressBillingHeading: React.FC = ({ text }) => (\n

    {text}

    \n);\n\nexport default IAddressBillingHeading;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, AddressPurpose, CountryRegionInfo, StateProvinceInfo } from '@msdyn365-commerce/retail-proxy';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressBillingCheckbox } from '../../common/components/address-billing-checkbox';\nimport { AddressBillingHeading } from '../../common/components/address-billing-heading';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressData } from './checkout-billing-address.data';\nimport { ICheckoutBillingAddressProps } from './checkout-billing-address.props.autogenerated';\nimport { ErrorComponent } from '../../common';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\n\n/**\n * Props interface.\n */\nexport interface IProps extends ICheckoutBillingAddressProps, IModuleStateProps {}\n\n/**\n * Checkout billing address view state interface.\n */\nexport interface ICheckoutBillingAddressViewState {\n isShowAddress: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowSameAsShippingCheckbox: boolean;\n errorMessage?: string;\n}\n\n/**\n * Checkout billing address view props interface.\n */\nexport interface ICheckoutBillingAddressViewProps extends IProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutBillingAddressViewState;\n CheckoutBillingAddress: IModuleProps;\n sameAsShippingCheckbox: React.ReactNode;\n heading: React.ReactNode;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n *\n * CheckoutBillingAddress component.\n * @extends {React.PureComponent>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutBillingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private isBillingAddressSameAsShipping: boolean;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private validationError: object;\n\n @observable private readonly addressActionResponse?: IAddressResponse;\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n // private addRenderRef: React.RefObject;\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: IProps) {\n super(props);\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.validationError = {};\n this.isBillingAddressSameAsShipping = false;\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.addressPurposes = data.addressPurposes.result || [];\n this.countryRegions = data.countryRegions.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this.state = {\n isShowAddress: false,\n isShowAddOrUpdateAddress: false,\n isShowSameAsShippingCheckbox: false,\n errorMessage: ''\n };\n\n // This.addRenderRef = React.createRef();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions }\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result && this.props.data.checkout.result.shippingAddress,\n shippingAddress => {\n if (this.props.moduleState.isUpdating) {\n if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n } else if (shippingAddress && this.isBillingAddressSameAsShipping) {\n this._updateCurrentOperation(AddressOperation.Show, shippingAddress);\n }\n }\n }\n );\n\n reaction(\n () => this.isBillingAddressRequried,\n isBillingAddressRequried => {\n if (isBillingAddressRequried) {\n if (this.props.moduleState.isDisabled) {\n this.onEdit();\n }\n } else {\n this.props.data.checkout.result?.removeBillingAddress({});\n this.props.moduleState.onDisable();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutBillingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutBillingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutBillingAddressProps,\n nextState: ICheckoutBillingAddressViewState\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 if (!this.isBillingAddressRequried || this._shouldHideBillingAddressForOBO) {\n return null;\n }\n\n const {\n resources,\n moduleState: { hasError }\n } = this.props;\n\n const { renderView, config } = this.props;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n className: config.className,\n viewState: {\n isShowAddress: this.selectedAddress && this.currentOperation === AddressOperation.Show,\n isShowAddOrUpdateAddress: this.currentOperation !== AddressOperation.Show,\n isShowSameAsShippingCheckbox: this.isCartContainsItemsForShipping && this.props.moduleState.isUpdating\n },\n CheckoutBillingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-billing-address', config.className)\n },\n heading: ,\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n sameAsShippingCheckbox: (\n \n ),\n showAddress: this._renderShowAddress(),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * On suggestion selected.\n * @param result - The suggestion result.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, 0);\n };\n\n /**\n * Clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n addressFormatItem.forEach(format => {\n if (this.addUpdateAddress[format.name] !== undefined && !this.autoSuggest?.excludedAddressFields.includes(format.name)) {\n this.addressFormat[format.name] = '';\n }\n });\n this._clearValidation();\n };\n\n /**\n * Clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n /**\n * On address update.\n * @param name - Name.\n * @param value - Value.\n */\n private readonly onAddressAddUpdate = (name: string, value: string) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: IProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n };\n\n /**\n * Render add or update address function.\n * @returns - Address add update props.\n */\n private readonly _renderAddOrUpdateAddress = (): IAddressAddUpdateProps => {\n return AddressAddUpdate({\n resources: this.resources,\n addressType: AddressType.Billing,\n addressFormat: this.addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName ?? this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n dropdownDisplayData: this.addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n telemetryContent: this.telemetryContent,\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n onSave: this._onSubmitAddress,\n onCancel: this._resetView\n });\n };\n\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName ?? ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * On country region change function.\n * @param countryRegionId - Country region Id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Gets address format for exclude list.\n * @returns - Address item type.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Attach map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#billing_addressstreet', '#billing_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * On address add update input change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n };\n\n /**\n * On address add update dropdown change.\n * @param event - The event.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Gets state provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Initialize module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this.isBillingAddressRequried ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const { billingAddress, isBillingAddressSameAsShippingAddress } = this.props.data.checkout.result ?? {};\n\n if (this.isBillingAddressRequried) {\n if (billingAddress) {\n this.isBillingAddressSameAsShipping = isBillingAddressSameAsShippingAddress ?? false;\n this._updateCurrentOperation(AddressOperation.Show, billingAddress);\n this._updateModuleState();\n } else if (this.isCartContainsItemsForShipping) {\n this.isBillingAddressSameAsShipping = true;\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this.isBillingAddressSameAsShipping = false;\n this._updateCurrentOperation(AddressOperation.Add);\n }\n }\n };\n\n /**\n * Sets default country region Id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * On change - Billing address same as shipping.\n * @param event - The event.\n */\n private readonly _onBillingAddressSameAsShippingChange = (event: React.ChangeEvent) => {\n this.isBillingAddressSameAsShipping = event.currentTarget.checked;\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n };\n\n @computed private get isCartContainsItemsForShipping(): boolean {\n const { request } = this.props.context;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const pickupDeliveryModeCode = request.channel?.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request.channel?.EmailDeliveryModeCode;\n\n // If hasInvoiceLine is true, there are only invoices no items in cart and return false here\n return this.props.data.checkout.result?.checkoutCart.hasInvoiceLine\n ? false\n : retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n }\n\n @computed private get billingAddress(): Address | undefined {\n return this.props.data.checkout.result?.billingAddress;\n }\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed private get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState?.loyaltyAmount ? checkoutState.loyaltyAmount : 0;\n }\n\n @computed private get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n }, 0);\n }\n\n @computed private get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n const defaultAmount = 0;\n\n return checkoutState?.customerAccountAmount ?? defaultAmount;\n }\n\n @computed private get shouldPaidByCard(): boolean {\n const {\n data: { checkout },\n config\n } = this.props;\n if (!checkout.result) {\n return false;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart.cart;\n if (!cart || !cart.CartLines || cart.CartLines.length === 0) {\n return false;\n }\n\n const { paymentTenderType, tokenizedPaymentCard } = checkoutResult;\n const isPaidByOtherPaymentSource = config.paymenTenderType !== paymentTenderType && tokenizedPaymentCard;\n\n // Use payment card when it is not free or gift card balance + Loyalty amount can not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getGiftCardTotalAmount - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n\n return amountDue > 0 && !isPaidByOtherPaymentSource;\n }\n\n @computed private get isBillingAddressRequried(): boolean {\n return (\n this.shouldPaidByCard &&\n (!this.props.data.checkout?.result?.isPaymentVerificationRedirection ||\n !!this.props.data.checkout?.result?.isCheckoutCallFailed)\n );\n }\n\n @computed private get _shouldHideBillingAddressForOBO(): boolean {\n return Msdyn365.isOboRequest(this.props.context.request) && EnabledPaymentsForOBO.PaymentInstrument === 0;\n }\n\n /**\n * On submit address.\n */\n private readonly _onSubmitAddress = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n this.props.moduleState.setHasError(true);\n\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n this.props.data.checkout.result?.isPaymentSectionContainerHasError\n ) {\n this.props.data.checkout.result.updateIsBillingAddressHasError({ newIsBillingAddressHasError: true });\n }\n\n return;\n }\n\n this._setBillingAddress(this.addUpdateAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.addUpdateAddress);\n this._updateModuleState();\n };\n\n /**\n * On submit.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address submit for Add or Update operation.');\n this._onSubmitAddress();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address submit for Show operation.');\n if (this.selectedAddress) {\n this._setBillingAddress(this.selectedAddress);\n this._updateCurrentOperation(AddressOperation.Show, this.selectedAddress);\n this._updateModuleState();\n }\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Billing address cancel for Add or Update operation.');\n this._resetView();\n this._clearAddressFields();\n break;\n case AddressOperation.Show:\n this.props.telemetry.information('Billing address cancel for Show operation.');\n this._resetView();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * On edit.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Billing address onEdit is called.');\n\n if (this.isBillingAddressSameAsShipping && this.shippingAddress && this.isCartContainsItemsForShipping) {\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n } else {\n this._updateCurrentOperation(AddressOperation.Add, this.billingAddress);\n }\n this.props.moduleState.onUpdating();\n };\n\n /**\n * Sets billing address.\n * @param address - The address.\n */\n private readonly _setBillingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newBillingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newBillingAddress.TwoLetterISORegionName) {\n newBillingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateBillingAddress({\n newBillingAddress,\n additionalProperties: {\n isBillingAddressSameAsShippingAddress: this.isBillingAddressSameAsShipping\n }\n });\n }\n };\n\n /**\n * Reset view.\n */\n private readonly _resetView = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.billingAddress);\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - Address operation\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, { AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType });\n }\n };\n\n /**\n * Updates the module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n}\n\nexport default CheckoutBillingAddress;\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 { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageProps, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { format, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport groupBy from 'lodash/groupBy';\n\nimport { ICheckoutShippingAddressResources } from '../checkout-shipping-address.props.autogenerated';\n\n/**\n * The cartline product interface.\n */\nexport interface ICartLineWithProduct {\n cartLine: CartLine;\n product?: SimpleProduct;\n}\n\n/**\n * The checkout shipping cartline interface.\n */\nexport interface ICheckoutShippingCartLineInfo {\n lineId: string;\n imageProps: IImageProps;\n quantity: number;\n shippingAddressId?: number;\n}\n\n/**\n * The checkout shipping cartline props.\n */\nexport interface ICheckoutShippingCartLinesProps {\n moduleClassName: string;\n cartLines: ICheckoutShippingCartLineInfo[];\n title: string;\n itemTitle: string;\n resources: ICheckoutShippingAddressResources;\n isMultipleAddressShippingEnabled?: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Following as per module\nexport const CheckoutPickupCartLines: React.FC = ({\n moduleClassName,\n cartLines,\n title,\n itemTitle,\n resources,\n isMultipleAddressShippingEnabled = false\n}) => {\n const context = ({\n gridSettings: {\n xs: { w: 767 },\n sm: { w: 991 },\n md: { w: 1199 },\n lg: { w: 1599 },\n xl: { w: 1600 }\n }\n } as unknown) as IRequestContext;\n const isMobileCheck = isMobile({ variant: VariantType.Browser, context });\n const isMobileView = isMobileCheck === 'xs' || isMobileCheck === 'sm';\n\n if (!ArrayExtensions.hasElements(cartLines)) {\n return null;\n }\n const cartLinesForShipping: CartLine[] = [];\n if (cartLines.length > 0) {\n const getGroupByDelivery = (items: ICheckoutShippingCartLineInfo[]) => groupBy(items, item => item.shippingAddressId);\n cartLinesForShipping.push(getGroupByDelivery(cartLines));\n }\n const renderShipMultiAddressView = isMultipleAddressShippingEnabled && cartLinesForShipping.length > 1;\n const quantity = 1;\n return renderShipMultiAddressView ? (\n
    {resources.headingAfterMultiSelectAddressSelect}
    \n ) : (\n
    \n
    \n
    {title}
    \n
    {itemTitle}
    \n
    \n
    \n {cartLines.map((cartLine: ICheckoutShippingCartLineInfo) => {\n const isShowQty = cartLine.quantity > quantity;\n let className = `${moduleClassName}__group-images-lines-product`;\n const role = 'text';\n if (isShowQty) {\n className = classnames(className, ' product-image-wide');\n }\n return (\n
    \n \n {isMobileView\n ? isShowQty && (\n \n {cartLine.quantity}\n
    \n )\n : isShowQty && (\n
    \n )}\n {!isMobileView && isShowQty && (\n \n {format(resources.productQuantityInfo, cartLine.quantity, cartLine.imageProps.altText)}\n \n )}\n
    \n );\n })}\n
    \n \n );\n};\n\n/**\n * The checkout shipping cartline image settings.\n */\nexport const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n lg: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 },\n xl: { q: 'w=108&h=108&q=80&m=6&f=jpg', w: 108, h: 108 }\n },\n lazyload: true,\n quality: 80\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport {\n Address,\n AddressPurpose,\n CartLine,\n CountryRegionInfo,\n SimpleProduct,\n StateProvinceInfo,\n TenderLine,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getFallbackImageUrl,\n getSimpleProducts,\n ObjectExtensions,\n ProductInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { format, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { action, computed, observable, reaction, set } from 'mobx';\nimport { observer } from 'mobx-react';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport { AutoSuggest } from '../../common/address-autosuggest';\nimport { IAutoSuggestOptions } from '../../common/address-autosuggest.data';\nimport { AddressCommon } from '../../common/address-common';\nimport { AddressFormat } from '../../common/address-format';\nimport { AddressItemType } from '../../common/address-format.data';\nimport { AddressMetaData } from '../../common/address-meta-data';\nimport { AddressOperation, AddressType, IAddressResource, IAddressResponse } from '../../common/address-module.data';\nimport { AddressAddUpdate, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { AddressSelect, IAddressSelectProps } from '../../common/components/address-select';\nimport { AddressShow, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressData } from './checkout-shipping-address.data';\nimport { ICheckoutShippingAddressProps } from './checkout-shipping-address.props.autogenerated';\nimport {\n CheckoutPickupCartLines,\n defaultImageSettings,\n ICartLineWithProduct,\n ICheckoutShippingCartLineInfo,\n ICheckoutShippingCartLinesProps\n} from './components/checkout-shipping-cartlines-images';\nimport { ErrorComponent } from '../../common/components/address-error-alert';\nimport { focusOnCheckoutError } from '../../checkout-errors/checkout-errors';\nimport { AddressShipMultiple, IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * The checkout address props interface.\n */\nexport interface ICheckoutAddressProps extends ICheckoutShippingAddressProps, IModuleStateProps {}\n\n/**\n * The checkout shipping address view state.\n */\nexport interface ICheckoutShippingAddressViewState {\n isShowAddress: boolean;\n isShowAddresList: boolean;\n isShowAddOrUpdateAddress: boolean;\n isShowShipMultipleAddress?: boolean;\n}\n\n/**\n * The checkout shipping address state.\n */\nexport interface ICheckoutAddresState {\n shippingGroups: ICartLineWithProduct[];\n shippingGroupsBuffer: ICartLineWithProduct[];\n selectedShippingLines: IShipMultipleAddressesLineViewModel[];\n errorMessage?: string;\n}\n\n/**\n * The checkout shipping address view props.\n */\nexport interface ICheckoutShippingAddressViewProps extends ICheckoutAddressProps {\n className: string;\n currentOperation: AddressOperation;\n selectedAddress?: Address;\n addUpdateAddress: Address;\n addressListSelectedAddress: Address;\n countryRegionId: string;\n stateProvinceInfo?: StateProvinceInfo[];\n customerAddresses: Address[];\n validationError: object;\n addressActionResponse?: IAddressResponse;\n viewState: ICheckoutShippingAddressViewState;\n CheckoutShippingAddress: IModuleProps;\n isUpdating: boolean;\n hasError: boolean;\n showAddress: IAddressShowProps;\n showAddOrUpdateAddress: IAddressAddUpdateProps;\n cartLineImages?: React.ReactNode;\n showAddressSelect: IAddressSelectProps;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n showShipMultipleAddresses?: IShipMultipleAddressesViewProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n orderLines?: IShipMultipleAddressesLineViewProps[];\n showAddOrUpdateAddressHandler?(onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps;\n showAddressSelectHandler?(\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps;\n}\n\nexport interface IShipMultipleAddressesLineViewModel {\n isChecked: boolean;\n cartLine: CartLine;\n}\n\n/**\n * IExpressPaymentDetail interface.\n */\ninterface IExpressPaymentDetails {\n email?: string;\n tenderLine?: TenderLine;\n tokenizedPaymentCard?: TokenizedPaymentCard;\n paymentTenderType?: string;\n address?: Address;\n isExpressCheckoutAppliedInCartPage: boolean;\n isExpressAddressAppliedInCartPage?: boolean;\n}\n\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n *\n * Address component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutShippingAddress extends React.Component {\n @observable private currentOperation: AddressOperation;\n\n @observable private selectedAddress?: Address;\n\n @observable private addUpdateAddress: Address;\n\n @observable private countryRegionId: string = 'USA';\n\n @observable private stateProvinceInfo?: StateProvinceInfo[];\n\n @observable private customerAddresses: Address[] = [];\n\n @observable private validationError: object;\n\n @observable private addressActionResponse?: IAddressResponse;\n\n @observable private isUpdating?: boolean;\n\n @observable private hasError?: boolean;\n\n @observable private addressListSelectedAddress: Address = {};\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n private readonly addressCommon: AddressCommon;\n\n private addressFormat!: AddressFormat;\n\n private countryRegions: CountryRegionInfo[] = [];\n\n private addressPurposes: AddressPurpose[] = [];\n\n private readonly resources: IAddressResource;\n\n private readonly defaultAddressType: number = 6; // Default to Home\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private autoSuggest?: AutoSuggest;\n\n private readonly multiplePickupStoreSwitchName: string = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutAddressProps) {\n super(props);\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 this.state = { shippingGroups: [], shippingGroupsBuffer: [], selectedShippingLines: [] };\n const { context, data, resources, telemetry } = this.props;\n\n this.addUpdateAddress = {};\n this.resources = resources;\n this.currentOperation = AddressOperation.List;\n this.countryRegions = data.countryRegions.result || [];\n this.addressPurposes = data.addressPurposes.result || [];\n this.customerAddresses = data.address.result || [];\n this.stateProvinceInfo = data.countryStates.result || [];\n this.addressCommon = new AddressCommon(context, resources, telemetry);\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n this.validationError = {};\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled, autoSuggestOptions },\n resources\n } = this.props;\n\n // Initializing data props\n this._dataInitialize(this.props);\n\n this.addressFormat = new AddressFormat(\n this.countryRegions,\n new AddressMetaData({ ...resources }, this._getAddressFormatExcludeList()),\n this.addressPurposes\n );\n\n this.props.data.checkout.then(() => {\n this._setDefaultCountryRegionId();\n this._initModuleState();\n });\n\n reaction(\n () => this.countryRegionId,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.currentOperation,\n () => {\n this._getStateProvinces();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddressFromExpressCheckout,\n () => {\n if (!this.expressPaymentDetailsFromCartPage && this._canShip()) {\n let address = this.props.data.checkout.result?.shippingAddressFromExpressCheckout;\n\n if (address?.TwoLetterISORegionName) {\n const threeLetterIsoRegionName = this.getThreeLetterIsoRegionName(address.TwoLetterISORegionName);\n\n address = { ...address, ThreeLetterISORegionName: threeLetterIsoRegionName };\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n }\n\n this._updateCurrentOperation(AddressOperation.Add, address);\n this._onAddressAddUpdateSubmit();\n }\n }\n );\n\n if (autoSuggestionEnabled) {\n if (channel && !channel.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n return;\n }\n\n if (channel && !channel.BingMapsEnabled) {\n telemetry.error('Map is disabled from HQ.');\n return;\n }\n\n const options: IAutoSuggestOptions = { ...autoSuggestOptions };\n this.autoSuggest = new AutoSuggest(\n telemetry,\n options,\n channel?.BingMapsApiKey,\n channel?.ChannelCountryRegionISOCode,\n channel?.DefaultLanguageId\n );\n\n // Customer doesn't have any address. Then add view will be loaded directly. Code for the same to handle that\n if (\n this.props.data.storeSelectorStateManager.result &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n await this.autoSuggest._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n\n reaction(\n () =>\n this.props.data.storeSelectorStateManager.result?.loadMapApi &&\n (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update),\n async () => {\n await this.autoSuggest?._loadMapAPI(await this.props.data.storeSelectorStateManager);\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isMapApiLoaded,\n async () => {\n await this._attachMapAutoSuggest();\n }\n );\n }\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutShippingAddress &&\n checkoutError.errorMessage\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutShippingAddress) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n\n await this._initPickupGroup();\n }\n\n public async componentDidUpdate(): Promise {\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n if (this.props.data.storeSelectorStateManager.result?.isMapApiLoaded) {\n await this._attachMapAutoSuggest();\n }\n } else {\n this.autoSuggest?.disposeAutoSuggest();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutAddressProps, nextState: ICheckoutAddresState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n if (!this._canShip()) {\n return null;\n }\n\n const {\n config,\n context,\n renderView,\n resources,\n moduleState: { hasError }\n } = this.props;\n const { headingImages, itemsText, singleItemText, errorMessageTitle } = resources;\n const { imageSettings } = config;\n\n // Line images\n const cartLines: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0,\n shippingAddressId: line.cartLine.ShippingAddress?.RecordId ?? 0\n }));\n\n const numberOfCartLines = this._countItems(cartLines);\n const itemText = numberOfCartLines > 1 ? itemsText : singleItemText;\n const itemTitle = `(${format(itemText, numberOfCartLines)})`;\n\n const lineImageProps: ICheckoutShippingCartLinesProps = {\n moduleClassName: 'ms-checkout-shipping-address',\n cartLines: cartLines.filter(x => !ObjectExtensions.isNullOrUndefined(x)),\n itemTitle: itemTitle,\n title: headingImages,\n resources: this.props.resources,\n isMultipleAddressShippingEnabled: config.multipleAddressShippingEnabled\n };\n\n const cartLineImages: React.ReactNode = ;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { featureState } = this.props.data;\n const isRetailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const errorMessage = this.state.errorMessage;\n\n const viewProps = {\n ...this.props,\n currentOperation: this.currentOperation,\n selectedAddress: this.selectedAddress,\n addUpdateAddress: this.addUpdateAddress,\n addressListSelectedAddress: this.addressListSelectedAddress,\n countryRegionId: this.countryRegionId,\n stateProvinceInfo: this.stateProvinceInfo,\n customerAddresses: this.customerAddresses,\n validationError: this.validationError,\n addressActionResponse: this.addressActionResponse,\n isUpdating: this.isUpdating,\n hasError: this.hasError,\n className: config.className,\n viewState: {\n isShowAddress: this.currentOperation === AddressOperation.Show && this.selectedAddress,\n isShowAddresList: this.currentOperation === AddressOperation.List && this.customerAddresses.length > 0,\n isShowAddOrUpdateAddress:\n this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update,\n isShowShipMultipleAddress: this.currentOperation === AddressOperation.Multiple\n },\n CheckoutShippingAddress: {\n moduleProps: this.props,\n className: classnames('ms-checkout-shipping-address', config.className)\n },\n showAddress: this._renderShowAddress(),\n alert: hasError && errorMessage && ,\n checkoutErrorRef: this.checkoutErrorRef,\n\n /**\n * Show address select.\n * @param onShipMultipleAddressesHandler - On ship to multiple addresses click function.\n * @param onAddAddressHandler - On add address click function.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders select address.\n */\n showAddressSelectHandler: (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ) => this._renderSelectAddress(onShipMultipleAddressesHandler, onAddAddressHandler, onSaveHandler, onCancelHandler),\n\n /**\n * Show ship multiple addresses.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders ship multiple addresses.\n */\n showShipMultipleAddressesHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderShipMultipleAddresses(onSaveHandler, onCancelHandler),\n showShipMultipleAddresses: this._renderShipMultipleAddresses(),\n\n /**\n * Show add/update address.\n * @param onSaveHandler - On save click function.\n * @param onCancelHandler - On cancel click function.\n * @returns - Renders add/update address.\n */\n showAddOrUpdateAddressHandler: (onSaveHandler?: () => void, onCancelHandler?: () => void) =>\n this._renderAddOrUpdateAddress(onSaveHandler, onCancelHandler),\n showAddOrUpdateAddress: this._renderAddOrUpdateAddress(),\n cartLineImages: isRetailMultiplePickUpOptionEnabled ? cartLineImages : undefined,\n showAddressSelect: this._renderSelectAddress()\n };\n\n return renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect = (line: IShipMultipleAddressesLineViewModel, isChecked: boolean): void => {\n line.isChecked = isChecked;\n\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n // @ts-ignore\n if (shippingLine.cartLine?.cartLine?.LineId === line.cartLine.LineId) {\n shippingLine.isChecked = isChecked;\n }\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are invalid.`);\n }\n };\n\n public onSelectAll(isChecked: boolean): void {\n if (this.state.selectedShippingLines) {\n const updated =\n this.state.selectedShippingLines.map(shippingLine => {\n shippingLine.isChecked = isChecked;\n return shippingLine;\n }) || [];\n\n this.setState({\n selectedShippingLines: updated\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n }\n\n public onShippingAddressChange = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n const updated = this.state.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n this.setState({\n shippingGroups: updated\n });\n }\n };\n\n public updateIndividualAddresses = (shippingLine: CartLine, event: React.ChangeEvent): void => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (this.state.shippingGroups) {\n this.setState(prevState => {\n const updated = prevState.shippingGroups.map(line => {\n if (line.cartLine.LineId === shippingLine.LineId) {\n const updatedCartLine = {\n ...line.cartLine,\n ShippingAddress: selectedAddress\n };\n return {\n ...line,\n cartLine: updatedCartLine\n };\n }\n return line;\n });\n\n return {\n shippingGroups: updated\n };\n });\n }\n };\n\n public onBulkShippingAddressChange = (event: React.ChangeEvent): void => {\n if (this.state.selectedShippingLines && this.state.shippingGroups) {\n this.state.selectedShippingLines.forEach((shippingLine, index) => {\n if (shippingLine.isChecked) {\n const cartline = this.state.shippingGroups.find(\n // @ts-ignore\n line => line.cartLine.LineId === shippingLine.cartLine?.cartLine?.LineId\n );\n\n if (cartline) {\n this.updateIndividualAddresses(cartline.cartLine, event);\n }\n }\n });\n } else {\n console.error(`Shipping lines are undefined.`);\n }\n };\n\n /**\n * Initialize pickup group.\n */\n @action\n private readonly _initPickupGroup = async (): Promise => {\n const pickupCartLines: CartLine[] = this._getCartLinesforDelivery();\n const cartLines: ICartLineWithProduct[] = [];\n\n try {\n const products = await this._getProductsByCartLines(\n this.props.data.checkout.result?.checkoutCart.cart.ChannelId || 0,\n pickupCartLines\n );\n for (const line of pickupCartLines) {\n const product: SimpleProduct | undefined = products.find(x => x.RecordId === line.ProductId);\n cartLines.push({ cartLine: line, product });\n }\n this.setState({ shippingGroups: cartLines });\n this.setState({ shippingGroupsBuffer: cartLines });\n\n const initialShippingLineSelection = cartLines.map(cartLine => ({\n isChecked: false,\n cartLine: cartLine as CartLine\n }));\n this.setState({ selectedShippingLines: initialShippingLineSelection });\n } catch (error) {\n // @ts-ignore\n this.props.telemetry.error(error);\n this.setState({ shippingGroups: [] });\n this.setState({ shippingGroupsBuffer: [] });\n this.setState({ selectedShippingLines: [] });\n }\n };\n\n /**\n * On suggestion selected.\n * @param result - Suggestion result interface.\n */\n @action\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n this._clearAddressFields();\n const address = this.addressFormat.getTranformedAddress(result, this.stateProvinceInfo);\n const timeout = 0;\n set(this.addUpdateAddress, { Street: '' });\n set(this.addUpdateAddress, { ZipCode: address.ZipCode });\n set(this.addUpdateAddress, { CountyName: address.CountyName });\n set(this.addUpdateAddress, { City: address.City });\n set(this.addUpdateAddress, { State: address.State });\n set(this.addUpdateAddress, { DistrictName: address.DistrictName });\n set(this.addUpdateAddress, { FullAddress: address.FullAddress });\n\n // Bing autosuggest put the complete address in the Street input box. Updating the street input box to show only street address.\n setTimeout(() => {\n set(this.addUpdateAddress, { Street: address.Street });\n }, timeout);\n };\n\n /**\n * Method to clear address fields.\n */\n @action\n private readonly _clearAddressFields = (): void => {\n const addressFormatItem = this.addressFormat.getAddressFormat(\n this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n );\n for (const formatAddress of addressFormatItem) {\n if (\n this.addUpdateAddress[formatAddress.name] !== undefined &&\n !this.autoSuggest?.excludedAddressFields.includes(formatAddress.name)\n ) {\n this.addressFormat[formatAddress.name] = '';\n }\n }\n this._clearValidation();\n };\n\n /**\n * Method to clear validation.\n */\n @action\n private readonly _clearValidation = (): void => {\n this.validationError = {};\n };\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n /**\n * Method data initialization.\n * @param props -The checkout address properties.\n */\n private readonly _dataInitialize = (props: ICheckoutAddressProps): void => {\n const { data } = props;\n\n reaction(\n () => data.countryRegions.result,\n () => {\n this.countryRegions = data.countryRegions.result ?? [];\n }\n );\n\n reaction(\n () => data.addressPurposes.result,\n () => {\n this.addressPurposes = data.addressPurposes.result ?? [];\n }\n );\n\n reaction(\n () => data.address.result,\n () => {\n this.customerAddresses = data.address.result ?? [];\n }\n );\n\n reaction(\n () => data.countryStates.result,\n () => {\n this.stateProvinceInfo = data.countryStates.result ?? [];\n }\n );\n\n reaction(\n () => data.featureState.result,\n () => {\n this.retailMultiplePickUpOptionEnabled = data.featureState.result?.find(\n feature => feature.Name === this.multiplePickupStoreSwitchName\n )?.IsEnabled;\n }\n );\n };\n\n /**\n * Method to get cart lines for delivery.\n * @returns The cart line collection.\n */\n private readonly _getCartLinesforDelivery = (): CartLine[] => {\n return this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(line => this._isDelivery(line)) ?? [];\n };\n\n /**\n * Method to check cart line for delivery.\n * @param line -The cart line.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isDelivery = (line: CartLine): boolean => {\n return this._isNotPickupMode(line.DeliveryMode) && (line.FulfillmentStoreId === undefined || line.FulfillmentStoreId === '');\n };\n\n /**\n * Method to check cart line for delivery.\n * @param deliveryMode -The delivery mode.\n * @returns True/false as per cart line delivery mode.\n */\n private readonly _isNotPickupMode = (deliveryMode: string | undefined): boolean => {\n const pickupDeliveryModeCode = this.props.context.request.channel?.PickupDeliveryModeCode;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = this.props.data;\n const retailMultiplePickUpOptionEnabled = featureState.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled && deliveryMode !== undefined) {\n const pickupDeliveryMode = channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.some(\n pickupMode => pickupMode !== deliveryMode\n );\n return pickupDeliveryMode !== undefined ? pickupDeliveryMode : false;\n }\n return deliveryMode !== undefined && pickupDeliveryModeCode !== undefined && deliveryMode !== pickupDeliveryModeCode;\n };\n\n /**\n * Method to check cart line for delivery.\n * @param channelId - The channelId.\n * @param cartLines - Cart line collections.\n * @returns Collection of SimpleProduct.\n */\n private readonly _getProductsByCartLines = async (channelId: number, cartLines: CartLine[]): Promise => {\n const actionContext = this.props.context.actionContext;\n const productInputs = cartLines\n .filter(line => !ObjectExtensions.isNullOrUndefined(line.ProductId))\n .map(\n line =>\n new ProductInput(\n line.ProductId || 0,\n actionContext.requestContext.apiSettings,\n channelId,\n undefined,\n actionContext.requestContext,\n line.CatalogId || 0\n )\n );\n return getSimpleProducts(productInputs, actionContext);\n };\n\n /**\n * Method to render ship multiple addresses.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n */\n private readonly _renderShipMultipleAddresses = (onSaveHandler?: () => void, onCancelHandler?: () => void) => {\n const { config, context } = this.props;\n const { imageSettings } = config;\n\n // Line images\n const cartlineImages: ICheckoutShippingCartLineInfo[] = this.state.shippingGroups\n .filter(x => !ObjectExtensions.isNullOrUndefined(x.product))\n .map(line => ({\n lineId: line.cartLine.LineId ?? '',\n imageProps: {\n requestContext: context.actionContext.requestContext,\n className: 'ms-checkout-shipping-address__group-images-lines-line-image',\n altText: line.product?.Name,\n src: line.product?.PrimaryImageUrl ?? '',\n fallBackSrc: getFallbackImageUrl(\n line.product?.ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n ),\n gridSettings: context.request.gridSettings!,\n imageSettings: imageSettings ?? defaultImageSettings,\n loadFailureBehavior: 'empty'\n },\n quantity: line.cartLine.Quantity ?? 0\n }));\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n\n return AddressShipMultiple({\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler,\n\n onSelect: this.onSelect.bind(this),\n\n onSelectAll: this.onSelectAll.bind(this),\n\n onClear: () => {\n this.onSelectAll(false);\n },\n\n onShippingAddressChange: this.onShippingAddressChange.bind(this),\n\n onBulkShippingAddressChange: this.onBulkShippingAddressChange.bind(this),\n\n /**\n * On Ship to Single Address Function.\n */\n onShipSingleAddress: () => {\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n },\n\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n shippingLines: this.state.shippingGroups,\n\n shippingLineImages: cartlineImages,\n\n selectedShippingLines: this.state.selectedShippingLines ? this.state.selectedShippingLines : [],\n\n customerAddresses: this.customerAddresses,\n\n context: this.props.context,\n\n currencyCode: this.currencyCode,\n\n moduleId: this.props.id,\n\n moduleTypeName: this.props.typeName,\n\n resources: this.resources,\n\n telemetryContent: this.telemetryContent,\n\n isMobile: this.isMobile\n });\n };\n\n /**\n * Method to render add/update address.\n * @param onSaveHandler -- Handles onsave functionality.\n * @param onCancelHandler -- Handles oncancel functionality.\n * @returns Address app/update props.\n */\n private readonly _renderAddOrUpdateAddress = (onSaveHandler?: () => void, onCancelHandler?: () => void): IAddressAddUpdateProps => {\n const addressFormat =\n this.currentOperation === AddressOperation.Add && this.addressCommon.isAuthenticatedFlow()\n ? this.addressFormat\n : this.addressFormat;\n\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressAddUpdate({\n isUpdating: this.isUpdating,\n resources: this.resources,\n addressType: AddressType.Shipping,\n addressFormat: addressFormat.getAddressFormat(this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId),\n defaultCountryRegionId: this.countryRegionId,\n defaultAddressType: this.defaultAddressType,\n selectedAddress: this.addUpdateAddress,\n validationError: this.validationError,\n hasError: this.hasError,\n addressActionResponse: this.addressActionResponse,\n telemetryContent: this.telemetryContent,\n dropdownDisplayData: addressFormat.getPrefilledAddressDropdownData(\n this.resources.addressStateDefaultSelectionText,\n this.stateProvinceInfo\n ),\n onInputChange: this._onAddressAddUpdateInputChange,\n onDropdownChange: this._onAddressAddUpdateDropdownChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this.onSubmit();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress && !this.addressCommon.isAuthenticatedFlow() ? () => {} : onCancelButtonHandler\n });\n };\n\n /**\n * Method to render select address.\n * @param onShipMultipleAddressesHandler - To handle ship to multiple addresses button click.\n * @param onAddAddressHandler - To handle add address button click.\n * @param onSaveHandler - To handle save button click.\n * @param onCancelHandler - To handle cancel button click.\n * @returns Select address props.\n */\n private readonly _renderSelectAddress = (\n onShipMultipleAddressesHandler?: () => void,\n onAddAddressHandler?: () => void,\n onSaveHandler?: () => void,\n onCancelHandler?: () => void\n ): IAddressSelectProps => {\n /**\n * On Cancel Button Function.\n */\n const onCancelButtonHandler = () => {\n this._resetView();\n onCancelHandler?.();\n };\n return AddressSelect({\n addressFormat: this.addressFormat,\n addresses: this.customerAddresses,\n resources: this.resources,\n addressPurposes: this.addressPurposes,\n selectedAddress: this.addressListSelectedAddress,\n onAddressOptionChange: this._onAddressOptionChange,\n hasExternalSubmitGroup: this.props.moduleState.hasExternalSubmitGroup,\n telemetryContent: this.telemetryContent,\n\n /**\n * On Ship to Multiple Addresses Function.\n */\n onShipMultipleAddresses: () => {\n this._goToShipMultipleAddresses();\n onShipMultipleAddressesHandler?.();\n },\n\n /**\n * On Add Address Function.\n */\n onAddAddress: () => {\n this._goToAddAddress();\n onAddAddressHandler?.();\n },\n\n /**\n * On Save Function.\n */\n onSave: () => {\n this._onSelectAddress();\n onSaveHandler?.();\n },\n\n onCancel: !this.selectedAddress ? () => {} : onCancelButtonHandler,\n\n multipleAddressShippingEnabled: this.props.config.multipleAddressShippingEnabled\n });\n };\n\n /**\n * Method to render show address.\n * @returns Show address props.\n */\n private _renderShowAddress(): IAddressShowProps | null {\n if (this.selectedAddress) {\n return AddressShow({\n address: this.selectedAddress,\n addressFormat: this.addressFormat.getAddressFormat(this.selectedAddress.ThreeLetterISORegionName || ''),\n addressPurposes: this.addressPurposes\n });\n }\n\n return null;\n }\n\n /**\n * Method to render map auto suggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded) {\n this.autoSuggest?.attachAutoSuggest('#shipping_addressstreet', '#shipping_addressstreet_container', this._onSuggestionSelected);\n }\n };\n\n /**\n * Method gets called on address option change.\n * @param event - To get current option.\n */\n private readonly _onAddressOptionChange = (event: React.ChangeEvent) => {\n const addressRecordId = event.currentTarget.value;\n const selectedAddress = this.customerAddresses.find(address => (address.RecordId || '').toString() === addressRecordId);\n if (selectedAddress) {\n this.addressListSelectedAddress = selectedAddress;\n }\n };\n\n /**\n * Method to render map auto suggest.\n * @param name - Address name field.\n * @param value - Address name value field.\n */\n private readonly onAddressAddUpdate = (name: string, value: string | boolean) => {\n set(this.addUpdateAddress, { [name]: value });\n this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId, name);\n };\n\n /**\n * Method to get called on address update change.\n * @param event - Input element.\n */\n private readonly _onAddressAddUpdateInputChange = (event: React.ChangeEvent): void => {\n if (event.target.type === 'checkbox') {\n this.onAddressAddUpdate(event.target.name, event.target.checked);\n } else {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n this.onAddressAddUpdate(event.target.name, value);\n }\n };\n\n /**\n * Method to get called on address update dropdown change.\n * @param event - Select element.\n */\n private readonly _onAddressAddUpdateDropdownChange = (event: React.ChangeEvent): void => {\n this.onAddressAddUpdate(event.target.name, event.target.value);\n\n if (event.target.name === AddressItemType[AddressItemType.ThreeLetterISORegionName]) {\n this._onCountryChange(event.target.value);\n }\n };\n\n /**\n * Method to get called on address update submit.\n */\n private readonly _onAddressAddUpdateSubmit = (): void => {\n if (!this.addressFormat.validateAddressFormat(this.addUpdateAddress, this.validationError, this.countryRegionId)) {\n return;\n }\n\n let response: Promise;\n if (this.addressCommon.isAuthenticatedFlow() && this._isNewAddress(this.addUpdateAddress)) {\n response =\n this.currentOperation === AddressOperation.Update\n ? this.addressCommon.updateCustomerAddress(this.addUpdateAddress)\n : this.addressCommon.addCustomerAddress(this.addUpdateAddress);\n } else {\n response = Promise.resolve({ address: this.addUpdateAddress });\n }\n\n this.isUpdating = true;\n this._updateModuleState();\n\n response.then(\n (result: IAddressResponse) => {\n this.isUpdating = false;\n\n if (result.address) {\n this.hasError = false;\n this._clearError();\n if (result.customerAddresses) {\n this._onAddOrUpdateSuccess({ customerAddresses: result.customerAddresses, address: result.address });\n } else {\n this._onAddOrUpdateSuccess({ address: result.address });\n }\n } else {\n this.hasError = true;\n this.addressActionResponse = result;\n this._updateModuleState();\n }\n },\n () => {\n this.hasError = true;\n this.isUpdating = false;\n this._updateModuleState();\n }\n );\n };\n\n /**\n * Method to get called on country change.\n * @param countryRegionId - Country region id.\n */\n private readonly _onCountryChange = (countryRegionId: string) => {\n this.countryRegionId = countryRegionId;\n const twoLetterIsoRegionName = this.addressFormat.getTwoLetterISORegionName(countryRegionId);\n set(this.addUpdateAddress, { ThreeLetterISORegionName: countryRegionId });\n set(this.addUpdateAddress, { TwoLetterISORegionName: twoLetterIsoRegionName });\n this.autoSuggest?.changeAutoSuggestionCountryCode(twoLetterIsoRegionName);\n this._clearAddressFields();\n };\n\n /**\n * Method to get all address format exclude list.\n * @returns Collection of address items.\n */\n private readonly _getAddressFormatExcludeList = (): AddressItemType[] => {\n const { config } = this.props;\n const addressFormatExcludeList: AddressItemType[] = [];\n\n if (!config.showAddressType) {\n addressFormatExcludeList.push(AddressItemType.AddressTypeValue);\n }\n\n addressFormatExcludeList.push(AddressItemType.IsPrimary);\n\n return addressFormatExcludeList;\n };\n\n /**\n * Method to get all state/provinces.\n */\n private readonly _getStateProvinces = (): void => {\n if (\n !this.countryRegionId ||\n !(this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update)\n ) {\n return;\n }\n\n this.addressCommon.getStateProvinces(this.countryRegionId).then((result: StateProvinceInfo[]) => {\n const stateInfo = result.some(state => state.StateId === this.addUpdateAddress.State);\n\n // Reset state if selected state not found in the list.\n if (!stateInfo) {\n set(this.addUpdateAddress, { State: '' });\n }\n\n this.stateProvinceInfo = result;\n });\n };\n\n /**\n * Method to set default country region id.\n */\n private _setDefaultCountryRegionId(): void {\n const { request } = this.props.context;\n const market = request.channel?.ChannelCountryRegionISOCode;\n this.countryRegionId = this.addressCommon.getDefaultCountryRegionId(this.countryRegionId, this.countryRegions, market);\n }\n\n /**\n * Method to get default address region id.\n * @returns - Address object from existing addresses.\n */\n private readonly _getDefaultAddress = (): Address | undefined => {\n if (this.customerAddresses) {\n const primaryAddress = this.customerAddresses.find((address: Address) => address.IsPrimary);\n return primaryAddress || (this.customerAddresses.length > 0 ? this.customerAddresses[0] : undefined);\n }\n return undefined;\n };\n\n /**\n * Method to get address from express payment details from cart page.\n * @returns - Address.\n */\n private readonly _getAddressFromCartExpressPaymentDetails = (): Address | undefined => {\n if (this.expressPaymentDetailsFromCartPage) {\n const { tokenizedPaymentCard, address, isExpressAddressAppliedInCartPage } = this.expressPaymentDetailsFromCartPage;\n\n let addressFromCartExpress: Address | undefined;\n\n if (isExpressAddressAppliedInCartPage) {\n addressFromCartExpress = address ? this.getExpressAddress(address) : undefined;\n } else {\n addressFromCartExpress = tokenizedPaymentCard ? this.getAddressFromTokenizedPaymentCard(tokenizedPaymentCard) : undefined;\n }\n\n return addressFromCartExpress;\n }\n return undefined;\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const twoLetterIsoRegionName = tokenizedPaymentCard.Country;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n TwoLetterISORegionName: twoLetterIsoRegionName,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get address from expressAddress.\n * @param expressAddress -- The expressAddress.\n * @returns The address.\n */\n private readonly getExpressAddress = (expressAddress: Address): Address => {\n const twoLetterIsoRegionName = expressAddress.TwoLetterISORegionName;\n\n const threeLetterIsoRegionName = twoLetterIsoRegionName ? this.getThreeLetterIsoRegionName(twoLetterIsoRegionName) : undefined;\n\n if (threeLetterIsoRegionName && threeLetterIsoRegionName !== this.countryRegionId) {\n this._onCountryChange(threeLetterIsoRegionName);\n }\n\n const address: Address = {\n ...expressAddress,\n ThreeLetterISORegionName: threeLetterIsoRegionName,\n AddressTypeValue: this.defaultAddressType\n };\n\n return address;\n };\n\n /**\n * Get three letter ISO region name from two letter ISO region name.\n * @param twoLetterIsoRegionName -- The three letter ISO region name.\n * @returns The three letter ISO region name.\n */\n private readonly getThreeLetterIsoRegionName = (twoLetterIsoRegionName: string): string | undefined => {\n const countryRegion = this.countryRegions.find(country => {\n return country.ISOCode?.toLowerCase() === twoLetterIsoRegionName.toLowerCase();\n });\n\n return countryRegion?.CountryRegionId;\n };\n\n /**\n * Method to initialize all module state.\n */\n private readonly _initModuleState = (): void => {\n this.props.moduleState.init({\n status: this._canShip() ? 'updating' : 'disabled',\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit\n });\n\n const checkoutState = this.props.data.checkout.result;\n\n if (this._canShip()) {\n let defaultAddress;\n const shippingCartLines: CartLine[] = this._getCartLinesforDelivery();\n\n if (checkoutState?.checkoutCart.cart.ShippingAddress) {\n defaultAddress = checkoutState.checkoutCart.cart.ShippingAddress;\n } else if (\n ArrayExtensions.hasElements(shippingCartLines) &&\n shippingCartLines[0].ShippingAddress !== undefined &&\n shippingCartLines[0].ShippingAddress.FullAddress !== ''\n ) {\n defaultAddress = shippingCartLines[0].ShippingAddress;\n } else if (this._getAddressFromCartExpressPaymentDetails()) {\n defaultAddress = this._getAddressFromCartExpressPaymentDetails();\n } else if (this._getDefaultAddress()) {\n defaultAddress = this._getDefaultAddress();\n } else {\n defaultAddress = checkoutState?.isExpressCheckoutApplied ? checkoutState.shippingAddressFromExpressCheckout : undefined;\n }\n\n if (defaultAddress && !this.addressCommon.isEmpty(defaultAddress)) {\n this._updateCurrentOperation(AddressOperation.Show, defaultAddress);\n this._setShippingAddress(defaultAddress);\n this._updateModuleState();\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: true });\n } else {\n this._updateCurrentOperation(AddressOperation.Add);\n checkoutState?.updateHasShippingAddress({ newHasShippingAddress: false });\n }\n }\n };\n\n /**\n * Method get called on submit address.\n */\n private readonly onSubmit = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address submit for Add or Update operation.');\n this._onAddressAddUpdateSubmit();\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address submit for List operation.');\n this._onSelectAddress();\n break;\n case AddressOperation.Multiple:\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._onSelectAddress();\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({ selectedShippingLines: resetSelectedShippingLines });\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on cancel.\n */\n private readonly onCancel = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this.props.telemetry.information('Shipping address cancel for Add or Update operation.');\n this._clearAddressFields();\n if (!(!this.selectedAddress && !this.addressCommon.isAuthenticatedFlow())) {\n this._resetView();\n }\n\n break;\n case AddressOperation.List:\n this.props.telemetry.information('Shipping address cancel for List operation.');\n if (this.selectedAddress) {\n this._resetView();\n }\n break;\n case AddressOperation.Multiple:\n this.props.telemetry.information('Shipping address cancel for Multiple operation.');\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n this._updateModuleState();\n break;\n default:\n this.props.telemetry.error('Invalid operation');\n }\n };\n\n /**\n * Method get called on edit address.\n */\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Shipping address onEdit is called.');\n\n if (this.addressCommon.isAuthenticatedFlow() && this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.List, this.shippingAddress);\n } else if (this.shippingAddress) {\n this._updateCurrentOperation(AddressOperation.Update, this.shippingAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method to check if checkout cartlines are available fro shipping.\n * @returns - True/false as per the delivery mode.\n */\n private readonly _canShip = (): boolean => {\n const { checkout, channelDeliveryOptionConfig } = this.props.data;\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n if (!checkout.result || !request.channel || checkout.result.checkoutCart.isEmpty || checkout.result.checkoutCart.hasInvoiceLine) {\n return false;\n }\n\n // @ts-expect-error: Type-checker not realizing above request.channel check\n return this.retailMultiplePickUpOptionEnabled\n ? checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n channelDeliveryOptionConfig.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : checkout.result.checkoutCart.cart.CartLines?.some(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n /**\n * Method get called on select address.\n */\n private readonly _onSelectAddress = () => {\n this._updateCurrentOperation(AddressOperation.Show, this.addressListSelectedAddress);\n if (this.props.config.multipleAddressShippingEnabled) {\n this._setCartLinesShippingAddress(this.addressListSelectedAddress);\n } else {\n this._setShippingAddress(this.addressListSelectedAddress);\n }\n\n this._updateModuleState();\n };\n\n /**\n * Method get called on ship to multiple addresses.\n */\n private readonly _goToShipMultipleAddresses = () => {\n this._setDefaultCountryRegionId();\n this.setState({ shippingGroupsBuffer: this.state.shippingGroups });\n this._updateCurrentOperation(AddressOperation.Multiple);\n };\n\n /**\n * Method get called on goto add address.\n */\n private readonly _goToAddAddress = () => {\n this._setDefaultCountryRegionId();\n this._updateCurrentOperation(AddressOperation.Add);\n };\n\n /**\n * Method get called on add/update success.\n * @param response - Retail api response.\n */\n private readonly _onAddOrUpdateSuccess = (response: IAddressResponse) => {\n if (response.customerAddresses) {\n this.customerAddresses = response.customerAddresses;\n }\n\n if (response.address) {\n this._updateCurrentOperation(AddressOperation.Show, response.address);\n this._setShippingAddress(response.address);\n this._updateModuleState();\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newShippingAddress = { ...address };\n\n if (address.ThreeLetterISORegionName && !newShippingAddress.TwoLetterISORegionName) {\n newShippingAddress.TwoLetterISORegionName = this.addressFormat.getTwoLetterISORegionName(address.ThreeLetterISORegionName);\n }\n\n this.props.data.checkout.result.updateShippingAddress({ newShippingAddress });\n this.props.data.checkout.result.checkoutCart.updateShippingAddress({ newShippingAddress }).catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n /**\n * Method get called on set Shipping Address.\n * @param address - Retail Api address result.\n */\n private readonly _setCartLinesShippingAddress = (address: Address): void => {\n if (this.props.data.checkout.result) {\n const newCartLinesWithShippingAddress = this.state.shippingGroups.map(shippingGroup => shippingGroup.cartLine);\n this.props.data.checkout.result.updateCartLinesShippingAddress({ newCartLinesWithShippingAddress });\n this.props.data.checkout.result.checkoutCart\n .updateCartLineShippingAddress({ updatedCartLinesObject: newCartLinesWithShippingAddress })\n .catch(error => {\n this.props.telemetry.error(error);\n });\n }\n };\n\n @computed private get shippingAddress(): Address | undefined {\n return this.props.data.checkout.result?.shippingAddress;\n }\n\n @computed get currencyCode(): string | undefined {\n return get(this.props, 'context.request.channel.Currency');\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 * Method get called on reset view.\n */\n private readonly _resetView = (): void => {\n switch (this.currentOperation) {\n case AddressOperation.Add:\n case AddressOperation.Update:\n this._updateCurrentOperation(\n this.addressCommon.isAuthenticatedFlow() ? AddressOperation.List : AddressOperation.Show,\n this.shippingAddress\n );\n break;\n case AddressOperation.Multiple:\n const resetSelectedShippingLines = this.state.selectedShippingLines\n ? this.state.selectedShippingLines.map(shippingLine => ({\n isChecked: false,\n cartLine: shippingLine.cartLine\n }))\n : [];\n this.setState({\n selectedShippingLines: resetSelectedShippingLines,\n shippingGroups: this.state.shippingGroupsBuffer\n });\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n break;\n default:\n this._updateCurrentOperation(AddressOperation.Show, this.shippingAddress);\n }\n this._updateModuleState();\n };\n\n /**\n * Update current operation.\n * @param operation - The address operation.\n * @param selectedAddress - The selected address.\n */\n private readonly _updateCurrentOperation = (operation: AddressOperation, selectedAddress?: Address) => {\n this.currentOperation = operation;\n this.selectedAddress = selectedAddress;\n\n if (this.currentOperation === AddressOperation.Add || this.currentOperation === AddressOperation.Update) {\n this.addUpdateAddress = { ...this.selectedAddress } || {};\n set(this.addUpdateAddress, {\n ThreeLetterISORegionName: this.addUpdateAddress.ThreeLetterISORegionName || this.countryRegionId\n });\n set(this.addUpdateAddress, {\n AddressTypeValue: this.addUpdateAddress.AddressTypeValue || this.defaultAddressType\n });\n } else if (this.currentOperation === AddressOperation.List) {\n this.addressListSelectedAddress = { ...this.selectedAddress } || {};\n }\n };\n\n /**\n * Update module state.\n */\n private readonly _updateModuleState = () => {\n if (this.currentOperation === AddressOperation.Show) {\n this.props.moduleState.onReady();\n } else if (this.isUpdating) {\n this.props.moduleState.onPending();\n } else {\n this.props.moduleState.onUpdating();\n }\n };\n\n /**\n * Method to check if the customer already has the address.\n * @param address - The address.\n */\n private readonly _isNewAddress = (address: Address): boolean => {\n for (const existingAddress of this.customerAddresses) {\n if (\n (address.Name ?? '') === existingAddress.Name &&\n (address.Street ?? '') === existingAddress.Street &&\n (address.StreetNumber ?? '') === existingAddress.StreetNumber &&\n (address.City ?? '') === existingAddress.City &&\n (address.State ?? '') === existingAddress.State &&\n (address.ZipCode ?? '') === existingAddress.ZipCode &&\n (address.Phone ?? '') === existingAddress.Phone &&\n (address.ThreeLetterISORegionName ?? '') === existingAddress.ThreeLetterISORegionName &&\n (address.AddressTypeValue ?? '') === existingAddress.AddressTypeValue\n ) {\n return false;\n }\n }\n\n return true;\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n private readonly _clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n /**\n * Returns count of products.\n * @param cartLine - The checkout shipping cart line info props.\n * @returns Number of products.\n */\n private readonly _countItems = (cartlines: ICheckoutShippingCartLineInfo[]): number => {\n return cartlines.reduce((count, line) => {\n return count + (line.quantity || 0);\n }, 0);\n };\n}\n\nexport default CheckoutShippingAddress;\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 React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressSelectItem, IAddressSelectProps } from '../../common/components/address-select';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutShippingAddressViewProps } from './checkout-shipping-address';\nimport { IShipMultipleAddressesViewProps } from '../../common/components/address-ship-multiple';\nimport { IShipMultipleAddressesLineViewProps } from '../../common/components/address-ship-multiple-lines';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Select Component.\n * @param param0 - Root param.\n * @param param0.SelectAddress - Select address.\n * @param param0.shipMultipleAddressesButton - Ship to multiple addresses button.\n * @param param0.addButton - Add button.\n * @param param0.items - IAddressSelectItem[].\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - SelectAddress Node.\n */\nconst AddressSelect: React.FC = ({\n SelectAddress,\n shipMultipleAddressesButton,\n addButton,\n items,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n \n {addButton}\n {shipMultipleAddressesButton}\n \n {items.map((item: IAddressSelectItem) => {\n const SelectItem = item.SelectItem;\n return (\n \n {item.input}\n \n \n );\n })}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Address Ship Multiple Component.\n * @param param0 - Root param.\n * @param param0.ShipMultipleAddress - Ship multiple address form.\n * @param param0.shipSingleAddressButton - Ship single address button.\n * @param param0.clearSelectionButton - Clear selection button.\n * @param param0.addressDropdown - Address dropdown button.\n * @param param0.ProductsTable - Products table component.\n * @param param0.ProductsTableHeading - Products table heading component.\n * @param param0.ProductsTableRow - Products table row component.\n * @param param0.shipMultipleAddressLines - Ship multiple address lines.\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @returns Address ship multiple component node.\n */\nconst AddressShipMultiple: React.FC = ({\n ShipMultipleAddress,\n shipSingleAddressButton,\n clearSelectionButton,\n addressDropdown,\n ProductsTable,\n ProductsTableHeading,\n ProductsTableRow,\n shipMultipleAddressLines,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton,\n isMobile\n}) => {\n if (ShipMultipleAddress && isMobile !== undefined) {\n if (!isMobile) {\n return (\n \n {shipSingleAddressButton}\n \n {clearSelectionButton}\n\n {addressDropdown}\n \n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n } else {\n return (\n \n {shipSingleAddressButton}\n {addressDropdown}\n {ProductsTable && shipMultipleAddressLines && shipMultipleAddressLines.length > 0 && (\n \n {ProductsTableHeading}\n \n {shipMultipleAddressLines &&\n shipMultipleAddressLines.map((line: IShipMultipleAddressesLineViewProps) => {\n return _renderShipMultipleAddressLine(line, isMobile, ProductsTableRow);\n })}\n \n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n }\n } else {\n return null;\n }\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - Error message.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns Address add update component node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\nconst _renderShipMultipleAddressLine = (\n shipMultipleAddressesLine: IShipMultipleAddressesLineViewProps,\n isMobile: boolean,\n ProductsTableRow?: INodeProps\n): JSX.Element | null => {\n if (!shipMultipleAddressesLine) {\n return null;\n }\n\n const {\n selectLine,\n productImage,\n productNumber,\n productInfo,\n productPrice,\n productQuantity,\n productAddress\n } = shipMultipleAddressesLine;\n\n if (!isMobile) {\n return (\n \n {selectLine}\n \n
    {productImage}
    \n
    {productNumber}
    \n \n {productInfo}\n {productPrice}\n {productQuantity}\n {productAddress}\n
    \n );\n } else {\n return (\n \n \n {selectLine}\n \n {productImage}\n {productInfo}\n {`QTY: ${productQuantity}`}\n \n {productPrice}\n \n \n {productAddress}\n \n \n );\n }\n};\n\n/**\n * Checkout Shipping Address View Component.\n * @param props - Props.\n * @returns - CheckoutShippingAddress Module.\n */\nconst CheckoutShippingAddressView: React.FC = props => {\n const {\n CheckoutShippingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n showAddress,\n showAddressSelect,\n showAddOrUpdateAddress,\n showShipMultipleAddresses,\n cartLineImages\n } = props;\n\n return (\n \n {alert}\n {!viewState.isShowShipMultipleAddress && cartLineImages}\n {viewState.isShowAddress && }\n {viewState.isShowAddresList && }\n {viewState.isShowAddOrUpdateAddress && }\n {viewState.isShowShipMultipleAddress && (\n \n )}\n \n );\n};\n\nexport default CheckoutShippingAddressView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\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 { Button, Collapse, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IQuickOrderDrawerProps } from './quick-order-drawer-props';\n\nexport interface IQuickOrderDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Quick Order Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class QuickOrderDrawer extends React.Component {\n public state: IQuickOrderDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IQuickOrderDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n this.props.openGlyph ? this.props.openGlyph : this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass, this.props.openGlyph ? this.props.openGlyph : '');\n this.drawerCloseGlyph = classnames(this.drawerGlyphClass, this.props.closeGlyph ? this.props.closeGlyph : '');\n }\n }\n\n public shouldComponentUpdate(nextProps: IQuickOrderDrawerProps, nextState: IQuickOrderDrawerState): 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 collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n // eslint-disable-next-line react/no-direct-mutation-state\n this.state.isOpen = collapseProps.isOpen;\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className ? this.props.className : '');\n this.isManuallyToggled = false;\n return (\n
    \n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
    \n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames(\n 'drawer__buttontext',\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : ''\n );\n return (\n <>\n

    {this.props.moduleHeadingText}

    \n \n {this.props.moduleDescriptionText}\n \n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return ;\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.setState({ isOpen: !this.state.isOpen });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\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 { Alert, Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderState } from '../quick-order';\n\nexport interface IQuickOrderFormProps {\n disableAddtoCart: boolean | undefined;\n productTextInput: React.RefObject;\n quantityTextInput: React.RefObject;\n maxChars: number;\n maxQuantity?: number;\n ariaLabelQuantity: string;\n ariaLabelProduct: string;\n ariaLabelAddtoCart: string;\n addQuantityPlaceholderText: string;\n quickOrderState: IQuickOrderState;\n handleInputChange(query: string): void;\n handleQuantityChange(query: string): void;\n handleAddToCartClick(): Promise;\n}\n\nexport interface IQuickOrderFormViewProps {\n product: React.ReactNode;\n quantity: React.ReactNode;\n addToCartBtn: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\n/**\n * On Input Change functionality.\n * @param handleInputChange -Input change function.\n * @returns Input change value.\n */\nconst onInputChangeFunction = (handleInputChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleInputChange(event.target.value || '');\n};\n\n/**\n * On Quantity Change functionality.\n * @param handleQuantityChange -Quantity change function.\n * @returns Quantity change value.\n */\nconst onQuantityChangeFunction = (handleQuantityChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleQuantityChange(event.target.value || '');\n};\n\nexport const QuickOrderFormComponent = (props: IQuickOrderFormProps): IQuickOrderFormViewProps => {\n const {\n productTextInput,\n quantityTextInput,\n quickOrderState,\n maxChars,\n maxQuantity,\n disableAddtoCart,\n ariaLabelQuantity,\n ariaLabelProduct,\n ariaLabelAddtoCart,\n addQuantityPlaceholderText,\n handleQuantityChange,\n handleInputChange,\n handleAddToCartClick\n } = props;\n\n const onInputChange = onInputChangeFunction(handleInputChange);\n\n const onQuantityInputChange = onQuantityChangeFunction(handleQuantityChange);\n\n const productNode = (\n
    \n

    \n {ariaLabelProduct}\n

    \n \n
    \n );\n\n const quantityNode = (\n
    \n

    \n {ariaLabelQuantity}\n

    \n \n
    \n );\n\n const addtoCartNode = (\n
    \n \n {ariaLabelAddtoCart}\n \n
    \n );\n\n const userMessageNode =\n quickOrderState && quickOrderState.stateMessage ? (\n \n \n {quickOrderState.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return {\n product: productNode,\n addToCartBtn: addtoCartNode,\n quantity: quantityNode,\n userMessage: userMessageNode\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { observable } from 'mobx';\n\n/**\n * Represents a product for quick order.\n */\nexport class QuickOrderProduct {\n @observable\n public isSelected: boolean;\n\n public readonly cartLine: CartLine;\n\n public readonly simpleProduct: SimpleProduct;\n\n public constructor(cartLine: CartLine, simpleProduct: SimpleProduct) {\n this.cartLine = cartLine;\n this.simpleProduct = simpleProduct;\n this.isSelected = 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 { IComponent, IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Interface for quick order table header resources.\n */\nexport interface IQuickOrderTableHeaderResources {\n quickOrderProductNumberText: string;\n quickOrderProductText: string;\n quickOrderUnitPriceText: string;\n quickOrderUnitOfMeasureText: string;\n quickOrderQuantityText: string;\n quickOrderTotalText: string;\n quickOrderActionsText: string;\n}\n\n/**\n * Interface for quick order table props.\n */\nexport interface IQuickOrderTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isMobile: boolean;\n resources: IQuickOrderTableHeaderResources;\n}\n\n/**\n * Interface for quick order table header component.\n */\nexport interface IQuickOrderTableHeaderComponent extends IComponent {}\n\n/**\n * Get the quick order header cells for desktop.\n * @param props -- The quick order table header props.\n * @returns The list of cells for quick order header component in desktop version.\n */\nconst QuickOrderDesktopHeaderCellsComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const { resources } = props;\n const columnWithNumberClassName = `${props.className}__row__column-with-number`;\n return (\n <>\n \n \n \n {resources.quickOrderProductNumberText}\n {resources.quickOrderProductText}\n {resources.quickOrderUnitPriceText}\n {resources.quickOrderUnitOfMeasureText}\n {resources.quickOrderQuantityText}\n {resources.quickOrderTotalText}\n {resources.quickOrderActionsText}\n \n );\n};\n\n/**\n * Get the quick order header cells for mobile.\n * @param props -- The quick order table header props.\n * @returns The quick order header component in desktop version.\n */\nconst QuickOrderMobileHeaderCellsComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const { resources } = props;\n return (\n <>\n \n {resources.quickOrderProductNumberText}\n \n \n );\n};\n\n/**\n * Quick order table header component.\n * @param props - Configuration of the component.\n * @returns React node with the header.\n */\nexport const QuickOrderTableHeaderComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const rowClassName = `${props.className}__row`;\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\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 { IComponentProps, ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { CartLine, format, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IncrementalQuantity } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Data required to render each quick order row.\n */\nexport interface IQuickOrderTableRowData {\n cartLine: CartLine;\n product: SimpleProduct;\n}\n\n/**\n * Resources for quick order table rows.\n */\nexport interface IQuickOrderTableRowResources {\n quickOrderQuantityMobileText: string;\n quickOrderProductDimensionsSeparator: string;\n quickOrderViewDetailsButtonText: string;\n quickOrderViewDetailsButtonAriaLabel: string;\n quickOrderRemoveItemButtonAriaLabel: string;\n quickOrderInputQuantityAriaLabel: string;\n quickOrderDecrementButtonAriaLabel: string;\n quickOrderIncrementButtonAriaLabel: string;\n}\n\n/**\n * Interface for quick order table props.\n */\nexport interface IQuickOrderTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n imageSettings?: IImageSettings;\n isMobile: boolean;\n resources: IQuickOrderTableRowResources;\n}\n\n/**\n * The default image settings for quick order table row.\n */\nconst defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=80&m=6', w: 0, h: 0 },\n lg: { q: 'w=147&h=147&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Renders product image for quick order row.\n * @param props - Quick order table row props.\n * @returns React element.\n */\nconst QuickOrderTableRowProductImageComponent: React.FC = (props: IQuickOrderTableRowProps) => {\n const fallbackImageUrl = getFallbackImageUrl(\n props.data.product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n\n const containerClassName = `${props.className}__product-image-container`;\n\n return (\n
    \n \n
    \n );\n};\n\n/**\n * Renders actions popup for the mobile view.\n * @param props - Configuration for popup.\n * @returns A react node with actions..\n */\nconst QuickOrderExtraActionsPopupComponent: React.FC = (props: IQuickOrderTableRowProps): JSX.Element | null => {\n const product: SimpleProduct = props.data.product;\n\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 if (StringExtensions.isNullOrWhitespace(productUrl)) {\n return null;\n }\n\n const className = `${props.className}__extra-actions-cell`;\n\n return (\n
    \n
    \n );\n};\n\n/**\n * Renders quick order table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order rows for desktop view.\n */\nexport const QuickOrderDesktopTableRowCellComponent: React.FC = (props: IQuickOrderTableRowProps) => {\n const product: SimpleProduct = props.data.product;\n const cartLine: CartLine = props.data.cartLine;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n\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.quickOrderProductDimensionsSeparator)}\n \n
    \n \n {cartLine.Price}\n {cartLine.UnitOfMeasureSymbol}\n \n \n \n {cartLine.TotalAmount}\n \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 { observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a autosuggest.\n */\nexport class SearchState {\n @observable public searchText?: string;\n\n @observable public defaultBasicSearchUrl?: string;\n\n @observable public searchQueryStringParameter?: string;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport {\n CacheType,\n createObservableDataAction,\n getCatalogId,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport {\n AttributeDataType,\n ChannelInventoryConfiguration,\n ProductRefinerSource,\n ProductRefinerValue,\n ProductSearchCriteria,\n SearchSuggestion,\n SearchSuggestionCriteria\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n getInventoryConfigurationAsync,\n getSearchSuggestionsAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\n\nexport enum SuggestionType {\n Category = 'ScopedCategory',\n Keyword = 'Keyword',\n Product = 'Product',\n None = 'None'\n}\n\n/**\n * This setting defines inventory filtering options.\n */\nexport enum ProductListInventoryFilteringOptions {\n /**\n * Filter out all products out of stock.\n */\n HideOOS = 'hideOOS',\n\n /**\n * Sort products by availability, OOS goes last.\n */\n SortOOS = 'sortOOS',\n\n /**\n * No filtering selected.\n */\n Default = 'default'\n}\n\n/**\n * Input class for auto suggest search input.\n */\nexport class AutoSuggestInput implements IActionInput {\n public searchQuery?: string;\n\n public topResultsCount?: number;\n\n public suggestionType?: string;\n\n public hitPrefix?: string;\n\n public hitSuffix?: string;\n\n public constructor(searchText?: string, top?: number, suggestionType?: string, hitPrefix?: string, hitSuffix?: string) {\n this.searchQuery = searchText;\n this.topResultsCount = top;\n this.suggestionType = suggestionType;\n this.hitPrefix = hitPrefix;\n this.hitSuffix = hitSuffix;\n }\n\n public getCacheKey = () => 'AutoSuggestSearchSuggestions';\n\n public getCacheObjectType = () => 'AutoSuggestSearchSuggestions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new AutoSuggestInput();\n};\n\n/**\n * Calls the Retail API and returns a auto-suggest suggestions.\n * @param input\n * @param ctx\n */\nexport async function getSearchSuggestionsAction(input: AutoSuggestInput, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input || !input.searchQuery) {\n throw new Error('[getSearchSuggestionsAction]No valid Input was provided, failing');\n }\n\n const autosuggest: Autosuggestions = {};\n\n const autoSuggestPromises = [_getAutoSuggest(input, autosuggest, ctx)];\n return Promise.all(autoSuggestPromises).then(() => {\n return autosuggest;\n });\n}\n\n/**\n * Returns inventory in stock sortable refiner value.\n * @param channelInventoryConfiguration - The channelInventoryConfiguration.\n * @param isInStock - The flag indicating whether is getting in-stock refiner or out-of-stock refiner.\n * @returns Refiners.\n */\nconst getInventorySortableRefinerValue = (\n channelInventoryConfiguration: ChannelInventoryConfiguration,\n isInStock: boolean\n): ProductRefinerValue | undefined => {\n if (channelInventoryConfiguration && channelInventoryConfiguration.ProductAvailabilitySortableAttributeRecordId) {\n return {\n RefinerRecordId: channelInventoryConfiguration.ProductAvailabilitySortableAttributeRecordId,\n DataTypeValue: AttributeDataType.TrueFalse,\n LeftValueBoundString: isInStock ? 'true' : 'false',\n RightValueBoundString: isInStock ? 'true' : 'false',\n UnitText: '',\n RowNumber: 0,\n Count: 0,\n ExtensionProperties: [],\n RefinerSourceValue: ProductRefinerSource.Attribute\n };\n }\n return undefined;\n};\n\nasync function _getAutoSuggest(input: AutoSuggestInput, autosuggest: Autosuggestions, ctx: IActionContext): Promise {\n const catalogId = getCatalogId(ctx.requestContext);\n let productSearchCriteria: ProductSearchCriteria = {\n SearchCondition: input.searchQuery && input.searchQuery.length > 0 ? input.searchQuery : '',\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n };\n\n if (ctx.requestContext.app.config?.productListInventoryDisplay === ProductListInventoryFilteringOptions.HideOOS) {\n const channelInventoryConfiguration = await getInventoryConfigurationAsync({ callerContext: ctx });\n const isInStockRefiner = true;\n const inventoryRefinerValue = getInventorySortableRefinerValue(channelInventoryConfiguration, isInStockRefiner);\n\n if (inventoryRefinerValue) {\n productSearchCriteria = {\n ...productSearchCriteria,\n Refinement: [inventoryRefinerValue]\n };\n }\n }\n\n const searchCriteria: SearchSuggestionCriteria = {\n ProductSearchCriteria: productSearchCriteria,\n HitPrefix: input.hitPrefix,\n HitSuffix: input.hitSuffix,\n SuggestionType: input.suggestionType\n };\n\n const searchSuggestions = await getSearchSuggestionsAsync(\n { callerContext: ctx, queryResultSettings: { Paging: { Top: input.topResultsCount } } },\n searchCriteria\n );\n\n if (searchSuggestions && searchSuggestions.length > 0) {\n // Generate image url\n searchSuggestions.map(\n (item: SearchSuggestion) =>\n (item.ImageUrl = item.ImageUrl ? generateImageUrl(item.ImageUrl, ctx.requestContext.apiSettings) : '')\n );\n\n autosuggest.AllSearchResults = searchSuggestions;\n } else {\n ctx.telemetry.error(\n `[getSearchSuggestionsAction] unable to get availabilites for search with suggestion type ${searchCriteria.SuggestionType}`\n );\n }\n}\n\nexport const getSearchSuggestionsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/search/get-auto-suggest-suggestions',\n action: >getSearchSuggestionsAction,\n input: createInput\n});\n\nexport default getSearchSuggestionsActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { getRichTextHtml } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductRefinerValue, SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\nimport { format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchData } from '../search.data';\nimport { ISearchProps } from '../search.props.autogenerated';\n\nexport interface ISearchCategorySuggestProps {\n searchCategorySuggestClass: string;\n searchPageURL: string;\n searchQsp: string | undefined;\n hitPrefix: string;\n hitSuffix: string;\n autoSuggestProps: ISearchProps;\n searchText: string;\n searchRefiners: ProductRefiner[] | undefined;\n suggestions: SearchSuggestion[] | undefined;\n telemetryContent?: ITelemetryContent;\n shouldShowFullPath?: boolean;\n}\n\nexport interface ISearchCategoryViewProps {\n title: React.ReactNode;\n text: React.ReactNode[];\n}\n\nlet payLoad: IPayLoad;\n\n/**\n * CategorySuggestionsComponent.\n * @param props\n */\nexport const CategorySuggestionsComponent = (props: ISearchCategorySuggestProps): ISearchCategoryViewProps | undefined => {\n const {\n suggestions,\n searchText,\n autoSuggestProps: {\n resources: { categorySuggestionHeading }\n }\n } = props;\n\n const reactNodes: React.ReactNode[] = [];\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n suggestions?.map(item => {\n reactNodes.push(_assembleNode(item, props));\n });\n\n const titleNode = _renderTitle(categorySuggestionHeading, searchText);\n\n return { title: titleNode, text: reactNodes };\n};\n\nconst _renderTitle = (categorySuggestionHeading: string, searchText: string) => {\n const categoryAutoSuggestionHeading = categorySuggestionHeading\n ? format(categorySuggestionHeading, searchText)\n : `Search \"${searchText}\" in categories`;\n\n return
  • {categoryAutoSuggestionHeading}
  • ;\n};\n\nconst _assembleNode = (item: SearchSuggestion, props: ISearchCategorySuggestProps) => {\n const { searchText, hitPrefix, hitSuffix, shouldShowFullPath } = props;\n\n const splitValue = shouldShowFullPath ? item.Value : item.Value && item.Value.split('|').pop();\n const ariaLabel = splitValue\n ? splitValue.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '')\n : item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n payLoad.contentAction.etext = item.Value;\n const attribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return (\n
  • \n \n {_generateLink(item, searchText, props) && _getHighlightedText(splitValue ? splitValue : '', hitPrefix, hitSuffix)}\n \n
  • \n );\n};\n\nconst _generateLink = (suggestion: SearchSuggestion, searchText: string, props: ISearchCategorySuggestProps): string => {\n return suggestion && suggestion.Id ? _getCategoryLink(suggestion.Id, searchText, props) : '';\n};\n\nconst _getCategoryLink = (id: string, searchText: string, props: ISearchCategorySuggestProps): string => {\n const { searchPageURL, searchQsp, searchRefiners } = props;\n\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(searchPageURL, window.location.href);\n\n if (searchQsp && searchText) {\n queryUrl.searchParams.set(searchQsp, searchText);\n }\n\n const categoryRefiners = searchRefiners?.find(refiners => {\n return refiners.SourceValue === ProductRefinerSource.Category;\n });\n const refiner = categoryRefiners?.Values?.find(item => {\n return item.RefinerRecordId === Number.parseInt(id, 10);\n });\n\n const encodedRefiner = refiner && JSON.stringify(compressRefiners([refiner]));\n if (encodedRefiner) {\n queryUrl.searchParams.set('refiners', encodedRefiner);\n }\n\n return queryUrl.href;\n};\n\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\n const formattedText = suggestion\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n // eslint-disable-next-line react/no-danger\n return ;\n};\n\n// TODO: This code is currently duplicated in categoryautosuggest need to either remove one of these files\n// or move this code to a common place\nconst compressedRefinerKeys = [\n 'DataTypeValue',\n 'LeftValueBoundString',\n 'RefinerRecordId',\n 'RefinerSourceValue',\n 'RightValueBoundString',\n 'UnitText'\n];\n\n/**\n * Compressed a list of refiners for use in URLs.\n * @param refiners The uncompressed refiners.\n */\nconst compressRefiners = (refiners: ProductRefinerValue[]) => {\n const compressedRefiners: (string | number)[][] = [];\n\n refiners.forEach(refiner => {\n const compressedRefiner: (string | number)[] = [];\n compressedRefinerKeys.forEach(refinerKey => {\n compressedRefiner.push(refiner[refinerKey]);\n });\n compressedRefiners.push(compressedRefiner);\n });\n\n return compressedRefiners;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ISearchFormProps {\n hideSearchLabel: boolean | undefined;\n isSearchFormExpanded?: boolean | undefined;\n disableSubmitSearch: boolean | undefined;\n searchTextInput: React.RefObject;\n maxChars: number;\n searchQsp: string;\n searchPlaceholder: string;\n query: string;\n ariaLabelCancel: string;\n ariaLabelSearch: string;\n ariaLabelSubmit: string;\n handleCancelSearchChange(): void;\n handleInputChange(query: string): void;\n}\n\nexport interface ISearchFormViewProps {\n input: React.ReactNode;\n submitBtn: React.ReactNode;\n cancelBtn: React.ReactNode;\n}\n\n/**\n * On Input Change functionality.\n * @param handleInputChange -Input change function.\n * @returns Set updated input value.\n */\nconst onInputChangeFunction = (handleInputChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleInputChange(event.target.value || '');\n};\nexport const FormComponent = (props: ISearchFormProps): ISearchFormViewProps => {\n const {\n searchQsp,\n searchPlaceholder,\n hideSearchLabel,\n searchTextInput,\n handleInputChange,\n maxChars,\n disableSubmitSearch,\n handleCancelSearchChange,\n query,\n ariaLabelCancel,\n ariaLabelSearch,\n ariaLabelSubmit\n } = props;\n\n const onInputChange = onInputChangeFunction(handleInputChange);\n\n const inputNode = !hideSearchLabel ? (\n \n ) : (\n \n );\n\n const submitBtnNode = !disableSubmitSearch && \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 { getRichTextHtml, IActionContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\nimport { getProductPageUrlSync, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchData } from '../search.data';\nimport { ISearchProps } from '../search.props.autogenerated';\n\n/**\n * Search product suggest resources.\n */\nexport interface ISearchProductSuggestResources {\n freePriceText: string;\n}\n\nexport interface ISearchProductSuggestProps {\n searchProductSuggestClass: string;\n searchPageURL: string;\n searchQsp: string | undefined;\n hitPrefix: string;\n hitSuffix: string;\n autoSuggestProps: ISearchProps;\n searchText: string;\n suggestions: SearchSuggestion[] | undefined;\n telemetry: ITelemetry;\n moduleType: string;\n moduleId: string;\n telemetryContent?: ITelemetryContent;\n resources?: ISearchProductSuggestResources;\n}\n\nexport interface ISearchProductViewProps {\n title: React.ReactNode;\n items: ISearchProductItemViewProps[];\n}\n\nexport interface ISearchProductItemViewProps {\n text: React.ReactNode;\n thumbnail: React.ReactNode;\n price: React.ReactNode;\n LiProduct: INodeProps;\n AProduct: INodeProps;\n id: string | undefined;\n}\n\nlet payLoad: IPayLoad;\nlet telemetryContent: ITelemetryContent | undefined;\n\n/**\n * ProductSuggestionsComponent.\n * @param props\n */\nexport const ProductSuggestionsComponent = (props: ISearchProductSuggestProps): ISearchProductViewProps | undefined => {\n const {\n suggestions,\n hitSuffix,\n hitPrefix,\n autoSuggestProps: {\n context: { actionContext },\n resources: { productSuggestionHeading }\n },\n moduleType,\n moduleId\n } = props;\n const reactNodes: ISearchProductItemViewProps[] = [];\n telemetryContent = props.telemetryContent;\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n suggestions?.map(item => {\n reactNodes.push(_assembleNode(item, hitPrefix, hitSuffix, actionContext, props, moduleType, moduleId));\n });\n\n const titleNode = _renderTitle(productSuggestionHeading);\n\n return { title: titleNode, items: reactNodes };\n};\n\nconst _renderTitle = (productSuggestionHeading: string) => {\n const productAutoSuggestionHeading = productSuggestionHeading ? productSuggestionHeading : 'Go to products';\n\n return
  • {productAutoSuggestionHeading}
  • ;\n};\n\nconst _assembleNode = (\n item: SearchSuggestion,\n hitPrefix: string,\n hitSuffix: string,\n actionContext: IActionContext,\n props: ISearchProductSuggestProps,\n moduleType: string,\n moduleId: string\n): ISearchProductItemViewProps => {\n const altText =\n item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n const price = item.Value3?.Value?.DecimalValue;\n return {\n text: _getHighlightedText(item.Value ? item.Value : '', hitPrefix, hitSuffix),\n thumbnail: _renderThumbnail(item, altText ? altText : '', props),\n price: !ObjectExtensions.isNullOrUndefined(price) && _renderPrice(price, price, moduleId, moduleType, props),\n LiProduct: _getLiWrapper(),\n AProduct: _getAWrapper(item, hitPrefix, hitSuffix, actionContext, props),\n id: item.Id\n };\n};\n\nconst _getLiWrapper = () => {\n return {\n className: 'msc-autoSuggest__productResults-item',\n tag: 'li' as NodeTag\n };\n};\n\nconst _getAWrapper = (\n item: SearchSuggestion,\n hitPrefix: string,\n hitSuffix: string,\n actionContext: IActionContext,\n props: ISearchProductSuggestProps\n) => {\n const {\n autoSuggestProps: { context }\n } = props;\n const ariaLabel =\n item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n payLoad.contentAction.recid = item.Id;\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPrice = context.cultureFormatter.formatCurrency(item.Value3!.Value!.DecimalValue!);\n\n return {\n className: 'msc-autoSuggest__productResults-item',\n tag: 'a' as NodeTag,\n 'aria-label': `${ariaLabel!} ${productPrice}`,\n href: _generateLink(item, hitPrefix, hitSuffix, actionContext),\n ...attribute\n };\n};\n\nconst _generateLink = (suggestion: SearchSuggestion, hitPrefix: string, hitSuffix: string, actionContext: IActionContext) => {\n const formattedLink = (suggestion.Value as string)\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n return suggestion.Value && suggestion.Id\n ? getProductPageUrlSync(formattedLink, (suggestion.Id as unknown) as number, actionContext, undefined)\n : '';\n};\n\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\n const formattedText = suggestion\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n return (\n // eslint-disable-next-line react/no-danger\n \n );\n};\n\nconst _renderPrice = (\n adjustedPrice: number,\n basePrice: number,\n moduleId: string,\n moduleType: string,\n props: ISearchProductSuggestProps\n): JSX.Element | null => {\n const {\n autoSuggestProps: { context }\n } = props;\n\n return (\n \n );\n};\n\nconst _renderThumbnail = (suggestion: SearchSuggestion, altText: string, props: ISearchProductSuggestProps): JSX.Element | null => {\n const {\n autoSuggestProps: {\n context: {\n request: { gridSettings }\n },\n config: { imageSettings }\n }\n } = props;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n if (!suggestion || !suggestion.ImageUrl) {\n props.telemetry.error('Search suggestion content is empty, module wont render.');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=40&h=40&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=40&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=40&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\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 { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { getCatalogId, getUrlSync } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { createSearchStateInput } from '@msdyn365-commerce-modules/search-utilities';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react';\nimport * as React from 'react';\n\nimport getSearchSuggestionsAction, { AutoSuggestInput, SuggestionType } from './actions/get-auto-suggest-suggestions';\nimport {\n CategorySuggestionsComponent,\n FormComponent,\n ISearchCategoryViewProps,\n ISearchKeywordViewProps,\n ISearchProductViewProps,\n KeywordSuggestionsComponent,\n LabelComponent,\n ProductSuggestionsComponent\n} from './components';\nimport { ISearchData } from './search.data';\nimport { ISearchProps, ISuggestionTypeCriterionData, SuggestionTypeCriterionSuggestionType } from './search.props.autogenerated';\n\nexport interface ISearchState {\n isSearchFormExpanded: boolean;\n searchText: string;\n searchKeywordSuggestClass: string;\n searchProductSuggestClass: string;\n searchCategorySuggestClass: string;\n suggestions: Autosuggestions | undefined;\n searchRefiners?: ProductRefiner[] | undefined;\n autoSuggestAriaLabel: string;\n isInitialState: boolean;\n isLoadingAutoSuggest?: boolean;\n}\n\nexport interface ISearchViewProps extends ISearchProps {\n Search: IModuleProps;\n AutoSuggestAriaLabel: INodeProps;\n AutoSuggestAriaLabelText: string;\n searchText: string;\n AutoSuggest: INodeProps;\n KeywordSuggest: INodeProps;\n ProductSuggest: INodeProps;\n CategorySuggest: INodeProps;\n SearchForm: INodeProps;\n FormWrapper: INodeProps;\n UlKeyword: INodeProps;\n UlProduct: INodeProps;\n UlCategory: INodeProps;\n label: React.ReactNode;\n form: React.ReactNode;\n autosuggestKeyword?: ISearchKeywordViewProps;\n autosuggestProduct?: ISearchProductViewProps;\n autosuggestCategory?: ISearchCategoryViewProps;\n callbacks: {\n handleCancelSearchChange(): void;\n handleCancelSearchFocused?(): void;\n };\n isSearchFormExpanded: boolean;\n isLoadingAutoSuggest?: boolean;\n isLoadingNode?: React.ReactNode;\n}\n\n/**\n *\n * Search module.\n * @extends {React.Component, ISearchState>}\n */\nclass Search extends React.Component, ISearchState> {\n private readonly searchTextInput: React.RefObject;\n\n private readonly searchCollapsedLabel: React.RefObject;\n\n private readonly formReference: React.RefObject;\n\n private readonly maxChars: number;\n\n private readonly topResultsCount?: number;\n\n private readonly hitPrefix: string = '{';\n\n private readonly hitSuffix: string = '}';\n\n private readonly waitTime: number = 500;\n\n private readonly autoSuggestResultScreenReaderDiv: React.RefObject;\n\n private readonly autoSuggestResultDiv: React.RefObject;\n\n private readonly searchFormClass: string;\n\n private readonly searchLabelClass: string;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private loadSuggestionsRequestId?: string;\n\n private inputSuggestionType: ISuggestionTypeCriterionData[];\n\n // @ts-expect-error\n private cancellabelDebounce: debounce;\n\n public constructor(props: ISearchProps) {\n super(props);\n this.searchTextInput = React.createRef();\n this.searchCollapsedLabel = React.createRef();\n this.autoSuggestResultScreenReaderDiv = React.createRef();\n this.autoSuggestResultDiv = React.createRef();\n this.formReference = React.createRef();\n this.state = {\n isSearchFormExpanded: false,\n searchText: '',\n searchKeywordSuggestClass: 'ms-search__autoSuggest__keyword',\n searchProductSuggestClass: 'ms-search__autoSuggest__product',\n searchCategorySuggestClass: 'ms-search__autoSuggest__category',\n suggestions: undefined,\n searchRefiners: undefined,\n autoSuggestAriaLabel: '',\n isInitialState: true,\n isLoadingAutoSuggest: false\n };\n this.maxChars =\n (this.props.context &&\n this.props.context.app &&\n this.props.context.app.config &&\n this.props.context.app.config.searchInputMaxLength) ||\n 50;\n\n this.inputSuggestionType = [];\n this.topResultsCount = this.props.config && this.props.config.topResultsCount ? this.props.config.topResultsCount : 5;\n this.searchFormClass = 'ms-search__form';\n this.searchLabelClass = 'ms-search__label';\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this._initSuggestionTypes();\n }\n\n public async componentDidMount(): Promise {\n document.body && document.body.addEventListener('mousedown', this._focusOutTarget);\n window && window.addEventListener('keyup', this._keyup);\n }\n\n public componentWillUnmount(): void {\n document.body && document.body.removeEventListener('mousedown', this._focusOutTarget, false);\n window && window.removeEventListener('keyup', this._keyup, false);\n }\n\n public componentDidUpdate(): void {\n const {\n config: { hideSearchLabel }\n } = this.props;\n const { isSearchFormExpanded, isInitialState } = this.state;\n\n if (!this.props.context.request.params.isEditor) {\n if (!hideSearchLabel && isSearchFormExpanded) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else if (!isInitialState) {\n this.searchCollapsedLabel && this.searchCollapsedLabel.current && this.searchCollapsedLabel.current.focus();\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: ISearchProps, nextState: ISearchState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- ignore complexity.\n public render(): JSX.Element {\n const {\n context,\n resources: { searchtext, searchLabelArialLabel, cancelBtnAriaLabel, searchBtnAriaLabel, submitBtnAriaLabel },\n config: { hideSearchLabel, disableSubmitSearch, searchplaceholderText, shouldShowFullCategoryPath, className = '' }\n } = this.props;\n\n const {\n isSearchFormExpanded,\n searchText,\n searchKeywordSuggestClass,\n searchProductSuggestClass,\n searchCategorySuggestClass,\n suggestions,\n searchRefiners,\n isLoadingAutoSuggest\n } = this.state;\n\n const searchQsp = (context && context.app && context.app.config && context.app.config.searchQueryStringParameter) || 'q';\n const searchPageURL = getUrlSync('search', context && context.actionContext) || '';\n const searchURL = this._appendQueryParams(searchPageURL, searchText, searchQsp);\n const searchPlaceholder = searchplaceholderText && searchplaceholderText.length > 0 ? searchplaceholderText : 'Search in Fabrikam';\n\n const keywordSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Keyword || suggestion.SuggestionType === SuggestionType.None\n );\n const productSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Product\n );\n const categoryRefiners = searchRefiners?.find(refiner => {\n return refiner.SourceValue === ProductRefinerSource.Category;\n });\n const categorySuggestions = suggestions?.AllSearchResults?.filter(suggestion => {\n if (suggestion.SuggestionType !== SuggestionType.Category) {\n return false;\n }\n const refiner = categoryRefiners?.Values?.find(item => {\n return `${item.RefinerRecordId ?? 0}` === suggestion.Id;\n });\n\n return !ObjectExtensions.isNullOrUndefined(refiner);\n });\n\n const viewProps: ISearchViewProps = {\n ...(this.props as ISearchProps),\n\n Search: {\n moduleProps: this.props,\n className: `${classnames('ms-search', className)} ${disableSubmitSearch ? 'no-submit' : 'with-submit'}`\n },\n AutoSuggestAriaLabel: {\n tag: 'div',\n className: 'msc-autoSuggest__screen-reader',\n 'aria-live': 'assertive',\n ref: this.autoSuggestResultScreenReaderDiv\n },\n AutoSuggestAriaLabelText: this.state.autoSuggestAriaLabel,\n searchText: this.state.searchText,\n AutoSuggest: {\n ref: this.autoSuggestResultDiv,\n className: 'ms-search__autoSuggest'\n },\n KeywordSuggest: {\n className: searchKeywordSuggestClass\n },\n ProductSuggest: {\n className: searchProductSuggestClass\n },\n CategorySuggest: {\n className: searchCategorySuggestClass\n },\n SearchForm: {\n className: `${this.searchFormClass} ${isSearchFormExpanded ? 'bx-show' : 'bx-hide'}`\n },\n FormWrapper: {\n tag: 'form',\n ref: this.formReference,\n className: 'ms-search__searchForm',\n 'aria-label': 'Search',\n name: 'searchForm',\n role: 'search',\n action: searchURL,\n autoComplete: 'off',\n onSubmit: this._handleSubmit\n },\n UlKeyword: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__keywordResults-items', className)\n },\n UlProduct: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__productResults-items', className)\n },\n UlCategory: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__categoryResults-items', className)\n },\n label: LabelComponent({\n isSearchFormExpanded,\n searchLabelClass: `${this.searchLabelClass} ${isSearchFormExpanded ? 'bx-hide' : 'bx-show'}`,\n searchtext,\n searchLabelArialLabel,\n searchCollapsedLabel: this.searchCollapsedLabel,\n hideSearchLabel,\n handleCancelSearchChange: this._handleCancelSearchChange,\n telemetryContent: this.telemetryContent\n }),\n form: FormComponent({\n ariaLabelCancel: cancelBtnAriaLabel,\n ariaLabelSearch: searchBtnAriaLabel,\n ariaLabelSubmit: submitBtnAriaLabel,\n hideSearchLabel,\n searchTextInput: this.searchTextInput,\n disableSubmitSearch,\n handleInputChange: this._handleInputChange,\n handleCancelSearchChange: this._handleCancelSearchChange,\n maxChars: this.maxChars,\n searchQsp,\n searchPlaceholder,\n query: searchText\n }),\n autosuggestKeyword:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (keywordSuggestions && ArrayExtensions.hasElements(keywordSuggestions)))\n ? KeywordSuggestionsComponent({\n searchKeywordSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: keywordSuggestions,\n telemetryContent: this.telemetryContent\n })\n : undefined,\n autosuggestProduct:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (productSuggestions && ArrayExtensions.hasElements(productSuggestions)))\n ? ProductSuggestionsComponent({\n searchProductSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: productSuggestions,\n telemetry: this.props.telemetry,\n moduleType: this.props.typeName,\n moduleId: this.props.id,\n telemetryContent: this.telemetryContent,\n resources: this.props.resources\n })\n : undefined,\n autosuggestCategory:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (categorySuggestions && ArrayExtensions.hasElements(categorySuggestions)))\n ? CategorySuggestionsComponent({\n searchCategorySuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: categorySuggestions,\n searchRefiners,\n telemetryContent: this.telemetryContent,\n shouldShowFullPath: shouldShowFullCategoryPath\n })\n : undefined,\n callbacks: {\n handleCancelSearchChange: this._handleCancelSearchChange,\n handleCancelSearchFocused: this._handleCancelSearchFocused\n },\n isSearchFormExpanded: this.state.isSearchFormExpanded,\n isLoadingAutoSuggest,\n isLoadingNode: this._isLoadingNode()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initSuggestionTypes() {\n const suggestionTypes = this.props.config.suggestionTypeCriterion;\n\n const suggestions = ArrayExtensions.unique(ArrayExtensions.validValues(suggestionTypes));\n if (!ArrayExtensions.hasElements(suggestions)) {\n this.inputSuggestionType = [\n { SuggestionType: SuggestionTypeCriterionSuggestionType.keyword },\n { SuggestionType: SuggestionTypeCriterionSuggestionType.product },\n { SuggestionType: SuggestionTypeCriterionSuggestionType.scopedCategory }\n ];\n return;\n }\n\n const validSuggestions = suggestions.filter(suggestion => suggestion.SuggestionType);\n if (ArrayExtensions.hasElements(validSuggestions)) {\n this.inputSuggestionType = validSuggestions;\n return;\n }\n\n this.inputSuggestionType = [];\n }\n\n /**\n * Function to create the ReactNode for loading Autosuggest result.\n * @returns ReachNode for loading Autosuggest result.\n */\n private readonly _isLoadingNode = (): React.ReactNode => {\n const loadingText = this.props.resources.autoSuggestResultLoadingMessage;\n return ;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _focusOutTarget = (e: any): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.target.closest('.ms-search') === null) {\n this._clearAutoSuggestState();\n }\n };\n\n private readonly _keyup = (e: KeyboardEvent): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.keyCode === KeyCodes.Escape) {\n this._clearAutoSuggestState();\n } else if (this.state.isSearchFormExpanded && e.keyCode === KeyCodes.Escape) {\n if (this.state.isSearchFormExpanded) {\n this.setState({ isSearchFormExpanded: false });\n }\n }\n\n if (\n !(\n (this.formReference.current && this.formReference.current.contains((e.target as unknown) as Node)) ||\n (this.autoSuggestResultDiv.current && this.autoSuggestResultDiv.current.contains((e.target as unknown) as Node))\n )\n ) {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n\n if (this.state.isSearchFormExpanded) {\n this.setState({ isSearchFormExpanded: false });\n }\n }\n };\n\n private readonly _clearAutoSuggestState = (): void => {\n const {\n context: { actionContext },\n data: { searchState }\n } = this.props;\n\n if (this.searchTextInput.current && this.searchTextInput.current.value.length > 0) {\n searchState.searchText = '';\n searchState.defaultBasicSearchUrl = '';\n searchState.searchQueryStringParameter = '';\n actionContext ? actionContext.update(createSearchStateInput(searchState), searchState) : null;\n this.searchTextInput.current.value = '';\n }\n\n this.setState({ searchText: '', suggestions: undefined, searchRefiners: undefined });\n };\n\n private async _getSearchSuggestions(loadSuggestionsRequestId: string, query: string) {\n try {\n const searchSuggestions = await getSearchSuggestionsAction(\n new AutoSuggestInput(query, this.topResultsCount, this._getSuggestionType(), this.hitPrefix, this.hitSuffix),\n this.props.context.actionContext\n );\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return undefined;\n }\n return searchSuggestions;\n } catch (error) {\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return undefined;\n }\n this.setState({ suggestions: undefined, searchRefiners: undefined, autoSuggestAriaLabel: this._setAutoSuggestResultCount() });\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Unable to get auto suggest results');\n return undefined;\n }\n }\n\n private async _updateSearchRefiners(loadSuggestionsRequestId: string, query: string, suggestions: Autosuggestions | undefined) {\n try {\n const refiners = await this._getSearchRefiners(query);\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return;\n }\n this.setState({\n suggestions,\n searchRefiners: refiners,\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(suggestions),\n isLoadingAutoSuggest: false\n });\n } catch (error) {\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return;\n }\n this.setState({ suggestions, searchRefiners: undefined, autoSuggestAriaLabel: this._setAutoSuggestResultCount(suggestions) });\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Unable to get refiners results');\n }\n }\n\n private _loadSuggestions(query: string) {\n this.cancellabelDebounce = debounce(async () => {\n this.setState({ isLoadingAutoSuggest: true });\n const loadSuggestionsRequestId = Random.Guid.generateGuid();\n this.loadSuggestionsRequestId = loadSuggestionsRequestId;\n const searchSuggestions = await this._getSearchSuggestions(loadSuggestionsRequestId, query);\n await this._updateSearchRefiners(loadSuggestionsRequestId, query, searchSuggestions);\n }, this.waitTime);\n\n setTimeout(() => {\n this.cancellabelDebounce();\n }, 0);\n }\n\n private readonly _handleInputChange = (query: string): void => {\n if (!query || query.length <= this.maxChars) {\n this.setState({ searchText: query });\n }\n\n if (this.cancellabelDebounce) {\n this.cancellabelDebounce.cancel();\n }\n\n const {\n context,\n data: { searchState }\n } = this.props;\n\n if (context) {\n if (query && query.length > 0) {\n if (query.length > this.maxChars) {\n return;\n }\n\n if (ArrayExtensions.hasElements(this.inputSuggestionType)) {\n this._loadSuggestions(query);\n }\n\n searchState.searchText = query;\n } else {\n this.setState({ suggestions: undefined, searchRefiners: undefined });\n searchState.searchText = '';\n }\n context.actionContext.update(createSearchStateInput(searchState), searchState);\n }\n };\n\n private _getSuggestionType(): string {\n const distinctSuggestionTypes: string[] = this.inputSuggestionType.map(\n suggestionTypeItem => suggestionTypeItem.SuggestionType!.charAt(0).toUpperCase() + suggestionTypeItem.SuggestionType!.slice(1)\n );\n return distinctSuggestionTypes.join(',');\n }\n\n private async _getSearchRefiners(searchText: string): Promise {\n const { actionContext: ctx } = this.props.context;\n const catalogId = getCatalogId(ctx.requestContext);\n validateCatalogId(catalogId);\n return ProductsDataActions.getProductSearchRefinersAsync(\n { callerContext: ctx },\n {\n SearchCondition: searchText,\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n }\n );\n }\n\n private readonly _handleSubmit = (\n e: React.MouseEvent | React.KeyboardEvent | React.FormEvent\n ): void => {\n const {\n config: { disableSubmitSearch },\n context: {\n actionContext,\n app: {\n config: { searchQueryStringParameter }\n }\n }\n } = this.props;\n\n const query = this.searchTextInput.current && this.searchTextInput.current.value;\n e.preventDefault();\n\n if (!query || (query && query.length === 0) || disableSubmitSearch) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else {\n const searchQsp = searchQueryStringParameter || 'q';\n const searchURL = this._appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\n document.location.href = searchURL;\n }\n };\n\n private readonly _handleCancelSearchChange = (): void => {\n const { isSearchFormExpanded, suggestions } = this.state;\n\n if (!isSearchFormExpanded) {\n this.setState({\n isSearchFormExpanded: true,\n searchText: '',\n isInitialState: false\n });\n } else {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n this.setState({ isSearchFormExpanded: false });\n }\n };\n\n private readonly _handleCancelSearchFocused = (): void => {\n const { suggestions } = this.state;\n if (!(suggestions && suggestions.AllSearchResults)) {\n this._clearAutoSuggestState();\n this.setState({ isSearchFormExpanded: false });\n }\n };\n\n private readonly _appendQueryParams = (route: string, query: string, qsp: string): string => {\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(route, window.location.href);\n if (qsp && query) {\n queryUrl.searchParams.set(qsp, query);\n }\n\n return queryUrl.href;\n };\n\n private readonly _setAutoSuggestResultCount = (result?: Autosuggestions) => {\n if (this.autoSuggestResultScreenReaderDiv.current !== null) {\n const ariaLiveRegion = this.autoSuggestResultScreenReaderDiv.current;\n const suggestResultString = this.props.resources.autoSuggestFoundMessage;\n const emptyResultString = this.props.resources.noAutoSuggestionMessage;\n ariaLiveRegion.innerText =\n result && result.AllSearchResults && result.AllSearchResults.length > 0 ? suggestResultString : emptyResultString;\n ariaLiveRegion.setAttribute('aria-live', 'assertive');\n return ariaLiveRegion.innerText;\n }\n return '';\n };\n}\n\nexport default Search;\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 { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from './components';\nimport { ISearchViewProps } from './search';\n\nconst SearchView: React.FC = props => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n CategorySuggest,\n UlKeyword,\n UlProduct,\n UlCategory,\n form,\n autosuggestCategory,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n isLoadingAutoSuggest,\n isLoadingNode\n } = props;\n\n return (\n \n {label}\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\n \n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\n \n \n );\n};\n\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\n return (\n \n \n {form.input}\n {form.cancelBtn}\n {form.submitBtn}\n \n \n );\n};\n\nconst _renderKeywordSuggestions = (\n KeywordSuggest: INodeProps,\n UlKeyword: INodeProps,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n keywordSuggestions && (\n \n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nconst _renderProductSuggestions = (\n ProductSuggest: INodeProps,\n UlProduct: INodeProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n productSuggestions && (\n \n \n {productSuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n )\n );\n};\n\nconst _renderCategorySuggestions = (\n CategorySuggest: INodeProps,\n UlCategory: INodeProps,\n categorySuggestions?: ISearchCategoryViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n categorySuggestions && (\n \n \n {categorySuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n categorySuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nexport default SearchView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SocialMedia, SocialMediaComponent } from '@msdyn365-commerce/components';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISocialShareItemConfig, ISocialShareItemProps, socialMedia } from './social-share-item.props.autogenerated';\n\nexport interface ISocialShareItemViewProps extends ISocialShareItemProps {\n SocialShareItemElement: React.ReactNode | null;\n SocialShareItem: IModuleProps;\n}\n\n/**\n *\n * SocialShareItem component.\n * @extends {React.PureComponent>}\n */\nclass SocialShareItem extends React.PureComponent> {\n constructor(props: ISocialShareItemProps) {\n super(props);\n\n this._getSocialShareItem = this._getSocialShareItem.bind(this);\n }\n\n public render(): JSX.Element | null {\n const viewprops = {\n ...this.props,\n SocialShareItem: {\n moduleProps: this.props,\n className: 'ms-social-share-item'\n },\n SocialShareItemElement: this._getSocialShareItem()\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n\n private _getSocialShareItem(): React.ReactNode | null {\n const src = this.props.config.icon;\n if (MsDyn365.isBrowser) {\n switch (this.props.config.socialMedia) {\n case socialMedia.facebook:\n return (\n \n );\n case socialMedia.twitter:\n return (\n \n );\n case socialMedia.pinterest:\n return (\n \n );\n case socialMedia.linkedin:\n return (\n \n );\n case socialMedia.mail:\n return (\n \n );\n default:\n return null;\n }\n }\n return null;\n }\n}\n\nexport default SocialShareItem;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISocialShareItemViewProps } from './social-share-item';\n\nexport const SocialShareItemView: React.FC = props => {\n const { SocialShareItem, SocialShareItemElement } = props;\n\n if (!SocialShareItemElement) {\n props.context.telemetry.error('Social media is not valid, module wont render');\n return null;\n }\n return {SocialShareItemElement};\n};\n\nexport default SocialShareItemView;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../video-player.props.autogenerated';\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Component props.\n */\nexport interface IVideoPlayerAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content view props.\n */\nexport interface IVideoPlayerAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Item view props.\n */\nexport interface IVideoPlayerAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Video Player Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Video Player Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalParagraphChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Video Player Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-video-player__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Video Player additonal content item props.\n * @param props - Video Player Additional content component props.\n * @returns IVideoPlayerAdditionalContentItemViewProps.\n */\nconst getAdditionalContentItems = (\n item: IAdditionalContentData,\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\n };\n};\n\n/**\n * VideoPlayerAdditionalContent component.\n * @param props - Video Player Additional content component props.\n * @returns Video Player Additional content view props.\n */\nexport const videoPlayerAdditionalContent = (\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\n return {\n additionalContentNode: { className: 'ms-video-player__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPlayerData, IPlayerOptions, IPlayerResources, IVideoMetadata, Player } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\nimport { ILinksData, IVideoPlayerConfig, IVideoPlayerProps } from './video-player.props.autogenerated';\n\nexport interface IVideoPlayerViewProps extends IVideoPlayerProps<{}> {\n player: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IVideoPlayerAdditionalContentViewProps;\n handleText?(): void;\n handleParagraph?(): void;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleLink?(): void;\n handleAdditionalLink?(): void;\n}\n\n/**\n *\n * VideoPlayer component.\n * @extends {React.PureComponent>}\n */\nclass VideoPlayer extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly isMobileDevice: boolean;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\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 options = {\n ...this.props.config,\n isMobileDevice: this.isMobileDevice\n };\n const video: MsDyn365.IVideoData = this.props.config.video;\n const playerResources: IPlayerResources = {\n playAriaLabel: this.props.resources.playLabel,\n pauseAriaLabel: this.props.resources.pauseLabel,\n playingAriaLabel: this.props.resources.playingLabel,\n pausedAriaLabel: this.props.resources.pausedLabel,\n muteAriaLabel: this.props.resources.muteLabel,\n unMuteAriaLabel: this.props.resources.unMuteLabel,\n fullScreenAriaLabel: this.props.resources.fullScreenLabel,\n exitFullScreenAriaLabel: this.props.resources.exitFullScreenLabel,\n seekBarLabel: this.props.resources.seekBarLabel,\n videoTimeDurationLabel: this.props.resources.videoTimeDurationLabel,\n closedCaptionLabel: this.props.resources.closedCaptionLabel\n };\n const videoMetaData: IVideoMetadata = {};\n\n if (video) {\n videoMetaData.videoId = video.id;\n videoMetaData.title = video.title;\n videoMetaData.duration = video.playTime;\n\n if (video.thumbnail) {\n videoMetaData.posterframeUrl = video.thumbnail.src;\n }\n\n if (video._links?.binaryReferences) {\n videoMetaData.videoBinaryReferences = video._links.binaryReferences;\n }\n }\n const videoPlayerData: IPlayerData = { options: options as IPlayerOptions, metaData: videoMetaData };\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n\n player: (\n \n \n \n ),\n title: this._getVideoDetailsHeading(),\n text: this._getVideoDetailsParagraph(),\n links: this._getVideoDetailsLinks(),\n detailsContainer: { className: 'ms-video-player__details' },\n detailsContainerCTA: { className: 'ms-video-player__details__cta' },\n additionalContent: videoPlayerAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleText: this.handleTextChange,\n handleParagraph: this.handleParagraphChange,\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleLink: this.handleLinkTextChange,\n handleAdditionalLink: this.handleAdditionalTextChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handle additional text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * Handle additional link text change.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * Handle additional paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * Get video details links.\n * @returns - React node.\n */\n private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n\n return links?.map((linkData: ILinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'ms-video-player__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n }\n\n private _getVideoDetailsHeading(): React.ReactNode | undefined {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n }\n\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n }\n}\n\nexport default VideoPlayer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, IVideoPlayerViewProps } from './index';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\n if (additionalContent.additionalContentItems) {\n return (\n \n <>\n {additionalContent.additionalContentItems.heading}\n \n {additionalContent.additionalContentItems.text}\n \n {additionalContent.additionalContentItems.links}\n \n \n \n \n );\n }\n\n return null;\n};\n\nconst VideoPlayerView: React.FC = props => {\n return (\n
    \n {props.player}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n
    \n );\n};\n\nexport default VideoPlayerView;\n"],"names":["showStrikethroughPricing","props","originalPrice","getOriginalPrice","data","price","CustomerContextualPrice","Math","max","BasePrice","TradeAgreementPrice","AdjustedPrice","renderCurrentPrice","initialPrice","formatCurrency","React","className","itemProp","undefined","freePriceText","returnPrice","Intl","NumberFormat","context","cultureFormatter","locale","style","currency","currencyCode","currencyDisplay","format","_unused","renderCurrentPriceWithOriginalPrice","originalPriceText","currentPriceText","savingsText","msdyn365Commerce","createComponent","component","__assign","classnames","WishlistItemDimension","_ref","key","dimensionType","dimensionValue","WishListItemActions","product","itemKey","handlers","onAddToCart","onRemoveItem","RecordId","_renderAriaLabel","resources","Name","Dimensions","productDimensionTypeColor","productDimensionTypeSize","productDimensionTypeStyle","formattedPrice","dimensions","CurrencyCode","map","productDimension","DimensionTypeValue","DimensionValue","Value","join","renderProductLink","input","productUrl","telemetryContent","recordId","productName","payLoad","getPayloadObject","toString","productAttributes","getTelemetryAttributes","productPageUrlWithSwatch","StringExtensions","isNullOrWhitespace","Object","assign","href","renderInventoryInformationLabel","inventoryInformationLabel","inventoryLabelClassName","inventoryCssName","WishlistItemAddToCartButtonComponent","isInStock","addToCartText","outOfStockText","isServiceItem","ItemTypeValue","ReleasedProductType","Service","addItemAction","Button","title","onClick","disabled","WishlistItemRemoveFromWishlistButtonComponent","removeFromWishlistText","removeItemAction","renderUnitOfMeasure","unitOfMeasure","app","config","unitOfMeasureDisplayType","WishlistItem","imageSettings","wishlistState","enableImageProductLink","PrimaryImageUrl","fallbackImage","getFallbackImageUrl","ItemId","actionContext","requestContext","apiSettings","isBrowser","fullUrl","URL","window","location","dimension","_props$product$Dimens","_dimension$DimensionV","dimensionName","convertProductDimensionTypeToDimensionTypes","searchParams","set","_getFullProductLink","productImage","_renderProductImage","productLink","productDimensions","_renderProductDimensions","productPrice","_renderPrice","productUnitOfMeasure","DefaultUnitOfMeasure","entireProductLink","productAriaLabel","addToCartButton","inventoryInformation","removeButton","productStatusMessage","isOpen","productId","Alert","color","statusCssString","toggle","onDismiss","userMessage","heading","image","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","cropFocalRegion","Image","altText","src","fallBackSrc","gridSettings","request","loadFailureBehavior","moduleId","moduleTypeName","PriceComponent","id","typeName","index","type","WishlistItemsStatusMessage","errorType","text","WishlistItems","constructor","super","handleHeadingChange","event","this","target","value","_onDismiss","setState","_renderHeading","MsDyn365","tag","editProps","onEdit","_addItemToCart","async","telemetry","cart","productAvailability","addedToCartSuccessMessage","addedToCartFailureMessage","invoiceInCartErrorMessage","productInventoryInformation","_getProductInventory","ProductDetails","result","_this$props$data$feat","_this$props$context","_this$props$context$a","_product$Behavior","isOrderQuantityLimitsFeatureEnabledInHq","featureState","find","IsEnabled","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","customerInfo","customerInformation","isOrderQuantityLimitsFeatureEnabledInSiteSettings","IsB2b","emailDeliveryModeCode","channel","EmailDeliveryModeCode","deliveryOptions","getDeliveryOptionsAsync","callerContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","isOrderQuantityLimitsFeatureEnabled","eoqCount","Behavior","MultipleOfQuantity","addProductToCartInput","count","enableStockCheck","availableQuantity","ProductAvailableQuantity","AvailableQuantity","additionalProperties","orderQuantityLimitsFeatureIsEnabled","isAddEmailDeliveryItemToCart","ArrayExtensions","hasElements","DeliveryOptions","Code","addProductToCart","then","status","messageGlyph","substatus","_await$cart$cart","curQuantity","CartLines","item","ProductId","Quantity","maxQtyLimitReachedMessage","_getInventoryValueMessage","_result$errorDetails","errorDetails","LocalizedMessage","_result$errorDetails2","debug","catch","error","warning","_removeItemFromWishlist","wishlists","noLongerLineExist","userToken","user","isAuthenticated","token","wishlistLineId","_getWishlistLineIdFromProductId","removeLinesAsync","Id","LineId","commerceList","castCommerceList","_getProductsNoLongerExists","length","_removeNoLongerExistsLines","update","createGetByCustomerInput","getItemsInWishlists","ActiveWishlistInput","products","castSimpleProducts","isError","_inventoryLabel","StockLevelLabel","_inventoryClassName","StockLevelCode","toLowerCase","_isProductInStock","productResult","IsProductAvailable","CommerceListLines","foundWishlistItem","filter","commerceListLine","_castCommerceList$Com","noLongerExist","line","push","getTelemetryObject","telemetryPageName","friendlyName","shouldComponentUpdate","nextProps","nextState","state","render","emptyWishlistText","wishlistErrorGettingWishlist","noLongerExitsWishlistItemText","errorProps","_objectSpread","moduleProps","statusMessage","renderView","productsList","emptyViewProps","viewProps","Products","Product","ProductDimensions","_renderProductList","statusNotExistsMessage","_getProductNotExists","emptytext","noLongerExisttext","priceFree","addToCartButtonText","removeButtonText","productDimensionTypeAmount","currentProductProps","ProductPrice","getProductUrlSync","IsGiftCard","maxQuantityLimitText","maxQuantityForLineItem","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","replace","minInventory","min","productInventoryCollection","__decorate","observer","_renderItem","Node","Module","PromoBannerCloseButton","closeButtonAriaLabel","label","onClose","TelemetryConstant","PromoBannerClose","attributes","PromoBannerLinks","links","onTextChange","editableLinks","_mapEditableLinks","Msdyn365","linkdata","forEach","link","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","onTelemetryClick","PromoBannerText","PromoBanner","animating","isVisible","activeIndex","handleTextChange","bannerMessages","handleLinkClick","handleLinkTextChange","linkIndex","_next","nextIndex","_isLastItem","_goToIndex","_previous","_isFirstItem","dismissEnabled","interval","hideFlipper","autoplay","closeButtonLabel","handleLinks","handleText","promoBannerProps","PromoBannerTextProps","PromoBannerLinksProps","contentProps","CarouselProps","Carousel","next","previous","onIndicatorsClickHandler","hideIndicator","closeButton","slides","message","_message$links","items","SuggestionType","AutoSuggestInput","searchText","top","suggestionType","hitPrefix","hitSuffix","getCacheKey","getCacheObjectType","dataCacheType","searchQuery","topResultsCount","_getAutoSuggest","autosuggest","ctx","searchCriteria","ProductSearchCriteria","SearchCondition","Context","ChannelId","channelId","CatalogId","catalogId","HitPrefix","HitSuffix","searchSuggestions","getSearchSuggestionsAsync","Paging","Top","ImageUrl","generateImageUrl","AllSearchResults","createObservableDataAction","action","Error","autoSuggestPromises","Promise","all","inputData","KeywordSuggestionsComponent","suggestions","reactNodes","_assembleNode","RegExp","attribute","_generateLink","_getHighlightedText","suggestion","searchPageURL","searchQsp","formattedLink","route","indexOf","formattedText","dangerouslySetInnerHTML","getRichTextHtml","ProductSuggestionsComponent","autoSuggestProps","productSuggestionHeading","moduleType","_renderTitle","productAutoSuggestionHeading","Value3","DecimalValue","LiProduct","_getLiWrapper","AProduct","_getAWrapper","recid","getProductPageUrlSync","adjustedPrice","basePrice","CategorySuggestionsComponent","categorySuggestionHeading","categoryAutoSuggestionHeading","splitValue","split","pop","_getCategoryLink","searchRefiners","urlPath","categoryRefiners","refiners","KeyName","refiner","Values","RefinerRecordId","parseInt","encodedRefiner","encodeURIComponent","JSON","stringify","compressRefiners","compressedRefinerKeys","compressedRefiners","compressedRefiner","refinerKey","FormComponent","searchPlaceholder","hideSearchLabel","isSearchFormExpanded","searchTextInput","handleInputChange","maxChars","disableSubmitSearch","handleCancelSearchChange","handleSearchClick","query","ariaLabelCancel","ariaLabelSearch","ariaLabelSubmit","onInputChange","e","inputNode","name","placeholder","ref","onChange","maxLength","submitBtnNode","searchBtnNode","cancelBtn","submitBtn","searchBtn","LabelComponent","searchLabelClass","searchLabelArialLabel","searchtext","searchCollapsedLabel","innerRef","Search","waitTime","_focusOutTarget","closest","_clearAutoSuggestState","_keyup","keyCode","KeyCodes","Escape","document","body","classList","formReference","current","contains","autoSuggestResultDiv","searchState","defaultBasicSearchUrl","searchQueryStringParameter","createSearchStateInput","_handleSearchClick","console","log","updatedIsSearchFormExpanded","headerElem","querySelector","add","documentElement","scrollTop","remove","_handleInputChange","cancellabelDebounce","cancel","_debounce","getSearchSuggestionsAction","_getSuggestionType","inputSuggestionType","results","_getSearchRefiners","autoSuggestAriaLabel","_setAutoSuggestResultCount","exception","setTimeout","suggestionTypes","distinctSuggestionTypes","suggestionTypeItem","charAt","toUpperCase","slice","_handleSubmit","preventDefault","focus","searchURL","_appendQueryParams","getUrlSync","_handleCancelSearchChange","isInitialState","qsp","autoSuggestResultScreenReaderDiv","ariaLiveRegion","suggestResultString","autoSuggestFoundMessage","emptyResultString","noAutoSuggestionMessage","innerText","setAttribute","searchKeywordSuggestClass","searchProductSuggestClass","searchCategorySuggestClass","inSearchMode","searchInputMaxLength","suggestionTypeCriterion","searchFormClass","searchBtnClass","addEventListener","componentWillUnmount","removeEventListener","componentDidUpdate","params","isEditor","cancelBtnAriaLabel","searchBtnAriaLabel","submitBtnAriaLabel","searchplaceholderText","keywordSuggestions","i","Keyword","None","productSuggestions","categorySuggestions","Category","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","CategorySuggest","SearchForm","SearchBtn","BtnWrapper","FormWrapper","autoComplete","onSubmit","UlKeyword","UlProduct","UlCategory","searchLabel","searchLabelText","form","autosuggestKeyword","autosuggestProduct","autosuggestCategory","callbacks","getProductSearchRefinersAsync","_renderButton","_renderForm","_renderKeywordSuggestions","_renderProductSuggestions","_renderCategorySuggestions","_context$request$app","OmniChannelMedia","_product$Behavior$Min","validateQuantity","isQuantityValidationRequired","quantity","respectQuantityLimits","MinimumQuantity","isChannelQuantityLimitsFeatureEnabledInHq","_this$props$data$cart","_this$props$data$cart2","validateLimitsPerLine","cartConfiguration","ValidateDefaultOrderSettingsPerLine","_this$props$data$feat2","_this$props$data$feat3","_this$props$data$cart3","_cartConfiguration$Ig","IgnoreOrderSettings","inputRef","_validateMin","minValue","isNaN","currentInput","currentCount","_onIncrement","bind","_onDecrement","_handleChange","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","incDisabled","currentValue","decrementButtonAriaLabel","tabIndex","pattern","onBlur","inputQuantityAriaLabel","incrementButtonAriaLabel","invokeCallback","amount","prevState","inputElement","HTMLInputElement","defaultProps","CartLineItemFunctions","renderProductDimensions","DimensionStrings","colorString","configString","sizeString","DimensionLine","defaultValue","styleString","CartLine","cartLine","DiscountLines","discountLine","OfferId","OfferName","discountStringText","isSalesLine","PeriodicDiscount","DiscountAmountWithoutTax","DiscountAmount","Percentage","actionInput","AttributesForSelectedVariantInput","getAttributesForSelectedVariant","res","TextValue","_props$context3","destructDimensionStrings","fallbackImageUrl","productSKU","renderDisountLines","newValue","quantityOnChange","_generateErrorMessage","errorMessage","isB2B","primaryImageUrl","TotalAmount","Price","TaxAmount","NetAmountWithoutTax","_generateQuantityandPrice","_props$context2","nodes","isQuantityEditable","IsGiftCardLine","_props$context","_props$data","eoqQuantity","quantityDisplayString","maxQuantity","currentQuantity","salesLineSkuText","renderLabel","arguments","rating","ratingAriaLabel","ratingLabel","roundedRating","toFixed","ProductComponent","imageOrientation","AttributeValues","property","productImageSettings","sm","md","disableLazyLoad","cmsImageSettings","setTelemetryAttribute","pid","pname","mname","AverageRating","imageUrl","img","imageProps","renderProductPlacementImage","renderPrice","description","Description","avgRating","totalRatings","numRatings","RatingComponent","ratingCount","readOnly","renderRating","TotalRatings","_renderCarousel","carouselContainer","PropDetails","isMobile","device","Type","_renderProduct","_renderGrid","gridContainer","orientationClass","_property$Name","getImageOrientation","ProductCollectionContainer","SingleSlideCarouselComponentProps","GridComponentProps","isCarousel","productCollection","ratingId","_totalRatings$toStrin","numberRatings","getRatingAriaLabel","ActiveProductComponent","imgData","hideRating","assembleNode","_item$links","headingNode","renderHeading","additionalContentHeading","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","ctaLink","renderLinks","isOpenInNewTab","handleAdditionalLinkTextChange","additionalContentNode","additionalContentContainer","additionalContentItemLinks","activeImageAdditionalContent","additionalContent","CanvasCalculations","CanvasStyles","ImageMapper","_isDesktopViewPort","_context","getActiveImageWidth","activeImageReferenceValue","activeImageRefs","clientWidth","getActiveImageHeight","clientHeight","convertHexToRgb","hexColor","exec","rValue","Number","gValue","bValue","applyFadingTransition","coords","rgbColor","alpha","_this$_canvas$current","_this$_canvas$current2","halfDivisor","_canvas","getContext","buttonPadding","paddingAdjustment","buttonWidth","measureText","width","fillStyle","parentElement","getAttribute","fillText","drawButton","_this$_canvas$current3","_this$_canvas$current4","buttonTextClor","buttonHeight","buttonPositionX","buttonPositionY","arcsize","beginPath","moveTo","lineTo","arcTo","stroke","closePath","fill","expandAnimation","_this$props$imageMapp","buttonText","imageMapperResources","animationStartWidth","expandAnimationStartWidth","pointPositionX","pointPositionY","animationEndWidth","expandAnimationEndWidth","radius","expandRadius","rotation","startAngle","endAngle","textFadeInValue","textFadeInStartValue","buttonTextClorInRgb","toLocaleLowerCase","animate","_this$_canvas$current5","_this$_canvas$current6","ellipse","requestAnimationFrame","textFadeInterval","collapseAnimation","_this$props$imageMapp2","collapseAnimationStartWidth","collapseAnimationEndWidth","clearMargin","clearHeight","clearWidth","collapseRadius","textFadeOutValue","textFadeOutStartValue","_this$_canvas$current7","_this$_canvas$current8","clearRect","drawCircle","_this$_canvas$current9","_this$_canvas$current10","viewPort","doubleMultiplier","strokeStyle","arc","PI","scaleCoords","imgWidth","defaultWidth","defaultScale","scale","coord","renderPrefilledAreas","areaMap","areas","area","computeCenter","scaledCoords","handleHoverOn","center","handleHoverOff","_this$_canvas$current11","canvasPositionX","defaultPositionX","canvasPositionY","defaultPositionY","height","click","hoverOn","onMouseEnter","hoverOff","onMouseLeave","renderAreas","_this$props$imageMapp3","_this$props$imageMapp4","_area$productSearchRe","xsRadius","extendedArea","areaKey","altTextWithProductName","productSearchResult","shape","onFocus","alt","initCanvas","_this$getActiveImageW","_this$getActiveImageH","_this$_canvas$current12","_backgroundImage","_container","onLoad","defaultHeight","canvasWidth","canvasHeight","componentDidMount","shouldRender","_requestContext$gridS","imageData","useMap","ActiveImageConstants","ActiveImage","_defaultProductCardWidth","_defaultProdutCardHight","_activePoints","addActivePoints","_product$PrimaryImage","areaId","updateClientWidth","viewport","variant","VariantType","Browser","renderImageMapper","_this$props$config$ac","productResults","activePoints","configProduct","itemId","_product$Name","_configProduct$xPosit","_configProduct$yPosit","_configProduct$radius","xPosition","yPosition","activePoint","mappedArea","_activeImageClass","enterArea","leaveArea","activeImage","_activeImageRefs","altTextForSeeMoreButtonWithProductName","seeMoreButtonText","overlayClass","open","resetState","renderProductComponent","_this$state$area","_this$state$area$prim","_product$ItemId","baseImageUrl","renderProductCard","_productCardDivRef","renderOverlay","getProductCardPositionX","_this$props$config$pr","_this$props$config$pr2","_defaultImageSettings","_area$center$","_area$center","getDefaultImageSettings","productImageSettingsWidth","productCardWidth","leftAllignPosition","position","getProductCardPositionY","_this$props$config$pr3","_this$props$config$pr4","_defaultImageSettings2","productImageSettingsHeight","produtCardHight","_area$center$2","_area$center2","keyDown","enterKey","nodeName","escKey","handleParagraphChange","paragraph","renderActiveImageDetailsLinks","_telemetryContent","linkData","linkId","willOpenInNewTab","renderActiveImageDetailsHeading","_heading$tag","renderActiveImageDetailsParagraph","getActiveImageId","activeImageId","_activeImageIdPart$","activeImageSource","decrementOne","_handleOutsideClick","_this$_productCardDiv","timeoutInterval","images","getElementsByClassName","Array","from","removeAttribute","activePointContainer","activePointDetailsContainer","imageMapper","overlay","productCard","productCardleftPosition","productCardtopPosition","detailsContainer","detailsContainerCta","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","handleAdditionalLinkText","_this$props$config$ad","activeImageView","left","focusOnCheckoutError","checkoutErrorRef","checkoutState","getCheckoutState","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","CheckoutModule","ErrorComponent","getInput","address","_addressPurposes$find","addresses","onAddressOptionChange","selectedAddress","addressPurposes","addressTypeDescription","AddressTypeValue","purpose","AddressType","ichecked","additionalAttributes","checked","addressChangeCheckboxAriaLabel","AddressInputComponent","additionalAddributes","getAddressSelectItems","addressFormat","SelectItem","showItems","AddressShow","getAddressFormat","ThreeLetterISORegionName","AddressSelect","onCancel","onSave","onAddAddress","onShipMultipleAddresses","hasExternalSubmitGroup","multipleAddressShippingEnabled","SelectAddress","addButton","AddressButtonComponent","addressAddNewButtonText","addressAddButtonText","addressAddNewButtonAriaLabel","addressAddButtonAriaLabel","shipMultipleAddressesButton","addressShipMultipleText","addressShipMultipleAriaLabel","isShowSaveButton","saveButton","addressSaveButtonText","addressSaveButtonAriaLabel","isShowCancelButton","cancelButton","addressCancelButtonText","addressCancelButtonAriaLabel","ShipMultipleAddressesTableHeading","isChecked","componentClassName","getOnChange","clickHandler","scope","maxWidth","selectAllRowsText","paddingLeft","isAllSelected","border","transform","clearSelectionButton","productNumber","textAlign","productUnitPrice","productQuantity","productAddress","onSelectLineHandler","shipMultipleAddressesLine","onSelect","ShipMultipleAddressesLineView","customerAddresses","shippingLineImage","onShippingAddressChange","ShippingAddress","selectLine","renderProductImage","productInfo","renderProductInfo","renderProductPrice","renderProductError","FullAddress","_context$actionContex","_context$request","dimensionsLine","OOS","outOfStockProductErrorMessage","UNASSORTED","unavailableProductErrorMessage","NONE","AddressShipMultiple","shippingLines","shippingLineImages","selectedShippingLines","onSelectAll","onClear","onBulkShippingAddressChange","onShipSingleAddress","shipMultipleAddressLines","ShipMultipleAddress","shipSingleAddressButton","addressShipSingleText","addressShipSingleAriaLabel","clearSelectionButtonText","clearSelectionButtonAriaLabel","every","addressDropdown","chooseAddressForSelectedItemsText","chooseAddressForSelectedItemsAriaLabel","noAddressSelectedAriaLabel","hidden","ProductsTable","ProductsTableRow","ProductsTableHeading","headers","addressSelectAllRowsText","addressProductNumberText","addressProductText","addressProductUnitPriceText","addressProductQuantityText","addressProductAddressText","_renderProductListHeader","_line$product","_line$cartLine","currentLineProps","saveAndContinueBtnLabel","AddressBillingCheckbox","AddressBillingHeading","CheckoutBillingAddress","countryRegionId","countryRegions","defaultAddressType","_onSuggestionSelected","_clearAddressFields","getTranformedAddress","stateProvinceInfo","addUpdateAddress","Street","ZipCode","CountyName","City","State","DistrictName","_this$autoSuggest","autoSuggest","excludedAddressFields","includes","_clearValidation","validationError","onAddressAddUpdate","validateAddressFormat","_dataInitialize","reaction","_data$countryRegions$","_data$addressPurposes","countryStates","_data$countryStates$r","_renderAddOrUpdateAddress","_this$addUpdateAddres","AddressAddUpdate","addressType","Billing","defaultCountryRegionId","addressActionResponse","dropdownDisplayData","getPrefilledAddressDropdownData","addressStateDefaultSelectionText","_onAddressAddUpdateInputChange","onDropdownChange","_onAddressAddUpdateDropdownChange","moduleState","_onSubmitAddress","_resetView","_onCountryChange","_this$autoSuggest2","twoLetterIsoRegionName","getTwoLetterISORegionName","TwoLetterISORegionName","changeAutoSuggestionCountryCode","_getAddressFormatExcludeList","addressFormatExcludeList","showAddressType","AddressItemType","IsPrimary","_attachMapAutoSuggest","storeSelectorStateManager","_this$autoSuggest3","isMapApiLoaded","attachAutoSuggest","_getStateProvinces","currentOperation","AddressOperation","Add","Update","addressCommon","getStateProvinces","some","StateId","_initModuleState","_this$props$data$chec","init","isBillingAddressRequried","billingAddress","isBillingAddressSameAsShippingAddress","checkout","isBillingAddressSameAsShipping","_updateCurrentOperation","Show","_updateModuleState","isCartContainsItemsForShipping","shippingAddress","_onBillingAddressSameAsShippingChange","currentTarget","_this$props$data$chec2","_this$props$data$chec3","setHasError","shouldEnableSinglePaymentAuthorizationCheckout","isPaymentSectionContainerHasError","updateIsBillingAddressHasError","newIsBillingAddressHasError","_setBillingAddress","information","onUpdating","newBillingAddress","updateBillingAddress","operation","onReady","_setErrorMessage","List","AddressCommon","AddressFormat","AddressMetaData","isShowAddress","isShowAddOrUpdateAddress","isShowSameAsShippingCheckbox","_this$props$data$chec5","autoSuggestionEnabled","autoSuggestOptions","_setDefaultCountryRegionId","isUpdating","_this$props$data$chec4","isDisabled","removeBillingAddress","onDisable","BingMapsApiKey","BingMapsEnabled","options","ChannelCountryRegionISOCode","DefaultLanguageId","_loadMapAPI","_this$props$data$stor","loadMapApi","_this$autoSuggest4","_this$props$data$stor2","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec6","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec7","checkoutErrorFocus","_this$props$data$stor3","_this$autoSuggest5","disposeAutoSuggest","_shouldHideBillingAddressForOBO","hasError","viewState","addressBillingAddressHeading","alert","errorMessageTitle","sameAsShippingCheckbox","addressSameAsShippingAddressAriaLabel","addressSameAsShippingAddressText","showAddress","_renderShowAddress","showAddOrUpdateAddress","_this$selectedAddress","_request$channel","market","getDefaultCountryRegionId","_featureState$result","_request$channel2","_request$channel3","_this$props$data$chec8","channelDeliveryOptionConfig","retailMultiplePickUpOptionEnabled","feature","pickupDeliveryModeCode","PickupDeliveryModeCode","checkoutCart","hasInvoiceLine","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","_this$props$data$chec9","_this$props$data$chec10","getLoyaltyAmount","loyaltyAmount","getGiftCardTotalAmount","giftCardExtends","reduce","giftCard","Balance","getCustomerAccountAmount","_checkoutState$custom","customerAccountAmount","shouldPaidByCard","checkoutResult","paymentTenderType","tokenizedPaymentCard","isPaidByOtherPaymentSource","paymenTenderType","_this$props$data$chec11","_this$props$data$chec12","isPaymentVerificationRedirection","isCheckoutCallFailed","EnabledPaymentsForOBO","PaymentInstrument","observable","computed","withModuleState","AddressDetail","_ref2","AddressForm","AddressItem","AddressError","CheckoutPickupCartLines","moduleClassName","cartLines","itemTitle","isMultipleAddressShippingEnabled","isMobileCheck","isMobileView","cartLinesForShipping","getGroupByDelivery","groupBy","shippingAddressId","renderShipMultiAddressView","headingAfterMultiSelectAddressSelect","isShowQty","lineId","productQuantityInfo","quality","CheckoutShippingAddress","_data$featureState$re2","addressListSelectedAddress","multiplePickupStoreSwitchName","updated","shippingLine","_shippingLine$cartLin","addressRecordId","shippingGroups","updatedCartLine","updateIndividualAddresses","cartline","_shippingLine$cartLin2","_initPickupGroup","pickupCartLines","_getCartLinesforDelivery","_getProductsByCartLines","x","shippingGroupsBuffer","initialShippingLineSelection","addressFormatItem","formatAddress","_data$address$result","_data$featureState$re","_isDelivery","_isNotPickupMode","FulfillmentStoreId","_this$props$context$r","pickupDeliveryMode","pickupMode","productInputs","ObjectExtensions","isNullOrUndefined","ProductInput","getSimpleProducts","_renderShipMultipleAddresses","onSaveHandler","onCancelHandler","cartlineImages","_line$cartLine$LineId","_line$product$Primary","_line$product2","_line$product3","_line$cartLine$Quanti","isAuthenticatedFlow","onCancelButtonHandler","resetSelectedShippingLines","Shipping","_renderSelectAddress","onShipMultipleAddressesHandler","onAddAddressHandler","_onAddressOptionChange","_goToShipMultipleAddresses","_goToAddAddress","_onSelectAddress","_onAddressAddUpdateSubmit","response","_isNewAddress","updateCustomerAddress","addCustomerAddress","resolve","_clearError","_onAddOrUpdateSuccess","_getDefaultAddress","_getAddressFromCartExpressPaymentDetails","expressPaymentDetailsFromCartPage","isExpressAddressAppliedInCartPage","addressFromCartExpress","getExpressAddress","getAddressFromTokenizedPaymentCard","Country","threeLetterIsoRegionName","getThreeLetterIsoRegionName","NameOnCard","Address1","StreetNumber","Address2","Zip","Phone","expressAddress","countryRegion","country","_country$ISOCode","ISOCode","CountryRegionId","_canShip","defaultAddress","shippingCartLines","isExpressCheckoutApplied","shippingAddressFromExpressCheckout","isEmpty","_setShippingAddress","updateHasShippingAddress","newHasShippingAddress","Multiple","_checkout$result$chec","_checkout$result$chec2","_channelDeliveryOptio2","_setCartLinesShippingAddress","newShippingAddress","updateShippingAddress","newCartLinesWithShippingAddress","shippingGroup","updateCartLinesShippingAddress","updateCartLineShippingAddress","updatedCartLinesObject","_getViewport","innerWidth","onPending","existingAddress","_address$Name","_address$Street","_address$StreetNumber","_address$City","_address$State","_address$ZipCode","_address$Phone","_address$ThreeLetterI","_address$AddressTypeV","_countItems","cartlines","_viewport","_updateViewport","_address","_featureState$result2","headingImages","itemsText","singleItemText","_line$cartLine$LineId2","_line$product4","_line$product$Primary2","_line$product5","_line$product6","_context$request$app2","_line$cartLine$Quanti2","_line$cartLine$Shippi","_line$cartLine$Shippi2","numberOfCartLines","itemText","lineImageProps","cartLineImages","isRetailMultiplePickUpOptionEnabled","isShowAddresList","isShowShipMultipleAddress","showAddressSelectHandler","showShipMultipleAddressesHandler","showShipMultipleAddresses","showAddOrUpdateAddressHandler","showAddressSelect","properties","ExtensionProperties","Key","StringValue","parse","get","_ref3","_renderShipMultipleAddressLine","_ref4","verticalAlign","colSpan","display","marginTop","CarouselModule","_handleDismissCarousel","cookies","dismissCarousel","slots","content","closeNow","_onExiting","_onExited","newIndex","closeAnimation","handleDismissCarousel","handleOnExited","handleOnExiting","retrieveItems","renderModuleAttributes","pause","pauseOnHover","ride","transitionType","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","flipperPrevious","directionTextNext","flipperNext","keyboard","HeaderPreferredStore","modalCloseButtonRef","handleClick","_findPreferredStoreOnClick","storeSelector","storeName","preferredStore","StoreName","headerPreferredStoreText","headerPreferredStoreAriaLabel","modules","storeSelectorId","keys","openDialog","showMapViewLink","parentElementRef","onLocationSelected","orgUnitLocation","Logo","_renderLogo","rel","_renderImage","imagePropertyName","shouldSkipToMainImage","NavIcon","toggleNavBar","mobileHamburgerAriaLabel","isExpanded","targetId","Header","isB2BSite","_this$props$config$my","myAccountLinks","popOverRef","_toggleNavbar","_togglePopover","_keydown","mobileMenuCollapsed","signinPopoverOpen","hasSigninerror","isChannelTypeB2B","displayName","workerName","customerName","_this$props$data$empl","worker","employee","_this$props$data$acco","customer","accountInformation","FirstName","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","signInCustomerNotAuthorizedTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","instance","addNotification","ErrorNotification","cartLabel","cartQtyLabel","logoLink","logoImage","shouldShowWishlistCount","disableTooltip","headerToggleClass","headerClassName","navbarKey","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","currentDistributorSlot","logo","wishListIconDesktop","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","wishListIconMobile","cartIcon","CartIconComponent","navIcon","menuBar","search","siteOptions","HeaderTag","headerAriaLabel","HeaderContainer","HeaderTopBarContainer","Divider","MobileMenuContainer","Modal","wrapClassName","MobileMenuHeader","ModalHeader","MobileMenuBodyContainer","ModalBody","MobileMenuLinksContainer","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","Popover","placement","signInLink","_getSigninButton","signOutLink","_getSignOutButton","isOBORequest","switchCustomerLink","_getSwitchCustomerButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","accountLinks","_getAccountLinks","currentDistributor","slotName","SignIn","signInLinkText","signInUrl","signInLinkAriaText","_user$signOutUrl","SignOut","signOutLinkText","signOutUrl","signOutLinkAriaText","SwitchCustomer","isOBOAccountSelected","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","getBusinessPartnerSelectionUrl","removeAccountSelectionCookie","shoppingAsText","url","param","delete","retailServerErrorCode","signUpCustomerNotFound","signUpMultipleCustomerFound","signInCustomerNotAuthorized","retailServerErrorMessage","MyProfile","cta","_renderReactFragment","slot","_renderDesktopAccountBlock","OrderTemplateActions","onRemoveOrderTemplate","removeOrderTemplateActionHandler","OrderTemplateRender","orderTemplate","removeFromOrderTemplateListText","orderTemplateState","orderTemplateImage","_renderOrderTemplateImages","orderTemplateLines","orderTemplateAriaLabel","orderTemplateName","_getOrderTemplatePageUrl","_getUrlSync","separator","totalLines","AddOrderTemplateToCartComponent","addToBagText","dialogStrings","isMultipleCatalogFeatureEnabledInHq","orderTemplateStatusMessage","onClickHandler","_line$productListLine","_line$fullProduct$Pro","_line$fullProduct","_line$fullProduct2","_line$fullProduct$Pro2","_line$fullProduct3","_getFallbackImageUrl","_line$fullProduct4","fullProduct","_updateProductUrlCatalog","productListLine","productDetails","OrderTemplateListStatusMessage","modalCloseButtonReference","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","useState","onCreateButtonClick","createOrderTemplateText","OrderTemplateNameDialog","modalOpen","isUpdateDialog","setModalOpen","createOrderTemplateDialogResources","onSuccess","onOrderTemplateCreated","OrderTemplateList","_isChannelMultipleCatalogsFeatureEnabled","_reloadPage","reload","_onRemoveFromOrderTemplateList","productListId","orderTemplates","p","productList","deleteAsync","headerStatusMessage","deleteOrderTemplateFailedText","_heading$text","_heading$tag3","emptyOrderTemplateText","createNewTemplateButtonText","orderTemplatesData","orderTemplateListHeading","orderTemplateListTitle","Spinner","msg","progressNotificationText","Heading","_heading$tag2","createOrderTemplateButton","CreateNewTemplateButtonComponent","_generateOrderTemplateNameDialogResources","templateHeaderStatusMessage","OrderTemplates","OrderTemplate","_renderOrderTemplateList","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","currentTemplateProps","addToBagButtonText","closeWindowButtonText","addToCartFailureMessage","addToCartSuccessMessage","addToCartProcessMessage","orderTemplateErrorMessage","linesAddedToCartDialogResources","viewCartButtonText","orderTemplateCloseButtonText","linesAddedToCartHeaderItemsOneText","linesAddedToCartHeaderLinesOneText","linesAddedToCartHeaderLinesFormatText","linesAddedToCartHeaderMessageText","OrderTemplateListView","_renderOrderTemplate","CONTENT","AddLineToTemplate","productCatalogs","selectedProduct","selectedCatalogId","addLineButtonRef","_renderSearchForm","searchButtonAriaLabel","searchModalPlaceholderText","selectCatalogTitleText","_onSearchSubmit","htmlFor","_onCatalogSelectionChange","_getCatalogNodes","autoFocus","_onInputChange","_get","Loading","_getSearchResults","NotFound","ProductList","_onQuantityChangeHandler","selectedQuantity","_onSelectItem","varianteInput","SelectedVariantInput","productVariant","getSelectedVariant","_getProductDimensions","selectedProductDimensions","ProductConfiguration","_onBackButtonClickHandler","_highlightSearchTerm","parsedName","unescape","__html","_resultCountText","searchResultsCountVerbage","searchResultsCountSubject","_addItemToTemplateHandler","orderTemplateId","AddItemToOrderTemplateInput","addItemToOrderTemplate","reloadPage","_toggleModalHandler","_getCatalogs","onComponentDidMount","_this$searchTextInput","onComponentDidUpdate","_this$searchTextInput2","showBackArrow","addLineModalLinkText","backToResultsText","modalProps","_renderContent","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","renderResultCountText","notFoundSearchErrorNotice","notFoundSearchErrorRedediation","NotFoundComponent","searchErrorMessage","catalogs","getCatalogId","validateCatalogId","productCatalog","isSelected","selected","searchCriteriaInput","IncludeAttributes","searchByCriteriaAsync","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","Dropdown","selectMenu","_onChanged","selectedIndex","dropdownId","selectId","selectedValue","dropdownList","dropdownName","OrderTemplateQuantity","extraClass","getChangeHandler","_onIncrementalChange","updatedQuantity","selectedDimensions","_getDimensionsError","dimensionMissingError","_addToTemplateHandler","isBusy","showAddConfirmation","errors","missingDimensions","ProductListId","addToTemplateDuplicateError","addToTemplateGenericError","_onQuantityChange","totalPrice","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","_onDimensionChanged","_this$state$errors","remainingDimensionsErrors","selection","buttonDisabled","mappedDimensions","variantProduct","dimensionInput","variantDimensions","availabilityInput","ProductAvailabilitiesForSelectedVariantInput","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","priceInput","PriceForSelectedVariantInput","getPriceForSelectedVariant","productAvailableQuantity","unitPrice","sort","a","b","_getDropdownName","productDimensionTypeConfiguration","_product$Name2","addItemToTemplateText","addLineProductUnitPricePrefix","quantitySelectLabel","addLineProductUnitOfMeasurePrefix","totalPriceLabel","isMultipleCatalogSelect","_formatPrice","_getDimensionsNodes","ModalFooter","_getConfirmationMessage","selectedDimensionNames","addToTemplateConfirmation","values","_this$state$errors2","unshift","assertive","selectProductButtonText","_generateImageUrl","_props$context$reques","primaryImageSource","fallBackImg","ProductSelectButton","setBusy","getClickHandler","OrderTemplateBulkActions","isAddDisabled","isRemoveDisabled","addHandler","onAddSelectionToBag","removeHandler","onRemoveSelection","static","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","onAddToBag","getAddToBag","getRemoveItem","PopUp","removeFromOrderTemplateLinesText","moreButtonText","viewProductDetailsText","showMobile","setShowMobile","toggleDetailsDisplayed","getActionButton","removeButtonClassName","addButtonClassName","getDesktopActionButton","ExtraActionsPopup","showActions","setShowActions","actionsContainerClassName","OrderTemplateMobileLineView","UnitOfMeasure","productLineCatalog","renderProductCatalog","productQuantityView","_generateQuantity","onChangeHandler","onChangeQuantity","isQuantityDisabledForUpdate","isB2b","catalog","_renderProductError","_orderTemplateLine$fu","OrderTemplateLinesStatusMessage","OrderTemplateTableHeading","checkedLines","lines","productLineCatalogName","productUOM","productActions","OrderTemplateLines","_onRemoveSelection","removeSelectedFailureMessage","removeSelectedSuccessMessage","productSelection","productListLines","maxWaitTimeInMilliSeconds","removeProductListLinesAsync","_this$props$data$orde","substr","_onAddSelectionToBag","productLine","_productLine$fullProd","_productLine$fullProd2","_productLine$fullProd3","_productLine$fullProd4","_productLine$productL","ProductTypeValue","_addItemToBag","_getCurrentUrl","reqContext","requestUrl","onCloseHandler","isItemAddedToOrderTemplateOpen","_renderItemAddedToCartDialog","itemAddedToCartDialogData","ItemAddedToCartDialog","_generateItemAddedToCartDialogResources","_renderPagination","itemsPerPage","skipCount","_getCurrentPageNumber","totalItems","previousText","nextText","UncontrolledPagination","paginationAriaLabel","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","_toggleDetailsDisplayed","isDetailsDisplayed","detailedProductView","absoluteUrl","_changeQuantity","orderTemplateLinesData","orderLineIndex","findIndex","newProductListLine","prevQuantity","_objectWithoutProperties","_excluded","updateProductListLinesAsync","list","newLine","updatedLines","updatedOrderTemplate","ProductListLines","ActiveOrderTemplateLinesInput","editOrderTemplateLineQuantityError","priceResult","AsyncResult","reject","isMiniCart","addToCartBehavior","_cart$result","_cart$result2","cartLineQuantity","defaultMessage","_removeItemFromOrderTemplateLines","featureStates","getFeatureState","createGetFeatureStateInput","_featureStates$find","_renameTemplate","_removeTemplate","_orderTemplate$result","newLink","paginationPreviousText","paginationNextText","isConfirmAddSelectionToBagModalOpen","emptyOrderTemplateLinesText","errorGettingOrderTemplateLines","orderTemplateResult","_isFirstPage","orderActions","_renderOrderTemplateActions","bulkOrderLineActions","_getOrderTemplateLineActions","productsStatusMessage","orderLines","updateQuantity","debounce","pagination","itemAddedToCartDialog","_product$fullProduct","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productActionsText","_generateLinesAddedToCartDialogResources","itemAddedToCartHeaderItemOneText","itemAddedToCartHeaderItemFormatText","itemAddedToCartHeaderMessageText","deleteTemplateButtonText","addTemplateToBag","renameTemplate","removeTemplate","actionsSplitButton","OrderTemplateActionsView","renameOrderTemplateTitleText","cancelBtnLabel","skip","selectOneRowText","addOrderTemplateItemToBagButtonText","removeItemFromOrderTemplateButtonText","deleteButtonText","addToBagButton","extraActionsPopup","popUp","shouldDisable","OrderTemplateLineView","quantityLabel","disableElement","pointerEvents","opacity","toggleDetails","fade","applicationNode","QuickOrderDrawer","_toggle","isManuallyToggled","collapseProps","drawerGlyphClass","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","children","drawerClass","toggleButtonProps","block","_generateDrawerButtonInnerMarkup","Collapse","collapseState","drawerButtonTextClass","toggleButtonClassName","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","onToggle","QuickOrderFormComponent","productTextInput","quantityTextInput","quickOrderState","disableAddtoCart","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","addQuantityPlaceholderText","handleQuantityChange","handleAddToCartClick","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","quantityNode","addToCartBtn","stateMessage","messageText","QuickOrderProduct","simpleProduct","QuickOrderDesktopHeaderCellsComponent","columnWithNumberClassName","quickOrderProductNumberText","quickOrderProductText","quickOrderUnitPriceText","quickOrderUnitOfMeasureText","quickOrderQuantityText","quickOrderTotalText","quickOrderActionsText","QuickOrderMobileHeaderCellsComponent","QuickOrderTableHeaderComponent","rowClassName","headerCells","QuickOrderTableRowProductImageComponent","_props$data$product$P","_props$imageSettings","containerClassName","QuickOrderExtraActionsPopupComponent","QuickOrderDesktopTableRowCellComponent","_product$Dimensions","_cartLine$LineId","quickOrderProductDimensionsSeparator","UnitOfMeasureSymbol","IncrementalQuantity","quickOrderInputQuantityAriaLabel","quickOrderDecrementButtonAriaLabel","quickOrderIncrementButtonAriaLabel","isGiftCard","quickOrderRemoveItemButtonAriaLabel","QuickOrderMobileTableRowCellComponent","quickOrderQuantityMobileText","QuickOrderTableRowComponent","QuickOrderTableComponent","setIsMobile","quickOrderProducts","updateViewport","quickOrderProduct","QuickOrder","dimensionUpdateQueue","FinitePromiseQueue","initializedDimensions","Set","cssClassNameConfigure","quickOrderCallbacks","initializeDimension","initializedDimension","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","_this$state$productDi","size","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","changeUpdatingDimension","isUpdatingDimension","productResponse","inputQuantityText","quantityInput","cancellableDebounce","isQuickOrderFormExpanded","getScanResult","GetScanResultInput","ProductDimensionFull","quickOrderAddedToCartSuccessMessage","quickOrderAddedToCartFailureMessage","_validateCart","defaultDeliveryOption","_updateAvailability","shouldValidateQuantityLimits","_shouldValidateQuantityLimits","inputProductText","_getMaxQtyMessage","_featureStatuses$find","_featureStatuses$find2","_featureStatuses$find3","featureStatuses","_getConcatenatedMaxQtyMessage","quickOrderMaxQuantityLimitText","quickOrderAlreadyItemQuantityText","_handleQuantityChange","_this$state$productRe","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","configureErrors","errorState","newProduct","productAvailable","_getDimensionErrorString","dimensionTypeValue","quickOrderproductDimensionTypeColorErrorMessage","quickOrderproductDimensionTypeConfigurationErrorMessage","quickOrderproductDimensionTypeSizeErrorMessage","quickOrderproductDimensionTypeAmountErrorMessage","quickOrderproductDimensionTypeStyleErrorMessage","_updateProductAvailability","_productResponse$Dime","_getConfigureErrors","quickOrderWrongQuantityErrorMsg","quickOrderOutofStockErrorMsg","quickOrderFormClass","quickOrderFormProductContent","quickOrderFormMsgContent","quickOrderModuleHeading","quickOrderModuleDescription","quickOrderAddtobag","quickOrderProductQuantityInputLabel","quickOrderProductInputLabel","quickOrderProductDimensionTypeColor","quickOrderProductDimensionTypeConfiguration","quickOrderSelectDimensionFormatString","quickOrderProductDimensionTypeSize","quickOrderProductDimensionTypeStyle","quickOrderProductDimensionTypeAmount","quickAddQuantityPlaceholderText","productConfigureResources","selectDimensionFormatString","quickOrderProps","drawer","quickOrderForm","quickOrderList","_renderQuickOrderTable","configure","getProductConfigure","_initQuickOrderProducts","_cart$cart$CartLines","validValues","tableClassName","productInventoryInfo","addedQuantity","_item$ItemId","_this$state$productRe2","renderConfigure","containerProps","dropdowns","renderConfigureDropdown","dropdown","labelContainerProps","select","renderForm","quickOrderProductContent","quickOrderMsgContent","tenantId","inputIsValid","trace","serviceEndpoint","sendRequest","userReviewData","Authorization","authorization","SubmitUserReviewInput","onClickSubmit","ReviewModal","SubmitReview","submitButtonAttribute","Cancel","cancelButtonAttribute","modal","modalCSS","classNames","onModalToggle","returnFocusRef","returnRef","modalHeader","modalHeaderNode","modalFooter","modalBody","discardReviewButtonText","submitButton","submitDisabled","submitReviewButtonText","ratingsInput","ratingsLabel","titleInput","titleLabel","textInput","textLabel","privacyPolicyUrl","privacyPolicyLink","inputRow","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","isSeparatorAtStart","startsWith","isSeparatorAtEnd","endsWith","PrivacyPolicy","privacyPolicyAttribute","privacyPolicyTitle","submitReview","onReviewComplete","trim","onReviewSubmission","getRnrPartnerId","userEmail","emailAddress","userName","getRnrAuthEndpointId","submitUserReview","review","submittedDateTime","Date","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","barItemAriaLabel","starLabel","bar","Progress","buttonProps","AverageRatingNumber","summary","averageRating","TotalReviews","RatingsHistogram","selectFilterBy","completeClass","classname","histogramItems","averageRatingAriaLabel","hideCount","averageNumber","totalReviews","ratingsSummaryProps","histogramProps","filterKey","createRatingsReviewsStateInput","histogramItem","authToken","requestBody","concernCategory","requestHeader","isHelpful","ReviewConcernCategory","ReportReviewConcernInput","ReviewCount","currentPage","reviewsCount","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","ceil","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","reportConcernDropdownOptions","radioPairs","pairs","option","inputId","reportedKey","onRadioChange","reviewRatingNarratorText","voteHelpfulButton","isVoted","isVotedFor","votedReviews","approved","isUserReview","isOboRequest","yesButtonText","noButtonText","voteCount","onClickMethod","updateReviewHelpfulness","editButton","toggleWriteReviewModal","editReviewCardText","renderDate","date","DateTimeFormat","month","day","year","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","header","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","SearchState","ProductListInventoryFilteringOptions","_ctx$requestContext$a","productSearchCriteria","productListInventoryDisplay","HideOOS","inventoryRefinerValue","getInventorySortableRefinerValue","channelInventoryConfiguration","ProductAvailabilitySortableAttributeRecordId","DataTypeValue","AttributeDataType","TrueFalse","LeftValueBoundString","RightValueBoundString","UnitText","RowNumber","Count","RefinerSourceValue","ProductRefinerSource","Attribute","getInventoryConfigurationAsync","Refinement","shouldShowFullPath","_categoryRefiners$Val","queryUrl","SourceValue","_item$Value","thumbnail","_renderThumbnail","_props$resources","_isLoadingNode","loadingText","autoSuggestResultLoadingMessage","SpinnerSize","medium","labelPosition","_loadSuggestions","_handleCancelSearchFocused","isLoadingAutoSuggest","_initSuggestionTypes","_suggestions$AllSearc","_suggestions$AllSearc2","_suggestions$AllSearc3","shouldShowFullCategoryPath","_item$RefinerRecordId","handleCancelSearchFocused","isLoadingNode","unique","validSuggestions","loadSuggestionsRequestId","_getSearchSuggestions","_updateSearchRefiners","ProductsDataActions","SocialShareItem","_getSocialShareItem","viewprops","SocialShareItemElement","icon","socialMedia","SocialMediaComponent","SocialMedia","Facebook","postUrl","Twitter","Pinterest","Linkedin","Mail","SocialShareItemView","getAdditionalContentItems","additionalContentItemContainer","videoPlayerAdditionalContent","additionalContentItems","VideoPlayer","isMobileDevice","Viewport","video","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","seekBarLabel","videoTimeDurationLabel","closedCaptionLabel","videoMetaData","_video$_links","videoId","duration","playTime","posterframeUrl","_links","binaryReferences","videoBinaryReferences","videoPlayerData","metaData","player","Player","playerData","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainerCTA","handleParagraph","handleLink","handleAdditionalLink"],"sourceRoot":""}