{"version":3,"file":"static/js/8.eed82d189defbb168388.chunk.js","mappings":"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","sources":["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-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/themes/citta/utilities/quantity/Quantity.tsx?4279","webpack://Citta2.0/./src/themes/citta/views/components/cartlineitem.component.tsx?ca68","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/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/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Citta2.0/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Citta2.0/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Citta2.0/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Citta2.0/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Citta2.0/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","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":["/*!\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 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;","import { debounce } from 'lodash';\r\nimport * as React from 'react';\r\nimport { IQuantityProps } from './Quantity.props';\r\n\r\ninterface IQuantityState {\r\n currentInput: number;\r\n}\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity\r\n */\r\n\r\nexport default class Quantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1,\r\n decrementGlyphClass: 'fas fa-minus',\r\n incrementGlyphClass: 'fas fa-plus'\r\n };\r\n\r\n private inputRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount || 1 };\r\n this._onIncrement = this._onIncrement.bind(this);\r\n this._onDecrement = this._onDecrement.bind(this);\r\n this._handleChange = this._handleChange.bind(this);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\r\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\r\n this.setState({\r\n currentInput: this.props.currentCount || 1\r\n })\r\n const disabled = this.state.currentInput === this.props.min;\r\n const incDisabled = this.state.currentInput === this.props.max;\r\n const currentValue = this.state.currentInput;\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
\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;","/*!\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 { AddOrderTemplateToCartComponent, ILinesAddedToCartDialogResources } from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductList, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getFallbackImageUrl,\n getProductUrlSync,\n OrderTemplate,\n OrderTemplateLine,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateActionMessageState } from '../order-template-list';\n\nexport interface ISingleOrderTemplateProps extends ProductList {\n orderTemplateState: IOrderTemplateActionMessageState;\n name?: string;\n orderTemplate: OrderTemplate;\n context: ICoreContext;\n imageSettings?: IImageSettings;\n enableImageProductLink?: boolean;\n removeFromOrderTemplateListText: string;\n addToBagText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n handlers: {\n onRemoveOrderTemplate(id: string): void | undefined;\n onDismiss(): void;\n };\n resources: {\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n telemetryContent?: ITelemetryContent;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n}\n\nexport interface ISingleOrderTemplateViewProps {\n key: string;\n orderTemplateImage: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n orderTemplateStatusMessage?: React.ReactNode;\n orderTemplateName?: React.ReactNode;\n orderTemplateAriaLabel?: string;\n orderTemplateHeaderDivider?: React.ReactNode;\n}\n\nconst _removeItemFromOrderTemplateList = (props: ISingleOrderTemplateProps): void => {\n const { onRemoveOrderTemplate } = props.handlers;\n const { itemKey } = props;\n\n onRemoveOrderTemplate && itemKey && onRemoveOrderTemplate(itemKey);\n};\n\nconst OrderTemplateActions = {\n removeOrderTemplate: _removeItemFromOrderTemplateList\n};\n\n/**\n * Remove order template action.\n * @param input -Single order template props.\n * @returns Set remove order template.\n */\nconst removeOrderTemplateActionHandler = (input: ISingleOrderTemplateProps) => () => {\n OrderTemplateActions.removeOrderTemplate(input);\n};\n\nexport const OrderTemplateRender = (input: ISingleOrderTemplateProps): ISingleOrderTemplateViewProps | null => {\n const {\n Id,\n orderTemplate,\n removeFromOrderTemplateListText,\n orderTemplateState,\n handlers,\n name,\n imageSettings,\n context,\n telemetryContent,\n enableImageProductLink\n } = input;\n\n if (!Id) {\n return null;\n }\n\n const _getOrderTemplatePageUrl = (): string => {\n const url = getUrlSync('ordertemplate', context.actionContext) ?? '';\n const separator = url.includes('?') ? '&' : '?';\n if (Id) {\n return `${url}${separator}id=${Id}`;\n }\n return '';\n };\n\n const { onDismiss } = handlers;\n\n return {\n key: `${Id}-template`,\n orderTemplateImage: _renderOrderTemplateImages(context, orderTemplate.orderTemplateLines, imageSettings, enableImageProductLink),\n orderTemplateAriaLabel: _renderAriaLabel(input),\n orderTemplateName: (\n
\n \n
\n {orderTemplate.totalLines}\n {` `}\n line items\n
\n
\n
\n ),\n addToCartButton: (\n
\n \n
\n ),\n removeButton: (\n \n ),\n orderTemplateStatusMessage: orderTemplateState && orderTemplateState.isOpen && orderTemplateState.userMessage && (\n
\n \n {orderTemplateState.userMessage}\n \n
\n )\n };\n};\n\n/**\n * On image click handler.\n * @param productUrl -Product url value.\n * @returns Assign window location.\n */\nconst onClickHandler = (productUrl: string) => () => {\n window.location.assign(productUrl);\n};\n\nconst _renderOrderTemplateImages = (\n context: ICoreContext,\n orderTemplateLines?: OrderTemplateLine[],\n imageSettings?: IImageSettings,\n enableImageProductLink?: boolean\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n if (orderTemplateLines) {\n const count = orderTemplateLines.length < 4 ? orderTemplateLines.length : 4;\n\n return (\n
\n {orderTemplateLines?.slice(0, count).map(line => {\n const productUrl = line.fullProduct\n ? _updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line?.productListLine?.CatalogId)\n : '';\n\n return (\n \n );\n })}\n
\n );\n }\n return
;\n};\n\n// This method is used to update the product url with the catalogId\nconst _updateProductUrlCatalog = (productDetails: SimpleProduct, context: ICoreContext, catalogId: number | undefined): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return fullUrl.href;\n }\n return productUrl;\n};\n\nconst _renderAriaLabel = (props: ISingleOrderTemplateProps): string => {\n const { name } = props;\n return `${name}`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateListStatus } from '../order-template-list';\n\nexport interface IOrderTemplateListStatusMessageProps {\n className?: string;\n errorType: orderTemplateListStatus;\n text?: string;\n}\n\nexport const OrderTemplateListStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

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

{text}

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

{this._resultCountText()}

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

\n {renderResultCountText()}\n

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

{text}

;\n case 'FAILED':\n return

{text}

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

{text}

;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\n\nexport interface IOrderTemplateTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productUOM: string;\n productQuantity: string;\n productActions: string;\n lines: IOrderTemplateLineViewModel[];\n isMobile: boolean;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalogName?: string;\n}\n\n/**\n * Order Template's table state.\n */\nexport interface IOrderTemplateTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IOrderTemplateTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Order Template's table heading.\n */\nexport class OrderTemplateTableHeading extends React.PureComponent {\n public state: IOrderTemplateTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateTableHeadingProps,\n state: IOrderTemplateTableHeadingState\n ): IOrderTemplateTableHeadingState {\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\n let nextState = { ...state };\n nextState = { isChecked: checkedLines === 0 };\n return nextState;\n }\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: this.state.isChecked\n },\n () => {\n this.props.clickHandler(!this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n return (\n \n \n \n \n \n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\n {this.props.productLineCatalogName}\n ) : null}\n {!this.props.isMobile ? {this.props.productImage} : null}\n {this.props.productNumber}\n {!this.props.isMobile ? {this.props.productName} : null}\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\n {!this.props.isMobile ? {this.props.productUOM} : null}\n {!this.props.isMobile ? {this.props.productQuantity} : null}\n {!this.props.isMobile ? {this.props.productActions} : }\n \n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IItemAddedToCartDialogData,\n IItemAddedToCartDialogResources,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n ItemAddedToCartDialog\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport {\n deleteAsync,\n removeProductListLinesAsync,\n updateProductListLinesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FeatureState, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n createGetFeatureStateInput,\n getFeatureState,\n getPriceForSelectedVariant,\n getProductUrlSync,\n ObjectExtensions,\n OrderTemplate,\n OrderTemplateLine,\n PriceForSelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n UncontrolledPagination\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport { action, computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n IOrderTemplateActionsProps,\n IOrderTemplateActionsViewProps,\n IOrderTemplateLineProps,\n IOrderTemplateLineViewProps,\n IOrderTemplateTableHeadingProps,\n OrderTemplateActionsView,\n OrderTemplateLinesStatusMessage,\n OrderTemplateLineView,\n OrderTemplateMobileLineView,\n OrderTemplateTableHeading\n} from '../..';\nimport { ActiveOrderTemplateLinesInput } from './actions/get-order-template';\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\nimport { IOrderTemplateData } from './order-template.data';\nimport { IOrderTemplateProps, IOrderTemplateResources } from './order-template.props.autogenerated';\nimport Spinner from './components/add-line/spinner';\n\nexport interface IOrderTemplateLineActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n isItemAddedToOrderTemplateOpen: boolean;\n isConfirmAddSelectionToBagModalOpen: boolean;\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\n productSelection: IOrderTemplateLineViewModel[];\n isDetailsDisplayed: boolean;\n detailedProductView?: IOrderTemplateLineViewProps;\n isQuantityDisabledForUpdate?: boolean;\n}\n\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface IOrderTemplateViewProps extends IOrderTemplateProps {\n OrderTemplateLines: IModuleProps;\n callbacks?: IOrderTemplateLinesCallbacks;\n status?: orderTemplateLinesStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplateActions?: INodeProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductDetails?: INodeProps;\n orderLines?: IOrderTemplateLineViewProps[];\n productListLines?: ProductListLine[];\n productsStatusMessage?: React.ReactNode;\n orderActions?: IOrderTemplateActionsViewProps | null;\n resources: IOrderTemplateResources;\n pagination?: React.ReactNode;\n itemAddedToCartDialog?: React.ReactNode;\n bulkOrderLineActions?: React.ReactNode;\n isDetailsDisplayed?: boolean;\n detailedProduct?: IOrderTemplateLineProps;\n detailedProductView?: IOrderTemplateLineViewProps;\n productQuantityView?: React.ReactNode;\n addButton?: React.ReactNode;\n isMobile?: boolean;\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\n}\n\nexport interface IOrderTemplateLinesCallbacks {\n updateQuantity(itemKey: string, quantity: number): void;\n}\n\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\n isChecked: boolean;\n productQuantityView: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateLines component.\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\n */\n@observer\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\n private readonly className: string;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n constructor(props: IOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\n super(props);\n this.className = 'ms-order-template';\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n\n this.state = {\n itemKey: '',\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: false,\n isConfirmAddSelectionToBagModalOpen: false,\n productSelection: [],\n isDetailsDisplayed: false,\n isQuantityDisabledForUpdate: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\n window.location.assign(this.props.context.request.user.signInUrl || '/');\n }\n }\n\n @action\n public async componentDidMount(): Promise {\n this.setState({});\n const orderTemplate = await this.props.data.orderTemplate;\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\n this.setState({\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\n });\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateProps,\n nextState: IOrderTemplateLineActionMessageState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { heading, className } = this.props.config;\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\n const { orderTemplate, cart } = this.props.data;\n\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(this.className, className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n return this.props.renderView(errorProps);\n }\n\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'FAILED',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n\n return this.props.renderView(errorProps);\n }\n\n const orderTemplateResult = orderTemplate && orderTemplate.result;\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\n\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\n window.location.href = this._getOrderTemplatePageUrl();\n return null;\n }\n\n const emptyViewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'EMPTY',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources,\n orderActions:\n orderTemplateResult &&\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n }\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'SUCCESS',\n productsStatusMessage: this.state.isOpen && (\n
\n \n {this.state.userMessage}\n \n
\n ),\n heading: heading && ,\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n },\n ProductsTable: {\n className: `${this.className}__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `${this.className}-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\n ProductDetails: {\n className: `${this.className}-table-line__link`,\n tag: 'a'\n },\n orderLines: this._renderProductList(),\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n pagination: this._renderPagination(),\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n isDetailsDisplayed: this.state.isDetailsDisplayed,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n detailedProductView: this.state.detailedProductView,\n isMobile: this.isMobile\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\n line.isChecked = isChecked;\n\n const updated =\n this.state.productSelection.map(product => {\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\n line.isChecked = isChecked;\n }\n return product;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n public onSelectAll(isChecked: boolean): void {\n const updated =\n this.state.productSelection.map(line => {\n line.isChecked = isChecked;\n return line;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n private _renderProductListHeader(resources: IOrderTemplateResources): React.ReactNode {\n const {\n productImage,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productActionsText,\n selectAllRowsText,\n productLineCatalogName\n } = resources;\n const headers: IOrderTemplateTableHeadingProps = {\n productImage: productImage,\n productNumber: productNumberText,\n productName: productText,\n productUnitPrice: productUnitPriceText,\n productUOM: productUOMText,\n productQuantity: productQuantityText,\n productActions: productActionsText,\n selectAllRowsText,\n lines: this.state.productSelection,\n isMobile: this.isMobile,\n clickHandler: (isChecked: boolean) => {\n this.onSelectAll(isChecked);\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n productLineCatalogName: productLineCatalogName\n };\n\n return ;\n }\n\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\n return (\n line.isChecked)}\n onAddSelectionToBag={this._onAddSelectionToBag}\n onRemoveSelection={this._onRemoveSelection}\n isMinifiedView={this.isMobile}\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\n telemetryContent={this.telemetryContent}\n />\n );\n }\n\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n };\n }\n\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\n freePriceText: this.props.resources.freePriceText,\n originalPriceText: this.props.resources.originalPriceText,\n currentPriceText: this.props.resources.currentPriceText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private readonly _onRemoveSelection = (): void => {\n const { context, resources } = this.props;\n const { telemetry } = context;\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\n const lines = this.state.productSelection;\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\n\n if (productListLines && productListLines.length > 0) {\n const productListId = productListLines[0].ProductListId;\n\n const maxWaitTimeInMilliSeconds: number = 1000;\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\n .then(async () => {\n this.setState({\n userMessage: removeSelectedSuccessMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n this.setState({\n userMessage: removeSelectedFailureMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n });\n }\n };\n\n private readonly _getOrderTemplatePageUrl = (): string => {\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n if (this.props.data.orderTemplate?.result?.productList.Id) {\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\n }\n return '';\n };\n\n private readonly _onAddSelectionToBag = async (): Promise => {\n const lines = this.state.productSelection;\n const selectedLines = lines.filter(line => line.isChecked);\n if (selectedLines.length > 0) {\n for (const productLine of selectedLines) {\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\n const product = productLine.fullProduct?.ProductDetails ?? {\n RecordId: 0,\n ProductTypeValue: 0,\n BasePrice: 0,\n Price: 0,\n AdjustedPrice: 0\n };\n const quantity = productLine.productListLine.Quantity ?? 0;\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\n const catalogId = productLine.productListLine.CatalogId;\n await this._addItemToBag(product, quantity, itemKey, catalogId);\n } else {\n await this._addItemToBag(product, quantity, itemKey);\n }\n }\n }\n return Promise.resolve(void 0);\n };\n\n private _renderOrderTemplateActions(\n orderTemplate: OrderTemplate,\n isMultipleCatalogFeatureEnabledInHq: boolean\n ): IOrderTemplateActionsViewProps {\n const { id, typeName, context, resources } = this.props;\n const {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage\n } = resources;\n\n const orderTemplateActions: IOrderTemplateActionsProps = {\n data: { orderTemplate },\n id,\n typeName,\n context,\n telemetryContent: this.telemetryContent,\n handlers: {\n onRenameTemplate: this._renameTemplate,\n onRemoveTemplate: this._removeTemplate\n },\n isMultipleCatalogFeatureEnabledInHq,\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\n resources: {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n closeWindowButtonText,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\n }\n };\n\n return OrderTemplateActionsView(orderTemplateActions);\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\n orderTemplateDescription: '',\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\n };\n }\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n /**\n * On close handler.\n */\n private readonly onCloseHandler = () => {\n this.setState({\n itemKey: this.state.itemKey,\n userMessage: this.state.userMessage,\n statusCssString: this.state.statusCssString,\n messageGlyph: this.state.messageGlyph,\n isOpen: this.state.isOpen,\n isItemAddedToOrderTemplateOpen: false\n });\n };\n\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\n if (!this.state.itemAddedToCartDialogData) {\n return null;\n }\n const isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\n ?.IsEnabled || false;\n\n return (\n \n );\n };\n\n private _isFirstPage(): boolean {\n return this._getCurrentPageNumber() === 0;\n }\n\n private _getCurrentPageNumber(): number {\n const itemsPerPage = this.props.config.itemsPerPage || 50;\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\n }\n\n private readonly _renderPagination = (): React.ReactNode | null => {\n const { config, context, data, resources } = this.props;\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\n if (!orderTemplate) {\n return null;\n }\n\n const fullUrl = this._getCurrentUrl(context.request);\n const itemsPerPage = config.itemsPerPage || 50;\n const currentPageNumber = this._getCurrentPageNumber();\n const skipCount = currentPageNumber * itemsPerPage;\n const totalItems = orderTemplate && orderTemplate.totalLines;\n const previousText = resources.flipperPrevious;\n const nextText = resources.flipperNext;\n\n if (totalItems <= itemsPerPage) {\n return null;\n }\n\n return (\n \n );\n };\n\n private _renderProductList(): IOrderTemplateLineViewProps[] {\n const {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n priceFree,\n originalPriceText,\n currentPriceText,\n addOrderTemplateItemToBagButtonText,\n removeItemFromOrderTemplateButtonText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n inputQuantityAriaLabel,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n } = this.props.resources;\n\n const { context, telemetry, data } = this.props;\n const { catalogs } = data;\n const { imageSettings } = this.props.config;\n\n return this.state.productSelection.map((line, index) => {\n const currentProductProps: IOrderTemplateLineProps = {\n orderTemplateLine: line,\n productListLine: line.productListLine,\n price: line.fullProduct?.ProductPrice,\n error: line.error,\n shouldDisable: line.shouldDisable,\n context,\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\n productUrl: line.fullProduct\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\n : '',\n imageSettings,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n quantity: line.productListLine.Quantity!,\n handlers: {\n onAddToBag: this._addItemToBag,\n onRemoveItem: this._removeItemFromOrderTemplateLines,\n onChangeQuantity: this._changeQuantity,\n onSelect: this.onSelect.bind(this)\n },\n resources: {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText,\n inputQuantityAriaLabel,\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n },\n index,\n isMobile: this.isMobile,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogs: catalogs && catalogs.result\n };\n\n return OrderTemplateLineView(currentProductProps)!;\n });\n }\n\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\n let state = {\n isDetailsDisplayed: !this.state.isDetailsDisplayed\n };\n if (props) {\n state = {\n ...state,\n ...{\n detailedProductView: OrderTemplateMobileLineView(props)\n }\n };\n }\n this.setState(state);\n };\n\n // This method is used to update the product url with the catalogId\n private readonly _updateProductUrlCatalog = (\n productDetails: SimpleProduct,\n context: ICoreContext,\n catalogId: number | undefined\n ): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const absoluteUrl = new URL(productUrl, window.location.href);\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return absoluteUrl.href;\n }\n\n return productUrl;\n };\n\n // Dismiss alert when addingToCart/removeItem\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\n const { context, data, telemetry, config, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context) {\n if (orderTemplate?.result) {\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\n if (orderTemplateLinesData) {\n const orderLineIndex = orderTemplateLinesData.findIndex(\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return;\n }\n const prevQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n // Update mobile modal\n if (props) {\n props.quantity = quantity;\n this.setState({\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n }\n\n this.setState({\n isQuantityDisabledForUpdate: true\n });\n\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\n line.productListLine\n ])\n .then(list => {\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isQuantityDisabledForUpdate: false,\n isOpen: false\n });\n if (list) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...orderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\n updatedOrderTemplate\n );\n }\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\n telemetry.error(error);\n const userMessage = resources.editOrderTemplateLineQuantityError;\n if (props) {\n props && (props.productListLine.Quantity = prevQuantity);\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true,\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n } else {\n newProductListLine.productListLine.Quantity = prevQuantity;\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true\n });\n }\n });\n }\n }\n }\n };\n\n private readonly _addItemToBag = async (\n product: SimpleProduct,\n quantity: number,\n itemKey: string,\n catalogId?: number | undefined\n ): Promise => {\n const { context, data, resources, telemetry } = this.props;\n const { cart } = data;\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\n\n if (context) {\n if (cart.result) {\n const addProductToCartInput = {\n product,\n count: quantity,\n catalogId\n };\n\n await cart.result\n .addProductToCart(addProductToCartInput)\n .then((result: ICartActionResult) => {\n if (result.status === 'SUCCESS') {\n return getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(\n product.RecordId,\n this.props.context.actionContext.requestContext.apiSettings.channelId,\n product\n ),\n this.props.context.actionContext\n ).then(priceResult => {\n if (!priceResult) {\n return AsyncResult.reject('Failed to retrieve product price');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: !isMiniCart,\n itemAddedToCartDialogData: {\n product,\n productPrice: priceResult,\n quantity\n },\n isDetailsDisplayed: false\n });\n return AsyncResult.resolve();\n });\n } else {\n switch (result.substatus) {\n case 'MAXQUANTITY':\n if (context.app.config.maxQuantityForCartLineItem) {\n const cartLineQuantity: number | undefined =\n cart.result?.cart.CartLines &&\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\n this.setState({\n itemKey,\n userMessage:\n cartLineQuantity !== undefined\n ? maxQuantityLimitText\n .replace('{curQuantity}', cartLineQuantity.toString())\n .replace(\n '{maxQuantity}',\n context.app.config.maxQuantityForCartLineItem.toString()\n ) || defaultMessage\n : defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n } else {\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\n this.setState({\n itemKey,\n userMessage: defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n case 'INVOICEINCART': {\n this.setState({\n itemKey,\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n default:\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n }\n })\n .catch((error: Error) => {\n telemetry.warning(error.message);\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\n if (StringExtensions.isNullOrWhitespace(error.message)) {\n this.setState({\n itemKey,\n userMessage: error.message,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n } else {\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n }\n });\n }\n }\n };\n\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\n const { context, data, telemetry } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const maxWaitTimeInMilliSeconds: number = 1000;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate?.result && line) {\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (ArrayExtensions.hasElements(featureStates)) {\n isMultipleCatalogFeatureEnabledInHq =\n featureStates.find(\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n const catalogId = getCatalogId(context.actionContext.requestContext);\n if (isMultipleCatalogFeatureEnabledInHq) {\n line.productListLine.CatalogId = catalogId;\n }\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\n line.productListLine\n ])\n .then(async () => {\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n });\n } else {\n telemetry.warning(\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\n );\n }\n }\n };\n\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\n window.location.reload();\n return Promise.resolve();\n };\n\n private readonly _removeTemplate = () => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate && orderTemplate.result) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: orderTemplate.result?.productList.Id || '',\n userMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n });\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\n if (newLink) {\n window.location.assign(newLink);\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template.');\n }\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n
\n );\n };\n}\n\nexport default OrderTemplateLines;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewProps } from './components';\nimport { IOrderTemplateViewProps } from './order-template';\n\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\n const {\n OrderTemplateLines,\n status,\n statusMessage,\n heading,\n ProductsTable,\n ProductsTableHeading,\n orderLines,\n ProductsTableRow,\n productsStatusMessage,\n OrderTemplateActions,\n orderActions,\n pagination,\n itemAddedToCartDialog,\n bulkOrderLineActions,\n isDetailsDisplayed,\n detailedProductView,\n toggleDetailsDisplayed,\n resources: {\n cancelBtnLabel,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productLineCatalogName\n }\n } = props;\n\n const toggleDetails = React.useCallback(() => {\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\n }, [toggleDetailsDisplayed]);\n\n return (\n \n {heading}\n {OrderTemplateActions && (\n \n {orderActions?.addTemplateToBag}\n {orderActions?.renameTemplate}\n {orderActions?.removeTemplate}\n {orderActions?.actionsSplitButton}\n {!isDetailsDisplayed && productsStatusMessage}\n \n )}\n {bulkOrderLineActions}\n {status !== 'SUCCESS' && statusMessage}\n {ProductsTable && orderLines && orderLines.length > 0 && (\n \n \n {ProductsTableHeading}\n \n {orderLines &&\n orderLines.map(product => {\n return _renderItem(product, productQuantityText, ProductsTableRow);\n })}\n \n \n {pagination}\n \n )}\n {itemAddedToCartDialog}\n \n Product Details\n \n
    \n
  • {detailedProductView?.productImage}
  • \n
  • \n {productText}:\n {detailedProductView?.productInfo}\n
  • \n
  • \n {productLineCatalogName}:\n {detailedProductView?.productLineCatalog}\n
  • \n
  • \n {productNumberText}:\n {detailedProductView?.productNumber}\n
  • \n
  • \n {productUnitPriceText}:\n {` `}\n {detailedProductView?.productPrice}\n
  • \n
  • \n {productUOMText}:\n {` `}\n {detailedProductView?.productUnitOfMeasure}\n
  • \n
  • \n {productQuantityText}:\n {detailedProductView?.productQuantityView}\n
  • \n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\n
\n
\n \n \n \n \n
\n );\n};\n\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\n if (!product) {\n return null;\n }\n\n const {\n key,\n selectLine,\n productLineCatalog,\n productImage,\n productPrice,\n productNumber,\n addToBagButton,\n removeButton,\n productInfo,\n productUnitOfMeasure,\n productQuantityView,\n productQuantity,\n popUp,\n isMobile,\n extraActionsPopup,\n isMultipleCatalogFeatureEnabledInHq,\n disabled\n } = product;\n\n const lineVisibility = disabled\n ? {\n pointerEvents: 'none',\n opacity: 0.5\n }\n : {\n pointerEvents: 'auto',\n opacity: 1\n };\n\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\n\n return (\n \n {selectLine}\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\n {productImage}\n {isMobile ? (\n \n
{productNumber}
\n
\n {quantityLabel}:{` `}\n {productQuantity}\n
\n \n ) : (\n {productNumber}\n )}\n {!isMobile && {productInfo}}\n {!isMobile && {productPrice}}\n {!isMobile && {productUnitOfMeasure}}\n {!isMobile && {productQuantityView}}\n {isMobile && {popUp}}\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\n \n {addToBagButton}\n {removeButton}\n \n )}\n {extraActionsPopup}\n
\n );\n};\n\nexport default OrderTemplateLinesView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n
\n );\n};\n","/*!\n * 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":["WishlistItemDimension","_ref","key","className","dimensionType","dimensionValue","React","WishListItemActions","props","product","itemKey","handlers","onAddToCart","onRemoveItem","RecordId","_renderAriaLabel","price","context","resources","Name","Dimensions","productDimensionTypeColor","productDimensionTypeSize","productDimensionTypeStyle","formattedPrice","dimensions","BasePrice","freePriceText","cultureFormatter","formatCurrency","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","msdyn365Commerce","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","undefined","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","data","originalPriceText","currentPriceText","index","type","WishlistItemsStatusMessage","errorType","text","classnames","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","Math","min","productInventoryCollection","__decorate","observer","_renderItem","Node","Module","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","ariaLabel","RegExp","contentAction","etext","attribute","_generateLink","_getHighlightedText","suggestion","searchPageURL","searchQsp","formattedLink","route","indexOf","formattedText","dangerouslySetInnerHTML","getRichTextHtml","ProductSuggestionsComponent","autoSuggestProps","productSuggestionHeading","moduleType","_renderTitle","items","productAutoSuggestionHeading","Value3","DecimalValue","LiProduct","_getLiWrapper","AProduct","_getAWrapper","recid","getProductPageUrlSync","adjustedPrice","basePrice","CustomerContextualPrice","CategorySuggestionsComponent","categorySuggestionHeading","categoryAutoSuggestionHeading","format","splitValue","split","pop","_getCategoryLink","searchRefiners","urlPath","categoryRefiners","refiners","KeyName","refiner","Values","RefinerRecordId","parseInt","encodedRefiner","encodeURIComponent","JSON","stringify","compressRefiners","compressedRefinerKeys","compressedRefiners","forEach","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","attributes","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","role","autoComplete","onSubmit","UlKeyword","UlProduct","UlCategory","searchLabel","searchLabelText","label","form","autosuggestKeyword","autosuggestProduct","autosuggestCategory","callbacks","getProductSearchRefinersAsync","_renderButton","_renderForm","_renderKeywordSuggestions","_renderProductSuggestions","_renderCategorySuggestions","inputRef","_validateMin","minValue","isNaN","currentInput","currentCount","_onIncrement","bind","_onDecrement","_handleChange","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","incDisabled","max","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","renderRating","ratingId","avgRating","totalRatings","_totalRatings$toStrin","numberRatings","ratingAriaLabel","rating","roundedRating","toFixed","getRatingAriaLabel","RatingComponent","ratingCount","readOnly","ActiveProductComponent","savingsText","imageUrl","imgData","imageProps","renderProductPlacementImage","AdjustedPrice","renderPrice","description","Description","hideRating","AverageRating","TotalRatings","assembleNode","_item$links","headingNode","renderHeading","additionalContentHeading","Msdyn365","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","links","ctaLink","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","isOpenInNewTab","link","onTextChange","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","style","componentDidMount","shouldRender","_requestContext$gridS","imageData","useMap","ActiveImageConstants","ActiveImage","_defaultProductCardWidth","_defaultProdutCardHight","_activePoints","addActivePoints","_product$PrimaryImage","areaId","updateClientWidth","viewport","isMobile","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","productImageSettings","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","handleTextChange","handleParagraphChange","paragraph","renderActiveImageDetailsLinks","_telemetryContent","linkData","linkId","willOpenInNewTab","handleLinkTextChange","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","message","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","currencyCode","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","quantity","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","sm","md","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","_context$request$app","_line$cartLine$Quanti","OmniChannelMedia","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","device","Type","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","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","StringValue","parse","get","_ref3","_renderShipMultipleAddressLine","_ref4","verticalAlign","colSpan","display","marginTop","CarouselModule","_handleDismissCarousel","cookies","dismissCarousel","_next","slots","nextIndex","activeIndex","content","animating","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","carouselContainer","closeAnimation","next","previous","onIndicatorsClickHandler","handleDismissCarousel","handleOnExited","handleOnExiting","retrieveItems","renderModuleAttributes","Carousel","pause","pauseOnHover","ride","autoplay","interval","transitionType","hideFlipper","dismissEnabled","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","flipperPrevious","directionTextNext","flipperNext","keyboard","OrderTemplateActions","onRemoveOrderTemplate","removeOrderTemplateActionHandler","OrderTemplateRender","orderTemplate","removeFromOrderTemplateListText","orderTemplateState","orderTemplateImage","_renderOrderTemplateImages","orderTemplateLines","orderTemplateAriaLabel","orderTemplateName","_getOrderTemplatePageUrl","_getUrlSync","url","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","parentElementRef","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","onTelemetryClick","_getCatalogs","onComponentDidMount","_this$searchTextInput","onComponentDidUpdate","_this$searchTextInput2","showBackArrow","addLineModalLinkText","backToResultsText","modalProps","Modal","ModalHeader","_renderContent","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","renderResultCountText","ModalBody","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","Popover","placement","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","_this$props$data$feat2","itemAddedToCartDialogData","ItemAddedToCartDialog","_generateItemAddedToCartDialogResources","onClose","_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","signInUrl","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","wrapClassName","fade","applicationNode","ProductComparisonPreview","_renderGreyPlaceHolders","productData","counts","greyPlaceHoldersCount","displayGreyPlaceHolders","elements","_removeProductFromList","_this$props$data$acco","ProductComparisonState","instance","accountInformation","removeItemById","previousState","_previousState$produc","productsData","_handleCollapseClick","_previousState$isExpa","isExpanded","_hasUserInteractedWithComparison","_clearAllProductsFromTheComparison","_this$props$data$acco2","clearAll","_instanceId","_displayedInstanceId","_this$props$data$acco3","_loadProducts","listModifiedEvent","subscribe","instanceId","handler","_this$props$data$acco4","unsubscribe","_this$state$productsD","_this$props$data$prod","collapseButton","_renderCollapseButton","isMainContentReady","hasUserInteractedWithComparison","_getProdutComparisonDataByCatalogId","productsLimit","_getProductsLimit","subheaderText","productComparisonPreviewHeaderTextWithLimit","handleCollapseClick","productsMainInfo","_getProductsMainInfo","previewGreyPlaceHolders","productComparisonLink","clearAllProductsFromTheComparison","removeProductFromList","goToComparisonButton","_renderGoToComparisonButton","clearAllButton","_renderClearAllButton","_productData$filter","_this$props$data$acco5","GetProductsInPreviewProductComparisonInput","getProductsInPreviewProductComparisonAction","productDataByCatalogId","_getGreyPlaceHoldersCount","limit","placeHolder","productImageContainerClassName","tableRowClassName","productImageClassName","productNameClassName","productNameLink","_product$Dimensions","isChannelTypeB2B","removeFromComparisonButton","RemoveFromComparisonButtonComponent","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","defaultImageSettingQ","_this$state$isExpande","shouldBeExpanded","headerContainerClassName","mainContainerClassName","collapseClassName","collapseButtonClassName","footerClassName","productComparisonCompareProductsButtonText","productComparisonClearAllProductsButtonText","containerClassName","headerClassName","headerLabelClassName","tableClassName","ProductComparisonPreviewViewFunctionalComponent","_props$isExpanded","_props$productsMainIn","_props$productsMainIn2","productComparisonPreviewHeaderText","info","SpecificationDataTypeValues","ProductSpecification","CurrencyValue","_product$DateTimeOffs","isFunction","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","_specification$DataTy","specification","DataTypeValue","none","currency","_renderCurrencyCell","dateTime","_renderDateTimeCell","decimal","_renderDecimalCell","integer","_renderIntegerCell","_renderTextCell","boolean","_renderTrueFalseCell","video","BooleanValue","productComparisonProductItemSpecificationTrue","productComparisonProductItemSpecificationFalse","RemoveFromComparisonButtonFunctionalComponent","useCallback","productComparisonRemoveProductFromListAriaLabel","SelectionType","ProductClickerDirections","ProductComparison","_clearAllProductsFromComparison","_configureBoxShadowOnScroll","_this$_tableReference","_tableReference","comparisonProductCardHeader","tableHeaderClassName","tableHeaderLockedClassName","_handleScroll","_this$_tableHeaderRef","_tableHeaderReference","scrollTo","scrollLeft","_checkClickersState","_handleScrollClick","direction","_this$_tableBodyRefer","_this$_tableCellRefer","_document$body$parent","tableBody","_tableBodyReference","newLeftPosition","cellWidth","_tableCellReference","_getCellWidth","scrollPosition","ceil","minLeftPosition","maxScroll","scrollWidth","currentClickerPosition","change","hoverStateLastUpdate","Date","now","hoveringCellItemId","_handlePreviousClick","_document$body$parent2","right","_handleNextClick","_document$body$parent3","_this$_tableBodyRefer2","floor","_this$_tableBodyRefer3","_document$body$parent4","_shouldShowNextClicker","forceUpdate","_shouldShowPreviousClicker","newClickerPosition","_handleHoverIn","_hoveringCellItemId","_handleHoverOut","_goBack","backToShoppingUrl","referrer","history","back","specifications","_product$specificatio","specificationsList","allSpecifications","flatten","specificationNames","validValues","AttributeValueId","uniqueSpecificationNames","unique","allDimensions","dimensionIds","actionBarClassName","clearAllProductsFromComparison","isEmptyContent","loading","_renderLoading","actionBarContainerProps","_getActionBarContainerProps","previousClicker","_renderPreviousClicker","nextClicker","_renderNextClicker","backToShopping","_renderBackToShoppingButton","emptyComparison","emptyComparisonContentSlots","_getProductComparisonDataByCatalogId","isConsentGiven","productCountText","productComparisonCountText","productsMainInfoData","allUniqueDimensionIds","getProductsDimensionsIds","updatedDimensionProps","getUpdatedDimensionsProps","tableReference","tableHeaderReference","tableBodyReference","tableCellReference","shouldShowPreviousClicker","shouldShowNextClicker","handlePreviousClick","handleNextClick","handleScroll","handleHoverIn","handleHoverOut","uniqueDimensionIds","_getProductsDimensions","dimensionsProps","uniqueSpecifications","_getProductsSpecifications","specificationsProps","_getSpecificationProps","GetProductsInProductComparisonInput","getProductsInProductComparisonAction","_renderQuickView","_product$productInfo$","quickViewSlot","quickViews","selectedProductId","defaultImageSettingsQ","_getTableHeaderProps","isHoverModeEnabled","tableHeaderCellClassName","_getTableCellProps","cellClassName","tableCellClassName","_renderProductRating","_ratingValue$reviewsC","averageRating","ratingValue","productComparisonProductItemRatingAriaLabel","reviewsCount","shouldShowFullRatingDescription","backToShoppingLabel","_getDimensionName","dimensionId","ProductDimensionType","Color","productComparisonProductItemColorDimension","Size","productComparisonProductItemSizeDimension","Style","productComparisonProductItemStyleDimension","dimensionClassName","dimensionsRowClassName","dimensionDescription","dimensionSelectionType","dimensionsAsSwatchConfiguration","dimensionsAsSwatchType","DimensionTypes","swatch","productDimensionValues","productMainInfo","_this$props$data$prod2","renderSwatch","textValue","productsDimension","_productsDimension$di","_productsDimension$di2","dimensionItems","dimensionItem","_dimensionItem$map","currentDimensionId","swatches","swatchItem","_productMainInfo$prod","_swatchItem$Dimension2","_swatchItem$Dimension3","_swatchItem$Dimension4","_swatchItem$Dimension5","_swatchItem$Dimension6","_swatchItem$Dimension7","_swatchItem$Dimension8","_swatchItem$Dimension9","isDefaultDimension","selectedDimension","_swatchItem$Dimension","DimensionId","colorHexCode","ColorHexCode","isDefault","SwatchComponent","isSelectionEnabled","_dimensionItem$Dimens","_dimensionItem$Dimens2","productDimensionSeperatorValue","productDimensionSeparator","dimensionProps","node","specificationClassName","specificationsRowClassName","specificationValues","_productMainInfo$prod2","productSpecification","productSpecifications","productComparisonTitle","productComparisonLoadingText","productComparisonClearAllButtonAriaLabel","productComparisonClearAllButtonText","tableClickerClassName","onKeyUp","productComparisonPreviousProduct","productComparisonNextProduct","_renderRemoveFromComparisonButton","productRowClassName","currentCatalogId","productUrlLink","_product$productInfo$2","_dimension$DimensionV2","isFromCurrentCatalog","productPriceClassName","cellNewWidth","minWidth","cellContainerProps","productComparisonProductItemFreePrice","productComparisonProductItemOriginalPrice","productComparisonProductItemCurrentPrice","quickView","goToProductDetailsButton","productComparisonGoToProductDetailsButtonText","tableCellProps","tableHeaderProps","productRating","productDescription","_renderProductDescription","tableBodyClassName","tableRowContentClassName","tableRowContentInformationClassName","renderDynamicHeaderCells","headerName","tabindex","renderDynamicCells","ProductComparisonViewFunctionalComponent","_props$productsMainIn5","_props$dimensionsProp","_props$specifications","_props$productsMainIn8","_props$productsMainIn9","actionsClassName","onScroll","_props$productsMainIn3","_props$productsMainIn4","productComparisonProductItemRating","_props$productsMainIn6","_props$productsMainIn7","productComparisonProductItemDescription","specificationProps","isNullOrEmpty","productComparisonProductItemSku","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","QuickOrderExtraActionsPopupComponent","QuickOrderDesktopTableRowCellComponent","_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","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","_getConcatenatedMaxQtyMessage","quickOrderMaxQuantityLimitText","quickOrderAlreadyItemQuantityText","_handleQuantityChange","_this$state$productRe","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","keys","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","contentProps","drawer","quickOrderForm","quickOrderList","_renderQuickOrderTable","configure","getProductConfigure","_initQuickOrderProducts","_cart$cart$CartLines","productInventoryInfo","addedQuantity","_item$ItemId","_this$state$productRe2","renderConfigure","containerProps","dropdowns","renderConfigureDropdown","dropdown","labelContainerProps","select","renderForm","quickOrderProductContent","quickOrderMsgContent","tenantId","inputIsValid","trace","serviceEndpoint","locale","sendRequest","userReviewData","Authorization","authorization","SubmitUserReviewInput","onClickSubmit","ReviewModal","TelemetryConstant","SubmitReview","submitButtonAttribute","Cancel","cancelButtonAttribute","modal","modalCSS","classNames","onModalToggle","returnFocusRef","returnRef","modalHeader","modalHeaderNode","modalFooter","modalBody","discardReviewButtonText","submitButton","submitDisabled","submitReviewButtonText","ratingsInput","ratingLabel","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","rel","privacyPolicyTitle","submitReview","onReviewComplete","trim","onReviewSubmission","getRnrPartnerId","userEmail","emailAddress","userName","getRnrAuthEndpointId","submitUserReview","review","submittedDateTime","helpfulPositive","helpfulNegative","firstName","getReviewInput","GetUserReviewInput","TOGGLE_REVIEW_MODAL_BUTTON_ID","TOGGLE_EDIT_MODAL_BUTTON_CARD_ID","HistogramItems","ratingsSummary","totalRatingsCount","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","stars","totalCount","percentage","formattedPercent","Intl","NumberFormat","barItemAriaLabel","starLabel","bar","Progress","buttonProps","AverageRatingNumber","summary","TotalReviews","RatingsHistogram","selectFilterBy","completeClass","classname","histogramItems","averageRatingAriaLabel","hideCount","averageNumber","totalReviews","ratingsSummaryProps","histogramProps","filterKey","createRatingsReviewsStateInput","histogramItem","authToken","requestBody","concernCategory","requestHeader","isHelpful","ReviewConcernCategory","ReportReviewConcernInput","ReviewCount","currentPage","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","reportConcernDropdownOptions","radioPairs","pairs","option","inputId","reportedKey","onRadioChange","reviewRatingNarratorText","voteHelpfulButton","isVoted","isVotedFor","votedReviews","approved","isUserReview","isOboRequest","yesButtonText","noButtonText","voteCount","onClickMethod","updateReviewHelpfulness","editButton","toggleWriteReviewModal","editReviewCardText","renderDate","date","DateTimeFormat","month","day","year","_unused","toggleReportReviewModal","reportToggle","reportConcernText","reportedReviews","reportedText","reportedReviewId","SubmitHelpfulnessVoteInput","ReviewsList","sortByDropdownOptions","mostHelpfulSortOptionText","mostRecentSortOptionText","highestRatedSortOptionText","lowestRatedSortOptionText","filterByDropdownOptions","allRatinsFilterByOptionText","fiveStarFilterByOptionText","fourStarFilterByOptionText","threeStarFilterByOptionText","twoStarFilterByOptionText","oneStarFilterByOptionText","reviewsListCallbacks","updateReviewTitle","userReviewTitle","updateReviewText","userReviewText","updateRating","userReviewRating","onReviewSubmitted","isSuccessful","isReviewModalOpen","hasReviewError","toggleModal","_toggleReviewModal","updateReviewHelpfulnessVote","toggleReportModal","isReportModalOpen","_onReportModalOpen","_onReportModalClose","reportReview","_reportReviewCallback","updateFilterByDropdown","updateSortByDropdown","reviewsList","pagingInfo","listOfReviews","isFilterApplied","ratingsReviewsState","filterKeyValue","dropdownItemsCount","filterByOption","_userReview","_reviewCard","_reviewCards","reviewList","reviewElements","isTakenDown","isPublished","cardProps","ratingHelpfulLabel","wasReviewHelpfulText","like","dislike","edit","report","responseName","userResponse","responderName","responseText","responseDate","cardBodyProps","responseProps","reviewProps","controlsProps","headerProps","ReviewCard","_userReportModalToggle","reportingReviewId","_userReviewModal","_onTitleChange","_onTextChange","_onRatingChange","_onReviewComplete","_userReviewModalToggle","isSuccess","_reportReviewModal","submitReviewAttribute","SuccessButton","successAttribute","cancelAttribute","SpamAdvertising","reportSpamText","OffensiveContent","offensiveContentText","Profanity","profanityContentText","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","SignIn","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","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","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","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","handleText","handleParagraph","handleLink","handleAdditionalLink"],"sourceRoot":""}