{"version":3,"file":"static/js/23.7cabe02757f64094c7c0.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/bulk-purchase/bulk-purchase.tsx?9fd5","webpack://Msdyn365.Commerce.Online/./src/modules/bulk-purchase/bulk-purchase.view.tsx?feac","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart/actions/get-pickup-options-for-cartlines.ts?acad","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-pick-up-in-store.tsx?dca8","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-line-items.tsx?f6b2","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-line-groups.tsx?f076","webpack://Msdyn365.Commerce.Online/./src/modules/cart/utils/get-promotion-in-cart.ts?4195","webpack://Msdyn365.Commerce.Online/./src/modules/cart/cart.tsx?d4e4","webpack://Msdyn365.Commerce.Online/./src/modules/cart/components/cart-line-items-promotion.tsx?80d9","webpack://Msdyn365.Commerce.Online/./src/modules/cart/cart.view.tsx?d8c2","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/components/cartlineitem.component.tsx?eb8c","webpack://Msdyn365.Commerce.Online/./src/invoice-summary-lineitem.tsx?5f61","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/media-gallery.tsx?24d7","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/media-gallery.view.tsx?5061","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/utils/helper.ts?b895","webpack://Msdyn365.Commerce.Online/./src/modules/media-gallery/utils/get-valid-product-images.ts?a364","webpack://Msdyn365.Commerce.Online/./src/order-summary-lineitem.tsx?8a98","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/order-template-list.tsx?86c4","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/orderTemplateList-status-message.tsx?183c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/create-order-template.tsx?ea38","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.tsx?18d0","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.view.tsx?103b","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/spinner.tsx?b423","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/add-line.tsx?5f8a","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/dropdown.tsx?1cba","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/not-found.tsx?392d","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/common/order-template-quantity.tsx?99a1","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-configuration.tsx?b256","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-list.tsx?4284","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/bulk-actions.tsx?dbe8","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-actions.tsx?8136","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines.tsx?3703","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines-status-message.tsx?2986","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-table-heading.tsx?665c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.tsx?4ecb","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.view.tsx?a45e","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.tsx?4008","webpack://Msdyn365.Commerce.Online/./src/modules/product-collection/product-collection.view.tsx?5d36","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/actions/submit-user-review.ts?ac78","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-user-review-input.ts?3afb","webpack://Msdyn365.Commerce.Online/./src/common/review-modal.tsx?54a9","webpack://Msdyn365.Commerce.Online/./src/common/rnrInterface.ts?f761","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/component/components.tsx?f324","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.tsx?f6bc","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.view.tsx?5bff","webpack://Msdyn365.Commerce.Online/./src/actions/report-review-concern.ts?bf43","webpack://Msdyn365.Commerce.Online/./src/actions/submit-helpfulness-vote.ts?a8ab","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/report-review-concern-input.ts?b071","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/components.tsx?033b","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/report-review-modal.tsx?53d3","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/review-card.tsx?6bbd","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-helpfulness-vote-input.ts?07aa","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.tsx?37e8","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.view.tsx?0e4a","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/components/components.tsx?3575","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.tsx?9afc","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.view.tsx?b867","webpack://Msdyn365.Commerce.Online/./src/modules/social-share-item/social-share-item.tsx?bbcb","webpack://Msdyn365.Commerce.Online/./src/modules/social-share-item/social-share-item.view.tsx?2d3e","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart-icon.view.tsx?7ec9","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/media-gallery.view.tsx?7624","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/ratings-histogram.view.tsx?bb5b"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport { ProductDimensionsMatrix } from '@msdyn365-commerce/components';\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ICoreContext, getCatalogId } from '@msdyn365-commerce/core-internal';\nimport { ArrayExtensions, IDimensionsApp, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Collapse, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { IBulkPurchaseData } from './bulk-purchase.data';\nimport { IBulkPurchaseProps } from './bulk-purchase.props.autogenerated';\n\n/**\n * Additional optional props for the bulk purchase.\n */\nexport interface IBulkPurchaseExtendedProps extends IBulkPurchaseProps {\n productDimensions?: IProductDimensionsWithAvailabilitiesFull[];\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseViewProps extends IBulkPurchaseProps {\n container: IModuleProps;\n content: React.ReactElement;\n}\n\n/**\n * BulkPurchase state message Interface.\n */\nexport interface IBulkPurchaseStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseState {\n isExpanded: boolean;\n stateMessage?: IBulkPurchaseStateMessage;\n}\n\n/**\n * Bulk-purchase module.\n */\nexport class BulkPurchase extends React.PureComponent {\n public static readonly className = 'ms-bulk-purchase';\n private readonly _errorCssClass: string = 'danger';\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n private readonly collapseRef: React.RefObject = React.createRef();\n\n public constructor(props: IBulkPurchaseExtendedProps) {\n super(props);\n\n this.state = {\n isExpanded: false\n };\n }\n\n public render(): React.ReactElement | null {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const hasDimensionsInData = ArrayExtensions.hasElements(this.props.data.productDimensions?.result);\n if (!hasDimensionsInProps && !hasDimensionsInData) {\n return null;\n }\n\n const viewProps: IBulkPurchaseViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className: classnames(BulkPurchase.className, this.props.config.className)\n },\n content: this._renderCollapseContent(`${BulkPurchase.className}__content`)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderCollapseContent(className: string): React.ReactElement {\n return (\n
\n {this._renderCollapseButton(`${className}__collapse-button`)}\n {this._renderCollapse(`${className}__collapse`)}\n
\n );\n }\n\n private _renderCollapseButton(className: string): React.ReactElement {\n return (\n \n {this.props.resources.bulkPurchaseHeaderTitle}\n \n );\n }\n\n /**\n *This function is being used to handel variant change dropdown.\n */\n private _dimensionDropDownChange = () => {\n this.collapseRef.current?.reEvaluateHeight();\n };\n\n private _renderCollapse(className: string): React.ReactElement {\n return (\n \n {this._renderMainContent(`${className}__main-content`)}\n \n );\n }\n\n private _renderMainContent(className: string): React.ReactElement {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n const userMessageNode = this.state.stateMessage ? (\n \n \n {this.state.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return (\n
\n {!isMobileDevice && (\n
\n \n
\n )}\n {userMessageNode}\n {this._renderMatrix(`${className}__matrix-container`)}\n
\n );\n }\n\n private _renderMatrix(className: string): React.ReactElement {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState?.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n return (\n }\n data={{\n dimensions: hasDimensionsInProps ? this.props.productDimensions! : this.props.data.productDimensions!.result!,\n orderTemplates: this.props.data.orderTemplates?.result,\n customerInformation: this.props.data.customerInformation?.result\n }}\n resources={this.props.resources}\n dimensionOnChange={this._dimensionDropDownChange}\n onErrorMessage={this._onErrorMessage}\n isMultipleCatalogFeatureEnabledInHq={isMultipleCatalogsFeatureEnabled}\n catalogId={catalogId}\n />\n );\n }\n\n private _onErrorMessage = (errorMessage: string) => {\n this.setState({\n stateMessage: {\n messageText: errorMessage,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n });\n };\n\n /**\n * Callback which toggles collapse mode.\n */\n private readonly _toggleCollapse = () => {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n };\n}\n\nexport default BulkPurchase;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBulkPurchaseViewProps } from './bulk-purchase';\n\n/**\n * Bulk purchase view.\n * @param props - Bulk purchase view props.\n * @returns React node with a module.\n */\nexport const BulkPurchaseViewComponent: React.FC = props => {\n return {props.content};\n};\n\nexport default BulkPurchaseViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n ActiveCartProductsInput,\n QueryResultSettingsProxy,\n buildCacheKey,\n getActiveCartProductsAction\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for pickup delivery options for items in cart.\n */\nexport class ProductPickUpOptionsForCartLineItems implements IActionInput {\n public readonly apiSettings: ICommerceApiSettings;\n\n public constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n /**\n * Get Cache Key.\n * @returns - Cache key string.\n */\n public getCacheKey = (): string => buildCacheKey('ActiveCartLineItemsPickUpOptions', this.apiSettings);\n\n /**\n * Get Cachetype Name.\n * @returns - Cache name string.\n */\n public getCacheObjectType = (): string => 'ActiveCartLineItemsPickUpOptions';\n\n /**\n * Get Cachetype.\n * @returns - CacheType enum.\n */\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetPickUpOptionCartLineItems method.\n * @param inputData - The input data passed to the createInput method.\n * @returns - Input for data action.\n */\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductPickUpOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the GetPickUpOptionCartLineItems data action.\n * @param input - The action input.\n * @param context - The action context.\n * @returns - Order Template object.\n */\nexport async function getPickUpOptionsForCartLineItems(\n input: ProductPickUpOptionsForCartLineItems,\n context: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input.apiSettings.channelId) {\n throw new Error('[getPickUpOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(context);\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), context);\n const filterOption = 4;\n const response: ProductDeliveryOptions[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- existing code.\n if (cart === undefined || !ArrayExtensions.hasElements(products)) {\n return Promise.resolve(response);\n }\n\n const pickupoptions = await ProductsDataActions.getDeliveryOptionsAsync(\n {\n callerContext: context,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context)\n },\n products.map(product => product.RecordId),\n {},\n filterOption\n );\n\n return pickupoptions;\n}\n\n/**\n * The GetPickupOptionCartLineItems Data Action\n * Returns pickup options.\n */\nexport const getPickUpOptionsForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-pickup-options-for-cartlines',\n action: getPickUpOptionsForCartLineItems as IAction,\n input: createInput\n});\n\nexport default getPickUpOptionsForCartLineItemsDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n DeliveryOption,\n OrgUnitLocation,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPickUpInStoreViewProps {\n callbacks: {\n toggleBopis(isBopisSelected: boolean): void;\n };\n defaultComponent?: React.ReactNode;\n orgUnitName?: string;\n isBopisSelected: boolean;\n ContainerProps: INodeProps;\n deliveryOption?: string;\n}\n\nexport interface IPickUpInStoreProps {\n cartline: CartLine;\n product: SimpleProduct;\n shipitText: string;\n pickUpInStoreText: string;\n changeStoreText: string;\n cartState: ICartState | undefined;\n storeSelectorStateManager: IStoreSelectorStateManager | undefined;\n orgUnitLocations?: OrgUnitLocation[] | undefined;\n deliveryOptions?: ProductDeliveryOptions;\n pickupDeliveryModeCode?: string;\n storeSelectorModuleId?: string;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n retailMulitplePickupFeatureState?: boolean;\n locationChangedHandler(): void;\n}\n\nexport const PickUpInStore = (props: IPickUpInStoreProps): IPickUpInStoreViewProps | undefined => {\n const _onLocationChangedCallback = async (\n orgUnitLocation: OrgUnitLocation,\n cartState: ICartState | undefined,\n cartline: CartLine,\n deliveryMode?: string\n ) => {\n if (!cartState) {\n return Promise.resolve();\n }\n return cartState\n .updateCartLinePickupLocation({ cartLineId: cartline.LineId!, location: orgUnitLocation, deliveryMode })\n .then(result => {\n if (result.status === 'SUCCESS') {\n props.locationChangedHandler();\n }\n })\n .catch(error => {});\n };\n\n const _toggleBOPIS = (isBopisSelected: boolean) => {\n const { storeSelectorStateManager, product, cartline, cartState, storeSelectorModuleId } = props;\n\n if (isBopisSelected) {\n if (!storeSelectorStateManager) {\n return;\n }\n storeSelectorStateManager\n .openDialog({\n id: storeSelectorModuleId,\n product,\n alreadySelectedLocation: {\n OrgUnitNumber: cartline.FulfillmentStoreId\n },\n deliveryOptions: props.deliveryOptions,\n onLocationSelected: async (orgUnitLocation, deliveryMode: string | undefined) => {\n return _onLocationChangedCallback(orgUnitLocation, cartState, cartline, deliveryMode);\n }\n })\n .catch(error => {});\n } else {\n if (!cartState) {\n return;\n }\n cartline.DeliveryMode = '';\n cartline.FulfillmentStoreId = '';\n cartline.ShippingAddress = {};\n cartState\n .clearCartLinePickupLocation({ cartLineId: cartline.LineId! })\n .then(result => {\n if (result.status === 'SUCCESS') {\n props.locationChangedHandler();\n }\n })\n .catch(error => {});\n }\n };\n\n const _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n };\n\n const _renderShippingMethod = (\n cartLine: CartLine,\n shipItText: string,\n pickupInStoretext: string,\n changeStoreText: string,\n orgUnitLocations: OrgUnitLocation[] | undefined\n ): JSX.Element => {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, orgUnitLocations);\n const bopisSelected = !!cartLine.FulfillmentStoreId;\n\n const toggleBOPIS = (isBopisSelected: boolean) => {\n return () => {\n _toggleBOPIS(isBopisSelected);\n };\n };\n\n return (\n <>\n \n \n {cartLine.FulfillmentStoreId ? (\n
\n {orgUnitName}\n \n
\n ) : null}\n \n );\n };\n\n const _getDeliveryOption = (pickupStore: IPickUpInStoreProps, deliveryOptions: ProductDeliveryOptions) => {\n const delivery = deliveryOptions?.DeliveryOptions?.find(option => option.Code === pickupStore.pickupDeliveryModeCode);\n return delivery?.Description;\n };\n\n /**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns Boolean flag.\n */\n const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: string[] | undefined\n ): boolean => {\n const deliveryOption: string[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(deliveryCode => deliveryCode === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n return deliveryOption;\n });\n\n return ArrayExtensions.hasElements(deliveryOption);\n };\n\n // If no delivery options present on the product, or none of the delivery options\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\n if (!props.deliveryOptions || !props.deliveryOptions.DeliveryOptions) {\n return undefined;\n }\n\n if (props.retailMulitplePickupFeatureState && props.channelDeliveryOptionConfig) {\n if (!matchDeliveryOptions(props.deliveryOptions.DeliveryOptions, props.channelDeliveryOptionConfig?.PickupDeliveryModeCodes)) {\n return undefined;\n }\n } else if (\n !props.pickupDeliveryModeCode ||\n !props.deliveryOptions.DeliveryOptions.find(option => option.Code === props.pickupDeliveryModeCode)\n ) {\n return undefined;\n }\n\n return {\n callbacks: {\n toggleBopis: _toggleBOPIS\n },\n defaultComponent: _renderShippingMethod(\n props.cartline,\n props.shipitText,\n props.pickUpInStoreText,\n props.changeStoreText,\n props.orgUnitLocations\n ),\n orgUnitName: _getOrgUnitName(props.cartline.FulfillmentStoreId, props.orgUnitLocations),\n isBopisSelected: !!props.cartline.FulfillmentStoreId,\n deliveryOption: _getDeliveryOption(props, props.deliveryOptions),\n ContainerProps: {\n className: 'msc-cart-line__bopis-container'\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 AddToOrderTemplateComponent,\n AddToWishlistComponent,\n CartLineItemComponent,\n IAddToOrderTemplateDialogResources,\n ICartlineResourceString,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n IOrderTemplateNameDialogResources,\n IWishlistActionSuccessResult\n} from '@msdyn365-commerce/components';\nimport MsDyn365, {\n IAny,\n ICoreContext,\n IGeneric,\n IGridSettings,\n IImageSettings,\n ITelemetry,\n TelemetryEvent,\n isChannelTypeB2B\n} from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResultsByLineId,\n ChannelDeliveryOptionConfiguration,\n CommerceList,\n Customer,\n OrgUnitLocation,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ProductDimensionType, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IStoreSelectorStateManager } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getInvoiceDetailsPageUrlSync,\n getProductUrlSync,\n IProductInventoryInformation,\n isCartLineItemPickUpType,\n ObjectExtensions,\n OrderTemplate,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\nimport { IPickUpInStoreViewProps, PickUpInStore } from './cart-pick-up-in-store';\n\nexport interface ICartLineItemsProps {\n cartlines: CartLine[];\n cartlinesErrors: CartLineValidationResultsByLineId;\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n retailMulitplePickupFeatureState?: boolean;\n\n /* GridSettings for the product image in cartline */\n gridSettings: IGridSettings;\n\n /* ImageSettings for the product image in cartline */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext>;\n telemetry: ITelemetry;\n removeButtonText: string;\n addToWishlistButtonText: string;\n removeFromWishlistButtonText: string;\n shipItText: string;\n pickitUpText: string;\n changeStoreText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n storeSelectorStateManager: IStoreSelectorStateManager | undefined;\n isStockCheckEnabled: boolean;\n wishlists: CommerceList[] | undefined;\n defaultWishlistName: string;\n maxCartlineQuantity: number;\n includeErrors?: boolean;\n showShippingChargesForLineItems?: boolean;\n telemetryContent?: ITelemetryContent;\n isQuantityLimitsFeatureEnabled: boolean;\n hasInvoiceLine?: boolean;\n storeSelectorModuleId?: string;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n addToOrderTemplateDialogResources: IAddToOrderTemplateDialogResources;\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\n itemAddedToOrderTemplateDialogResources: IItemAddedToOrderTemplateDialogResources;\n duplicateItemsWhenAddingToOrderTemplateDialogResources: IDuplicateItemsWhenAddingToOrderTemplateDialogResources;\n\n addToOrderTemplateButtonText: string;\n addToOrderTemplateButtonTooltip: string;\n addToOrderTemplateMessage: string;\n addItemToOrderTemplateError: string;\n orderTemplates: OrderTemplate[] | undefined;\n customerInformation: Customer | undefined;\n shouldIgnoreWarehouse: boolean | undefined;\n productAvailability?: AsyncResult;\n productPickUpOptions?: ProductDeliveryOptions[] | undefined;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n catalogId?: number;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n moveToWishlistSuccessHandler(result: IWishlistActionSuccessResult, cartlineId: CartLine): void;\n updateCartLinesQuantitySuccessHandler(cartline: CartLine, quantity: number, lineIndex?: number): boolean;\n locationChangedHandler(): void;\n}\n\nexport interface ICartlinesViewProps {\n cartline: React.ReactNode;\n pickUpInStore?: IPickUpInStoreViewProps;\n remove: React.ReactNode;\n addToWishlist: React.ReactNode | undefined;\n addToOrderTemplate: React.ReactNode | undefined;\n\n error?: string;\n cartlineId?: string;\n hasError?: boolean;\n data?: {\n product?: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n productAvailability: IProductInventoryInformation | undefined\n): number => {\n if (\n !isStockCheckEnabled ||\n !productAvailability ||\n !productAvailability.ProductAvailableQuantity ||\n !productAvailability.IsProductAvailable ||\n !productAvailability.ProductAvailableQuantity.AvailableQuantity\n ) {\n return 0;\n }\n\n return productAvailability.ProductAvailableQuantity.AvailableQuantity;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\nconst _getErrorMessage = (\n availableQuantityInStock: number,\n currentQuantity: number,\n props: ICartLineItemsProps,\n shouldSkipStockCheck: boolean,\n cartLine: CartLine,\n lineId: string | undefined,\n foundProductAvailability?: IProductInventoryInformation\n): string | undefined => {\n const finalErrorMessages: string[] = [];\n\n const isLoadingDeliveryOptions = props.productAvailability?.status === 'LOADING';\n if (isLoadingDeliveryOptions) {\n return undefined;\n }\n // check availability passed as prop for each cartline\n if (props.productAvailabilites && ArrayExtensions.hasElements(props.productAvailabilites)) {\n if (foundProductAvailability === undefined) {\n finalErrorMessages.push(props.outOfStockText);\n return finalErrorMessages.toString();\n }\n }\n if (props.includeErrors && props.isStockCheckEnabled && !shouldSkipStockCheck) {\n if (availableQuantityInStock <= 0) {\n finalErrorMessages.push(props.outOfStockText);\n } else if (availableQuantityInStock < currentQuantity) {\n if (availableQuantityInStock === 1) {\n finalErrorMessages.push(props.outOfRangeOneText);\n } else {\n finalErrorMessages.push(props.outOfRangeFormatText.replace('{numLeft}', availableQuantityInStock.toString()));\n }\n }\n }\n\n // Server-side validation\n const checkForErrors = props.cartlinesErrors.ValidationResultsPairs;\n const errorsFoundByLineId = checkForErrors?.filter(index => index.LineId === lineId);\n if (errorsFoundByLineId !== undefined) {\n for (const i of errorsFoundByLineId) {\n if (ArrayExtensions.hasElements(i.ValidationFailures)) {\n i.ValidationFailures.forEach(validation => {\n if (validation.ErrorContext !== undefined) {\n finalErrorMessages.push(validation.ErrorContext);\n }\n });\n }\n }\n }\n\n if (ArrayExtensions.hasElements(finalErrorMessages)) {\n return finalErrorMessages.join(' ');\n }\n\n return undefined;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\n\n// eslint-disable-next-line complexity -- Auto-suppressed.\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct | undefined,\n props: ICartLineItemsProps,\n index: number,\n foundProductAvailability?: IProductInventoryInformation,\n productPickUpOptions?: ProductDeliveryOptions\n): ICartlinesViewProps => {\n const {\n imageSettings,\n gridSettings,\n id,\n typeName,\n context,\n resources,\n removeButtonText,\n removeItemClickHandler,\n moveToWishlistSuccessHandler,\n addToOrderTemplateButtonText,\n addToOrderTemplateButtonTooltip,\n addToOrderTemplateDialogResources,\n createOrderTemplateDialogResources,\n itemAddedToOrderTemplateDialogResources,\n duplicateItemsWhenAddingToOrderTemplateDialogResources,\n addToWishlistButtonText,\n removeFromWishlistButtonText,\n orderTemplates,\n customerInformation,\n wishlists,\n defaultWishlistName,\n storeSelectorModuleId,\n isMultipleCatalogFeatureEnabledInHq\n } = props;\n\n const isAuthenticated = context.request.user.isAuthenticated;\n const nameOfWishlist = wishlists && wishlists.length > 0 && wishlists[0].Name ? wishlists[0].Name : defaultWishlistName;\n const availableQuantityInStock = _getCartItemAvailableQuantity(props.isStockCheckEnabled, foundProductAvailability);\n\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Skip stock check if the cart line is a service item or an invoice line\n const shouldSkipStockCheck = product?.ItemTypeValue === ReleasedProductType.Service || !!cartline.IsInvoiceLine;\n\n const errorMessage = ObjectExtensions.isNullOrUndefined(maxQuantity)\n ? undefined\n : _getErrorMessage(\n availableQuantityInStock,\n cartline.Quantity!,\n props,\n shouldSkipStockCheck,\n cartline,\n cartline.LineId,\n foundProductAvailability\n );\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n\n const payload = getPayloadObject(TelemetryEvent.RemoveFromCart, props.telemetryContent!, removeButtonText, '');\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\n\n const inventoryLbl = foundProductAvailability?.StockLevelLabel;\n const inventoryCode = foundProductAvailability\n ? `ms-cart-line__inventory-code-${foundProductAvailability.StockLevelCode?.toLowerCase()}`\n : undefined;\n const productDimension = 4;\n const customPriceDimensionType = productDimension as ProductDimensionType.Style;\n const isCustomPriceSelected =\n product?.Dimensions?.find(dimension => dimension.DimensionTypeValue === customPriceDimensionType)?.DimensionValue?.Value ===\n 'Custom';\n\n let productUrl: string | undefined;\n if (product) {\n productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n } else {\n productUrl = getInvoiceDetailsPageUrlSync(cartline.Description || '', props.context.actionContext);\n }\n\n return {\n data: {\n product,\n cartline\n },\n cartlineId: cartline.LineId,\n error: errorMessage,\n hasError:\n (!shouldSkipStockCheck && props.isStockCheckEnabled ? cartline.Quantity! > (maxQuantity ?? 0) : false) ||\n (!ObjectExtensions.isNullOrUndefined(errorMessage) && !StringExtensions.isNullOrEmpty(errorMessage)),\n cartline: (\n \n ),\n pickUpInStore: product\n ? PickUpInStore({\n storeSelectorModuleId,\n cartState: props.cartState,\n cartline,\n product,\n shipitText: props.shipItText,\n pickUpInStoreText: props.pickitUpText,\n changeStoreText: props.changeStoreText,\n storeSelectorStateManager: props.storeSelectorStateManager,\n orgUnitLocations: props.orgUnitLocations,\n deliveryOptions: productPickUpOptions,\n pickupDeliveryModeCode:\n cartline.DeliveryMode !== (undefined || '') ? cartline.DeliveryMode : props.pickupDeliveryModeCode,\n retailMulitplePickupFeatureState: props.retailMulitplePickupFeatureState,\n channelDeliveryOptionConfig: props.channelDeliveryOptionConfig,\n locationChangedHandler: props.locationChangedHandler\n })\n : undefined,\n remove: (\n \n ),\n addToWishlist:\n isAuthenticated && product && !isCustomPriceSelected ? (\n \n ) : (\n undefined\n ),\n addToOrderTemplate:\n isAuthenticated && orderTemplates && product ? (\n \n ) : (\n undefined\n )\n };\n};\n\nexport const assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: ICartLineItemsProps\n): ICartlinesViewProps[] | null => {\n const reactNodes: ICartlinesViewProps[] = [];\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n\n // check if cartlineitem is pickup item\n const isPickUpItem = isCartLineItemPickUpType(\n cartline,\n props.retailMulitplePickupFeatureState,\n props.channelDeliveryOptionConfig,\n props.pickupDeliveryModeCode\n );\n if (props.productAvailabilites && ArrayExtensions.hasElements(props.productAvailabilites)) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n if (!props.shouldIgnoreWarehouse && isPickUpItem) {\n // check warehouse only if siteBuilder setting is not \"Based on aggregate for shipping and pickup warehouses\" and cartlineitem is pickupitem\n return (\n productAvailability.ProductAvailableQuantity?.ProductId === cartline.ProductId &&\n productAvailability.InventLocationId?.toUpperCase() === cartline.WarehouseId?.toUpperCase()\n );\n }\n return productAvailability.ProductAvailableQuantity.ProductId === cartline.ProductId;\n });\n }\n\n let productPickUpOptions;\n if (props.productPickUpOptions !== undefined && ArrayExtensions.hasElements(props.productPickUpOptions)) {\n productPickUpOptions = props.productPickUpOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n reactNodes.push(_assembleNode(cartline, product, props, index, foundProductAvailability, productPickUpOptions));\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n * @param props\n */\nexport const CartLineItems = (props: ICartLineItemsProps) => {\n const { products, cartlines } = props;\n return assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport groupBy from 'lodash/groupBy';\n\nimport { assembleCartlines, ICartLineItemsProps, ICartlinesViewProps } from './cart-line-items';\n\nconst _assembleGroupCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: ICartLineItemsProps\n): ICartlinesViewProps[][] | null => {\n const reactNodes: ICartlinesViewProps[][] = [];\n if (!products || products.length === 0) {\n props.context.telemetry.error('Products content is empty, module wont render');\n return null;\n }\n\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\n const groupDelivery = getGroupByDelivery(cartlines);\n const cartLinesGroup: CartLine[] = [];\n\n // 1) Group by store and pick up mode\n Object.entries(groupDelivery).forEach(([deliveryType, groupByDeliveryType]) => {\n // @ts-expect-error\n groupDelivery[deliveryType] = getGroupByStorePickup(groupByDeliveryType);\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\n });\n\n // 2) Create cartlines group\n Object.keys(cartLinesGroup).forEach(key => {\n const cartLines = cartLinesGroup[key];\n Object.keys(cartLines).forEach(index => {\n const cartLine = cartLines[index];\n const carLineViewProps = assembleCartlines(cartLine, products, props);\n if (carLineViewProps !== null) {\n reactNodes.push(carLineViewProps);\n }\n });\n });\n\n return reactNodes;\n};\n\nconst _assembleGroupInvoiceCartlines = (\n cartLines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: ICartLineItemsProps\n): ICartlinesViewProps[][] | null => {\n const reactNodes: ICartlinesViewProps[][] = [];\n if (cartLines && cartLines.length > 0) {\n // Create invoice cartLines group\n const carLineViewProps = assembleCartlines(cartLines, products, props);\n if (carLineViewProps !== null) {\n reactNodes.push(carLineViewProps);\n }\n }\n return reactNodes;\n};\n\n/**\n * CartLine Group component.\n * @param props\n */\nexport const CartLineGroupItems = (props: ICartLineItemsProps) => {\n const { products, cartlines, hasInvoiceLine } = props;\n return hasInvoiceLine\n ? _assembleGroupInvoiceCartlines(cartlines, products, props)\n : _assembleGroupCartlines(cartlines, products, props);\n};\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 { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { getPromotionOptionsForCartLineItems, PromotionOptionsForCartLineItems } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IPromotionData entity interface.\n */\nexport interface IPromotionData {\n promotionOptions?: CartPromotionLine[];\n}\n\n/**\n * Calls the Retail API and returns a promotion data.\n * @param ctx\n */\nexport async function getPromotionData(ctx: IActionContext): Promise {\n const promotionData: IPromotionData = {};\n\n await getPromotionOptionsForCartLineItems(new PromotionOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(promotionOptions => {\n if (promotionOptions) {\n promotionData.promotionOptions = promotionOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n return {};\n });\n\n return promotionData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IAddToOrderTemplateDialogResources,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n ILinesAddedToOrderTemplateDialogResources,\n IOrderTemplateNameDialogResources,\n IWishlistActionSuccessResult,\n PromoCodeComponent,\n SaveCartToOrderTemplateComponent\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { getCatalogId, getUrlSync, IImageSettings, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport { AsyncResult, CartLine, CartLineValidationResultsByLineId, LineValidationResult } from '@msdyn365-commerce/retail-proxy';\nimport { FeatureState, ProductDeliveryOptions, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { cartLineQuantityUpdatedAsync, validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport {\n ActiveCartProductsInput,\n ArrayExtensions,\n getActiveCartProductsAction,\n ICartLineInventoryValidationResult,\n ObjectExtensions,\n validateCartLinesInventory,\n ProductPickUpOptionsForCartLineItems,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant,\n Waiting,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\nimport { getPickUpOptionsForCartLineItems } from './actions/get-pickup-options-for-cartlines';\n\nimport { ICartData } from './cart.data';\nimport { ICartProps, ICartResources } from './cart.props.autogenerated';\nimport { CartLineGroupItems } from './components/cart-line-groups';\nimport { CartLineItems, ICartlinesViewProps } from './components/cart-line-items';\nimport { cartPromotions, ICartLineItemViewProps } from './components/cart-line-items-promotion';\nimport { getPromotionData, IPromotionData } from './utils/get-promotion-in-cart';\n\n/**\n * Cart view props interface.\n */\nexport interface ICartViewProps extends ICartProps {\n className: string;\n title?: React.ReactNode;\n CartlinesWrapper: INodeProps;\n cartlines?: ICartlinesViewProps[];\n cartLinesGroup?: ICartlinesViewProps[][];\n cart: ICartState | undefined;\n orderSummaryHeading: React.ReactNode;\n orderSummaryLineitems?: IOrderSummaryLines;\n invoiceSummaryLineitems?: IInvoiceSummaryLines;\n OrderSummaryWrapper: INodeProps;\n OrderSummaryItems: INodeProps;\n OrderSummaryErrors?: IOrderSummaryErrors;\n checkoutAsGuestButton: React.ReactNode;\n checkoutAsSignInUserButton: React.ReactNode;\n storeSelector?: React.ReactNode;\n expressCheckoutButton?: React.ReactNode[];\n ExpressCheckoutSectionWrapper: INodeProps;\n backToShoppingButton: React.ReactNode;\n waitingComponent: React.ReactNode;\n promotionOptions?: ICartLineItemViewProps;\n promoCode: React.ReactNode;\n cartLoadingStatus: string;\n cartDataResult: boolean;\n multiplePickUpEnabled?: boolean;\n createTemplateFromCartButton: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n moveToWishlistSuccessHandler(result: IWishlistActionSuccessResult, cartlineId: CartLine): void;\n}\n\n/**\n * Order summary errors interface.\n */\nexport interface IOrderSummaryErrors {\n Wrapper: INodeProps;\n header: React.ReactNode;\n errors: React.ReactNode[];\n}\n\n/**\n * Cart component state interface.\n */\ninterface ICartComponentState {\n showPromotionDialog: boolean;\n cartlinesErrors: CartLineValidationResultsByLineId;\n promotionData: IPromotionData;\n isCartValid: boolean;\n productPickUpOptions?: ProductDeliveryOptions[];\n}\n\n/**\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Cart extends React.Component> {\n public state: ICartComponentState;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private isQuantityLimitsFeatureEnabled: boolean = false;\n\n private _isMounted: boolean = false;\n\n private readonly promotionPopupId: string = 'cart-promotion-popup';\n\n public constructor(props: ICartProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '');\n this.promotionLinkClick = this.promotionLinkClick.bind(this);\n this.promotionCloseButtonclick = this.promotionCloseButtonclick.bind(this);\n\n this.state = {\n showPromotionDialog: false,\n promotionData: {},\n isCartValid: true,\n productPickUpOptions: undefined,\n cartlinesErrors: {}\n };\n }\n\n /**\n * Component did mount function.\n */\n public async componentDidMount(): Promise {\n this._isMounted = true;\n const {\n config,\n context: { actionContext }\n } = this.props;\n\n this.isQuantityLimitsFeatureEnabled =\n (await this.getOrderQuantityLimitsFeatureFlag()) || (await this._isChannelLimitsFeatureEnabled());\n if (this.isQuantityLimitsFeatureEnabled) {\n await this.validateCart();\n }\n\n if (config.showAvailablePromotions) {\n if (this._isMounted && this.props.data.cart.result?.cart.CartLines) {\n this.setState({ promotionData: await getPromotionData(actionContext) });\n }\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n if (this._isMounted) {\n this.setState({ promotionData: await getPromotionData(actionContext) });\n }\n }\n );\n }\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n if (this._isMounted) {\n const input = new ProductPickUpOptionsForCartLineItems(actionContext.requestContext.apiSettings);\n this.setState({ productPickUpOptions: await getPickUpOptionsForCartLineItems(input, actionContext) });\n }\n }\n );\n }\n\n /**\n * Component will unmount function.\n */\n public componentWillUnmount(): void {\n this._isMounted = false;\n }\n\n /**\n * Should component update function.\n * @param nextProps - Next props.\n * @param nextState - Next state.\n * @returns True if component should update, false otherwise.\n */\n public shouldComponentUpdate(nextProps: ICartProps, nextState: ICartComponentState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n /* eslint-disable complexity -- Disabling complexity for render method */\n public render(): JSX.Element | null {\n const {\n data: {\n cart: { result: cart },\n products: { result: products }\n },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n resources\n } = this.props;\n\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n const checkoutURL = this.getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n const cartLines = this._getCartLines();\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.props.data.productAvailabilites.result ?? [],\n this.props.context.actionContext,\n products ?? [],\n emailDeliveryModeCode\n );\n\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n const multiplePickUpEnabled = RetailMultiplePickupFeatureState?.IsEnabled;\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const currentCatalogId = getCatalogId(this.props.context.request);\n validateCatalogId(currentCatalogId);\n const cartLinesGroup = cart?.hasInvoiceLine || multiplePickUpEnabled ? this.getCartLinesGroup() : null;\n this.payLoad.contentAction.etext = TelemetryConstant.Checkout;\n const checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.GuestCheckout;\n const checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.BackToShopping;\n const backtoShoppingAttributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n\n // If there's inventory issues across multiple cart lines then update the error and display as part of the order summary\n if (validInventoryAcrossCartLines && !validInventoryAcrossCartLines.isValid) {\n if (multiplePickUpEnabled && cartLinesGroup !== null) {\n for (const cartLineGroup of cartLinesGroup) {\n this._updateCartLineErrorForInvalidInventory(cartLineGroup, validInventoryAcrossCartLines);\n }\n }\n\n this._updateCartLineErrorForInvalidInventory(cartLines, validInventoryAcrossCartLines);\n }\n\n const viewProps = {\n ...this.props,\n className: classnames('ms-cart'),\n title:

{resources.cartTitle}

,\n cart: this.props.data.cart.result,\n CartlinesWrapper: { className: 'msc-cartline-wraper' },\n OrderSummaryWrapper: { className: cart?.hasInvoiceLine ? 'msc-invoice-summary-wrapper' : 'msc-order-summary-wrapper' },\n OrderSummaryItems: { className: cart?.hasInvoiceLine ? 'msc-invoice-summary__items' : 'msc-order-summary__items' },\n cartlines: cartLines,\n cartLinesGroup,\n promoCode: this._getPromoCode(),\n promotionOptions: this._getPromotions(),\n context: this.props.context,\n typeName: this.props.typeName,\n telemetry: this.props.telemetry,\n id: this.props.id,\n multiplePickUpEnabled,\n removePromoAriaLabelFormat: resources.removePromoAriaLabelFormat,\n orderSummaryHeading: ArrayExtensions.hasElements(cart?.cart.CartLines) ? (\n cart?.hasInvoiceLine ? (\n

{resources.invoiceSummaryTitle}

\n ) : (\n

{resources.orderSummaryTitle}

\n )\n ) : null,\n orderSummaryLineitems: this._getOrderSummaryLineItems(),\n invoiceSummaryLineitems: this._getInvoiceSummaryLineItems(),\n checkoutAsSignInUserButton: !isCartEmpty ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n !isCartEmpty && !isAuthenticated && this.props.config.showGuestCheckoutButton ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n expressCheckoutButton: !isCartEmpty ? this.props.slots.paymentExpress : null,\n ExpressCheckoutSectionWrapper: { className: 'msc-express-payment-container-in-cart-page' },\n backToShoppingButton: (\n \n {resources.backToShoppingButtonTitle}\n \n ),\n createTemplateFromCartButton:\n this._displayAddCartToTemplate() && products ? (\n \n ) : null,\n checkoutBlockedDueToUnavailableFunds: null,\n storeSelector:\n this.props.slots.storeSelector && this.props.slots.storeSelector.length > 0 ? this.props.slots.storeSelector[0] : null,\n removeItemClickHandler: this.removeItemFromCartHandler,\n moveToWishlistSuccessHandler: this.moveToWishlistSuccessHandler,\n waitingComponent: ,\n cartLoadingStatus: this.props.data.cart.status === 'FAILED' ? this.props.resources.cartLoadingErrorMessage : null,\n cartDataResult: this.props.data.cart.result && this.props.data.cart.result.isEmpty,\n OrderSummaryErrors: this._getOrderSummaryErrors(cartLines),\n telemetryContent: this.telemetryContent\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n /* eslint-enable complexity -- Disabling complexity for render method */\n\n /**\n * Promotion click event handler.\n * @param event - The mouse event.\n */\n private readonly promotionLinkClick = (event: React.MouseEvent) => {\n this.setState({\n showPromotionDialog: !this.state.showPromotionDialog\n });\n };\n\n /**\n * Promotion close button click.\n */\n private readonly promotionCloseButtonclick = () => {\n this._hidePromotionDialog();\n };\n\n /**\n * Hide promotion dialog.\n */\n private _hidePromotionDialog(): void {\n this.setState({\n showPromotionDialog: false\n });\n }\n\n /**\n * Display add to cart template.\n * @returns True if should display, false otherwise.\n */\n private _displayAddCartToTemplate(): boolean {\n const cart = this.props.data.cart?.result;\n if (ObjectExtensions.isNullOrUndefined(cart) || cart.hasInvoiceLine) {\n return false;\n }\n\n if (\n isChannelTypeB2B(this.props.context.actionContext.requestContext) &&\n this.props.data.orderTemplates.result &&\n ArrayExtensions.hasElements(cart.cart?.CartLines) &&\n this.props.data.customerInformation.result\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Get promotions.\n * @returns React node with the promotions.\n */\n private _getPromotions(): React.ReactNode {\n return (\n this.props.config.showAvailablePromotions &&\n cartPromotions({\n id: this.promotionPopupId,\n showPromotionPopup: this.state.showPromotionDialog,\n onSeeAllClick: this.promotionLinkClick,\n onCloseButtonClick: this.promotionCloseButtonclick,\n promotions: this.state.promotionData.promotionOptions,\n resources: {\n promotionStringHeading: this.props.resources.promotionStringHeading,\n promotionLinkText: this.props.resources.promotionLinkText,\n promotionPopupHeading: this.props.resources.promotionPopupHeading,\n promotionCloseButtonAriaLabel: this.props.resources.promotionCloseButtonAriaLabel\n }\n })\n );\n }\n\n /**\n * Add error message in cart line in case the quantity exceeds the current inventory.\n * @param cartLines - The cart lines.\n * @param cartLineInventoryValidationResult - The cart line inventory result.\n */\n private _updateCartLineErrorForInvalidInventory(\n cartLines: ICartlinesViewProps[] | null,\n cartLineInventoryValidationResult: ICartLineInventoryValidationResult\n ) {\n const { resources } = this.props;\n\n if (\n ArrayExtensions.hasElements(cartLines) &&\n !cartLineInventoryValidationResult.isValid &&\n ArrayExtensions.hasElements(cartLineInventoryValidationResult.productIdWithErrors)\n ) {\n for (const productIdWithError of cartLineInventoryValidationResult.productIdWithErrors) {\n const cartLine = cartLines?.find(element => element.data?.cartline.ProductId === productIdWithError);\n if (cartLine) {\n cartLine.error = resources.outOfStockErrorMessage;\n cartLine.hasError = true;\n }\n }\n }\n }\n\n /**\n * Get order summary errors.\n * @param cartLines - The cart lines.\n * @returns Order summary errors.\n */\n private _getOrderSummaryErrors(cartLines: ICartlinesViewProps[] | null): IOrderSummaryErrors | undefined {\n const allErrors =\n (cartLines &&\n cartLines\n .map(cartline => {\n // Check if the product is service or not by product type\n const isServiceItem = cartline.data?.product?.ItemTypeValue === ReleasedProductType.Service;\n\n if (!isServiceItem && cartline.error) {\n const fullError =\n cartline.data && cartline.data.product?.Name\n ? `${cartline.data.product.Name}: ${cartline.error}`\n : cartline.error;\n\n return (\n
\n {fullError}\n
\n );\n }\n\n return null;\n })\n .filter((line): line is JSX.Element => !!line)) ||\n [];\n\n return {\n Wrapper: {\n tag: Alert,\n className: 'msc-alert',\n isOpen: allErrors.length > 0,\n color: 'danger',\n assertive: true,\n 'aria-label': this.props.resources.outOfStockErrorMessageHeader\n },\n header: (\n \n ),\n errors: allErrors\n };\n }\n\n /**\n * Gets invoice summary line items.\n * @returns Invoice summary lines.\n */\n private _getInvoiceSummaryLineItems(): IInvoiceSummaryLines | undefined {\n const {\n data: {\n cart: { result: cart }\n },\n telemetry,\n resources\n } = this.props;\n\n return cart?.hasInvoiceLine\n ? InvoiceSummary({\n orderTotalLabel: resources.totalAmountLabel,\n invoiceLabel: resources.invoiceLabel,\n cart: cart.cart,\n context: this.props.context,\n typeName: this.props.typeName,\n telemetry,\n id: this.props.id\n })\n : undefined;\n }\n\n /**\n * Gets order summary line items.\n * @returns Order summary lines.\n */\n private _getOrderSummaryLineItems(): IOrderSummaryLines | undefined {\n const {\n data: {\n cart: { result: cart },\n channelDeliveryOptionConfig\n },\n telemetry,\n resources\n } = this.props;\n\n const channelConfiguration = this.props.context && this.props.context.request && this.props.context.request.channel;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const featureState = this.props?.data?.featureState;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(item => item.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const isShowOrHideTaxEnabled = this.props.context.request.app.config?.isEnableShowOrHideSalesTaxECommerceEnabled === true;\n\n return channelConfiguration && ArrayExtensions.hasElements(cart?.cart.CartLines) && !cart?.hasInvoiceLine\n ? OrderSummary({\n cart: cart!.cart,\n subTotalLabel: resources.itemsWithCountLabel,\n shippingLabel: resources.estimatedShippingLabel,\n otherChargeLabel: resources.otherCharges,\n taxLabel: resources.estimatedTaxLabel,\n orderTotalLabel: resources.orderTotal,\n totalDiscountsLabel: resources.totalDiscountsLabel,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n toBeCalculatedText: resources.yetToBeCalculatedText,\n freeText: resources.priceFree,\n channelConfiguration,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\n telemetry,\n isTaxIncludedInPrice: cart!.cart.IsTaxIncludedInPrice,\n isShowTaxBreakup: isShowOrHideTaxEnabled\n })\n : undefined;\n }\n\n /**\n * Gets promo code.\n * @returns React node with the promo code.\n */\n private _getPromoCode(): React.ReactNode {\n const {\n data: {\n cart: { result: cart }\n },\n resources\n } = this.props;\n\n return (\n cart && (\n \n )\n );\n }\n\n /**\n * Generate add to order template dialog resources.\n * @param resources - The resources.\n * @returns IAddToOrderTemplateDialogResources.\n */\n private _generateAddToOrderTemplateDialogResources(resources: ICartResources): IAddToOrderTemplateDialogResources {\n return {\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\n\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\n\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\n\n selectTemplatesText: resources.selectTemplatesText,\n addToTemplateButtonText: resources.addToTemplateButtonText,\n lineItemsText: resources.lineItemsText\n };\n }\n\n /**\n * Generate item added to order template dialog resources.\n * @param resources - The resources.\n * @returns IItemAddedToOrderTemplateDialogResources.\n */\n private _generateItemAddedToOrderTemplateDialogResources(resources: ICartResources): IItemAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\n freePriceText: resources.freePriceText,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText\n };\n }\n\n /**\n * Generate lines added to order template dialog resources.\n * @param resources - The resources.\n * @returns ILinesAddedToOrderTemplateDialogResources.\n */\n private _generateLinesAddedToOrderTemplateDialogResources(resources: ICartResources): ILinesAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n linesAddedToOrderTemplateHeaderItemsOneText: resources.linesAddedToOrderTemplateHeaderItemsOneText,\n linesAddedToOrderTemplateHeaderItemsFormatText: resources.linesAddedToOrderTemplateHeaderItemsFormatText,\n linesAddedToOrderTemplateHeaderLinesOneText: resources.linesAddedToOrderTemplateHeaderLinesOneText,\n linesAddedToOrderTemplateHeaderLinesFormatText: resources.linesAddedToOrderTemplateHeaderLinesFormatText,\n linesAddedToOrderTemplateHeaderMessageText: resources.linesAddedToOrderTemplateHeaderMessageText,\n linesAddedToOrderTemplateCustomPriceAlertMessageText: resources.linesAddedToOrderTemplateCustomPriceAlertMessageText\n };\n }\n\n /**\n * Generate duplicate items when adding to order template dialog resources.\n * @param resources - The resources.\n * @returns IDuplicateItemsWhenAddingToOrderTemplateDialogResources.\n */\n private _generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources: ICartResources\n ): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\n return {\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\n updateQuantityButtonText: resources.updateQuantityButtonText,\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\n };\n }\n\n /**\n * Generate order template name dialog resources.\n * @param resources - The resources.\n * @returns IOrderTemplateNameDialogResources.\n */\n private _generateOrderTemplateNameDialogResources(resources: ICartResources): 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 /**\n * Gets the cart lines view props.\n * @returns ICartlinesViewProps [].\n */\n private _getCartLines(): ICartlinesViewProps[] | null {\n const {\n data: {\n cart: { result: cart },\n wishlists: { result: wishlists },\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources,\n modules\n } = this.props;\n\n const imageSettings = this.getImageSettings(config.imageSettings);\n\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n const multiplePickUpEnabled = RetailMultiplePickupFeatureState?.IsEnabled;\n\n const cartlinesErrors: CartLineValidationResultsByLineId = this.state.cartlinesErrors;\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const isMultipleCatalogsFeatureEnabled =\n this.props.data.featureState.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled ||\n false;\n return ArrayExtensions.hasElements(cart?.cart.CartLines)\n ? CartLineItems({\n cartlines: cart!.cart.CartLines,\n storeSelectorModuleId: storeSelectorId,\n cartlinesErrors,\n products: this.props.data.products.result,\n productAvailabilites: this.props.data.productAvailabilites.result,\n productDeliveryOptions: this.props.data.deliveryOptions.result,\n catalogs: this.props.data.catalogs?.result,\n imageSettings,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n shouldIgnoreWarehouse: this.props.context.app.config.warehouseAggregation === 'multiple',\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n retailMulitplePickupFeatureState: multiplePickUpEnabled,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n amountString: resources.productDimensionTypeAmount,\n quantityDisplayString: resources.quantityDisplayText,\n inputQuantityAriaLabel: resources.inputQuantityAriaLabel,\n decrementButtonAriaLabel: resources.decrementButtonAriaLabel,\n incrementButtonAriaLabel: resources.incrementButtonAriaLabel,\n discountStringText: resources.discountStringText,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n shippingChargesText: resources.shippingCharges,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n priceEditorResources: {\n ...resources\n }\n },\n telemetry,\n addToWishlistButtonText: resources.addToWishlistButtonText,\n removeFromWishlistButtonText: resources.removeFromWishlistButtonText,\n removeButtonText: resources.removeCartButtonText,\n shipItText: resources.shipInsteadDisplayText,\n pickitUpText: resources.pickItUpDisplayText,\n changeStoreText: resources.changeStoreDisplayText,\n storeSelectorStateManager: this.props.data.storeSelectorStateManager.result,\n outOfStockText: resources.outOfStockErrorMessage,\n outOfRangeOneText: resources.errorMessageOutOfRangeOneLeft,\n outOfRangeFormatText: resources.errorMessageOutOfRangeFormat,\n cartState: this.props.data.cart.result,\n orgUnitLocations: this.props.data.orgUnitLocations.result,\n removeItemClickHandler: this.removeItemFromCartHandler,\n moveToWishlistSuccessHandler: this.moveToWishlistSuccessHandler,\n updateCartLinesQuantitySuccessHandler: this.updateCartlineQuantity,\n locationChangedHandler: this.fulfillmentStoreIdUpdated,\n wishlists,\n defaultWishlistName: resources.defaultWishlistName,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n includeErrors: config.showOutOfStockErrors,\n showShippingChargesForLineItems: config.showShippingChargesForLineItems,\n telemetryContent: this.telemetryContent,\n isQuantityLimitsFeatureEnabled: this.isQuantityLimitsFeatureEnabled,\n\n addToOrderTemplateDialogResources: this._generateAddToOrderTemplateDialogResources(resources),\n createOrderTemplateDialogResources: this._generateOrderTemplateNameDialogResources(resources),\n itemAddedToOrderTemplateDialogResources: this._generateItemAddedToOrderTemplateDialogResources(resources),\n duplicateItemsWhenAddingToOrderTemplateDialogResources: this._generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources\n ),\n\n addToOrderTemplateButtonText: resources.addToOrderTemplateButtonText,\n addToOrderTemplateButtonTooltip: resources.addToOrderTemplateButtonTooltip,\n addToOrderTemplateMessage: resources.addToOrderTemplateMessage,\n addItemToOrderTemplateError: resources.addItemToOrderTemplateError,\n orderTemplates,\n customerInformation,\n productAvailability: this.props.data.productAvailabilites,\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogsFeatureEnabled || false\n })\n : null;\n }\n\n /**\n * Gets the checkout URL.\n * @param isAuthenticated - Is authenticated flag.\n * @param guestCheckoutUrl - Guest checkout URL.\n * @param signInUrl -The sign in URL.\n * @returns The checkout URL.\n */\n private getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (MsDyn365.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Gets the image settings.\n * @param imageSettings - Image settings.\n * @returns IImageSettings.\n */\n private readonly getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n /**\n * Remove item from cart handler.\n * @param cartlineToRemove - The cart line to remove.\n */\n private readonly removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result\n .removeCartLines(input)\n .then(() => {\n this.validateCart().catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to validate Cart');\n });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n /**\n * Move to wish list handler.\n * @param result - The wish list action success result.\n * @param cartline - The cart line.\n */\n private readonly moveToWishlistSuccessHandler = (result: IWishlistActionSuccessResult, cartline?: CartLine) => {\n if (result.status === 'ADDED' && cartline) {\n this.removeItemFromCartHandler(cartline);\n }\n };\n\n /**\n * Updates the cart line quantity.\n * @param cartlineToUpdate - The cart line.\n * @param quantity - The quantity.\n * @param lineIndex - The line index.\n * @returns True if the cart line was updated, false otherwise.\n */\n private readonly updateCartlineQuantity = (cartlineToUpdate: CartLine, quantity: number, lineIndex?: number): boolean => {\n cartLineQuantityUpdatedAsync(\n this.isQuantityLimitsFeatureEnabled,\n this.props.data.cart.result,\n this.props.telemetry,\n this.props.data.products.result,\n cartlineToUpdate,\n quantity\n )\n .then((cartActionResult: ICartActionResult | undefined): boolean => {\n if (cartActionResult?.status === 'SUCCESS') {\n this.validateCart().catch(error => {\n this.props.telemetry.warning((error as Error).message);\n this.props.telemetry.debug('Unable to validate Cart');\n });\n\n return true;\n }\n\n if (!ObjectExtensions.isNullOrUndefined(cartActionResult)) {\n // Show update line error message.\n const lineUpdateFailure: LineValidationResult = {\n LineId: ObjectExtensions.isNullOrUndefined(cartlineToUpdate.LineId) ? '0' : cartlineToUpdate.LineId,\n ValidationFailures: [\n {\n ErrorContext: ArrayExtensions.hasElements(cartActionResult.validationResults)\n ? cartActionResult.validationResults[0].ErrorContext\n : '',\n LocalizedMessage: cartActionResult.errorDetails?.LocalizedMessage\n }\n ]\n };\n\n this.setState({\n cartlinesErrors: { ValidationResultsPairs: [lineUpdateFailure] }\n });\n }\n\n return false;\n })\n .catch(() => {\n return false;\n });\n\n return false;\n };\n\n /**\n * Fulfillment store id is updated.\n */\n private readonly fulfillmentStoreIdUpdated = () => {\n if (this.isQuantityLimitsFeatureEnabled) {\n // Refresh products (in props.data) based on latest cart.\n getActiveCartProductsAction(new ActiveCartProductsInput(), this.props.context.actionContext)\n .then(async () => this.validateCart())\n .catch((error: Error) => {\n this.props.telemetry.warning(error.message);\n this.props.telemetry.debug('Unable to validate Cart');\n });\n }\n };\n\n /**\n * Validates cart.\n * @returns Void promise.\n */\n private async validateCart(): Promise {\n if (!this.isQuantityLimitsFeatureEnabled) {\n this.setState({ isCartValid: true });\n return AsyncResult.resolve();\n }\n\n const {\n data: { cart },\n telemetry,\n context\n } = this.props;\n\n const validationResults: CartLineValidationResultsByLineId | undefined = await validateCartAsync(cart, telemetry, context, true);\n\n if (validationResults) {\n const isValid = !ArrayExtensions.hasElements(validationResults.ValidationResultsPairs);\n this.setState({\n cartlinesErrors: validationResults,\n isCartValid: isValid\n });\n } else {\n this.setState({ isCartValid: true });\n }\n\n return AsyncResult.resolve();\n }\n\n /**\n * Get order quantity limit feature flag.\n * @returns True if flag is enabled, false otherwise.\n */\n private async getOrderQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n try {\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n return false;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n return false;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return true;\n }\n\n try {\n const customerInfo = await this.props.data.customerInformation;\n return (\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\n );\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n return false;\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n return !(cartConfiguration?.IgnoreOrderSettings ?? false);\n }\n }\n\n private async _isChannelLimitsFeatureEnabled(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelLimitsFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled;\n\n return isChannelLimitsFeatureEnabledInHq ?? false;\n }\n\n /**\n * Gets the cart lines group.\n * @returns ICartlinesViewProps [][].\n */\n private getCartLinesGroup(): ICartlinesViewProps[][] | null {\n const {\n data: {\n cart: { result: cart },\n wishlists: { result: wishlists },\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources,\n modules\n } = this.props;\n\n const imageSettings = this.getImageSettings(config.imageSettings);\n const cartlinesErrors: CartLineValidationResultsByLineId = this.state.cartlinesErrors;\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n\n const RetailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n const multiplePickUpEnabled = RetailMultiplePickupFeatureState?.IsEnabled;\n const { featureState } = this.props.data;\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const isMultipleCatalogsFeatureEnabled =\n featureState.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n return this.props.data.products &&\n (cart?.hasInvoiceLine || this.props.data.products.result) &&\n cart &&\n cart.cart.CartLines &&\n cart.cart.CartLines.length > 0 &&\n this.props.data.channelDeliveryOptionConfig?.result\n ? CartLineGroupItems({\n cartlines: cart.cart.CartLines,\n storeSelectorModuleId: storeSelectorId,\n cartlinesErrors,\n products: this.props.data.products.result,\n productAvailabilites: this.props.data.productAvailabilites.result,\n productDeliveryOptions: this.props.data.deliveryOptions.result,\n catalogs: this.props.data.catalogs?.result,\n imageSettings,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n hasInvoiceLine: cart?.hasInvoiceLine || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n retailMulitplePickupFeatureState: multiplePickUpEnabled,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n amountString: resources.productDimensionTypeAmount,\n quantityDisplayString: resources.quantityDisplayText,\n inputQuantityAriaLabel: resources.inputQuantityAriaLabel,\n decrementButtonAriaLabel: resources.decrementButtonAriaLabel,\n incrementButtonAriaLabel: resources.incrementButtonAriaLabel,\n discountStringText: resources.discountStringText,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n shippingChargesText: resources.shippingCharges,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n priceEditorResources: {\n ...resources\n }\n },\n telemetry,\n addToWishlistButtonText: resources.addToWishlistButtonText,\n removeFromWishlistButtonText: resources.removeFromWishlistButtonText,\n removeButtonText: resources.removeCartButtonText,\n shipItText: resources.shipInsteadDisplayText,\n pickitUpText: resources.pickItUpDisplayText,\n changeStoreText: resources.changeStoreDisplayText,\n storeSelectorStateManager: this.props.data.storeSelectorStateManager.result,\n outOfStockText: resources.outOfStockErrorMessage,\n outOfRangeOneText: resources.errorMessageOutOfRangeOneLeft,\n outOfRangeFormatText: resources.errorMessageOutOfRangeFormat,\n cartState: this.props.data.cart.result,\n orgUnitLocations: this.props.data.orgUnitLocations.result,\n removeItemClickHandler: this.removeItemFromCartHandler,\n moveToWishlistSuccessHandler: this.moveToWishlistSuccessHandler,\n updateCartLinesQuantitySuccessHandler: this.updateCartlineQuantity,\n locationChangedHandler: this.fulfillmentStoreIdUpdated,\n wishlists,\n defaultWishlistName: resources.defaultWishlistName,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n includeErrors: config.showOutOfStockErrors,\n showShippingChargesForLineItems: config.showShippingChargesForLineItems,\n telemetryContent: this.telemetryContent,\n isQuantityLimitsFeatureEnabled: this.isQuantityLimitsFeatureEnabled,\n\n addToOrderTemplateDialogResources: this._generateAddToOrderTemplateDialogResources(resources),\n createOrderTemplateDialogResources: this._generateOrderTemplateNameDialogResources(resources),\n itemAddedToOrderTemplateDialogResources: this._generateItemAddedToOrderTemplateDialogResources(resources),\n duplicateItemsWhenAddingToOrderTemplateDialogResources: this._generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources\n ),\n\n addToOrderTemplateButtonText: resources.addToOrderTemplateButtonText,\n addToOrderTemplateButtonTooltip: resources.addToOrderTemplateButtonTooltip,\n addToOrderTemplateMessage: resources.addToOrderTemplateMessage,\n addItemToOrderTemplateError: resources.addItemToOrderTemplateError,\n orderTemplates,\n customerInformation,\n channelDeliveryOptionConfig: this.props.data.channelDeliveryOptionConfig?.result,\n shouldIgnoreWarehouse: this.props.context.app.config.warehouseAggregation === 'multiple',\n productAvailability: this.props.data.productAvailabilites,\n productPickUpOptions: this.state.productPickUpOptions || this.props.data.cartLinesPickUpOptions?.result,\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogsFeatureEnabled || false\n })\n : null;\n }\n}\n\nexport default Cart;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Modal, ModalBody, ModalFooter, ModalHeader } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface ICartLineItemPromotion {\n id: string;\n showPromotionPopup: boolean;\n promotions: CartPromotionLine[] | undefined;\n resources: ICartLineItemPromotionResourceString;\n onSeeAllClick(event: React.MouseEvent): void;\n onCloseButtonClick(): void;\n}\n\nexport interface ICartLineItemViewProps {\n promotionMessageWrapper: INodeProps;\n promotionMessage: React.ReactNode;\n promotionSeeAllLink: React.ReactElement;\n promotionDialog: React.ReactNode;\n}\n\nexport interface ICartLineItemPromotionResourceString {\n promotionLinkText: string;\n promotionStringHeading: string;\n promotionPopupHeading: string;\n promotionCloseButtonAriaLabel: string;\n}\n\nexport const cartPromotions = (props: ICartLineItemPromotion): ICartLineItemViewProps | undefined => {\n const {\n id,\n showPromotionPopup,\n promotions,\n resources: { promotionLinkText, promotionPopupHeading },\n onCloseButtonClick,\n onSeeAllClick\n } = props;\n\n if (!ArrayExtensions.hasElements(promotions)) {\n return;\n }\n\n const titleId = `${id}_title`;\n const className = 'msc-cart__promotion';\n return {\n promotionMessageWrapper: {\n className: 'msc-cart__promotion'\n },\n promotionMessage: (\n <>\n \n {props.resources.promotionStringHeading}\n \n ),\n promotionSeeAllLink: (\n \n {` `}\n {promotionLinkText} {` `}\n \n ),\n promotionDialog: (\n \n \n
\n {promotionPopupHeading}\n
\n
\n \n
    \n {promotions.map(_promotion => {\n return (\n
  • \n {_promotion.Promotion?.OfferName} {` `}\n
  • \n );\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 MsDyn365 from '@msdyn365-commerce/core';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartViewProps, IOrderSummaryErrors } from './cart';\nimport { ICartlinesViewProps } from './components/cart-line-items';\nimport { ICartLineItemViewProps } from './components/cart-line-items-promotion';\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n cartEmptyText: string,\n CartlinesWrapper: INodeProps,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map(cartLine => {\n return (\n
\n {cartLine.cartline}\n {storeSelector && cartLine.pickUpInStore ? (\n {cartLine.pickUpInStore.defaultComponent}\n ) : null}\n {cartLine.addToOrderTemplate ? (\n \n {cartLine.remove}\n {cartLine.addToWishlist}\n {cartLine.addToOrderTemplate}\n \n ) : (\n <>\n {cartLine.remove}\n {cartLine.addToWishlist}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{cartEmptyText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Method will render error block.\n * @param errorData -The order summary errors interface.\n * @returns Jsx element.\n */\nconst _renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Method will render invoice summary lines.\n * @param invoiceSummaryLines -The invoicesummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render order summary lines.\n * @param orderSummaryLines -The ordersummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview props.\n * @returns Jsx element.\n */\nconst _renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n OrderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render cart promotions.\n * @param promotions -The cartline item view props.\n * @returns Jsx element.\n */\nconst _renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Method will render cartlines group title.\n * @param cartLine -The cartline view props.\n * @param titleSeparate -The title separate.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {titleSeparate}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n
\n \n );\n};\n\n/**\n * Method will render cartlines groups header title.\n * @param pickUpText -The pickup text for group.\n * @param shippingText -The shipping text for group.\n * @param emailShippingText -The email shipping text for group.\n * @param titleSeparate -The title separator.\n * @param cartLine -The cartline view props.\n * @param emailDeliveryModeCode -The email delivery code from channel.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupHeader = (\n pickUpText: string,\n shippingText: string,\n emailShippingText: string,\n titleSeparate: string,\n cartLine: ICartlinesViewProps,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailShippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, titleSeparate)}\n
\n \n );\n};\n\n/**\n * Method will render cartlines in groups.\n * @param props -The cartline.\n * @returns Jsx element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n props.resources.pickUpText,\n props.resources.shippingText,\n props.resources.emailshippingText,\n props.resources.titleSeparate,\n cartlines[0],\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n renderCartLinesGroup(props)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n \n )}\n {props.orderSummaryHeading && (\n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? _renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : _renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {_renderErrorBlock(props.OrderSummaryErrors)}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartLine, ProductCatalog, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label\n */\n discountStringText: string;\n\n /**\n * String for size key\n */\n sizeString: string;\n\n /**\n * String for color key\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension\n */\n configString: string;\n\n /**\n * String for style key\n */\n styleString: string;\n\n /**\n * String for amount key\n */\n amountString?: string;\n\n /**\n * Display string for quantity label\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text\n */\n shippingChargesText: string;\n\n priceEditorResources?: ICartLinePriceEditorResources;\n salesAgreementPricePrompt?: string;\n}\n\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from intractable to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\n\n /**\n * GridSettings for the product image in cartLine.\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartLine.\n */\n imageSettings: IImageSettings;\n\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line index.\n */\n lineIndex?: number;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): boolean;\n priceCurrency?: string;\n}\n\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst CartLineItemFunctions = {\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\n if (!Product || !Product.Dimensions) {\n return [];\n }\n\n return Product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === 1) {\n return (\n
\n \n {DimensionStrings.colorString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 2) {\n return (\n
\n \n {DimensionStrings.configString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 3) {\n return (\n
\n \n {DimensionStrings.sizeString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 4) {\n return (\n
\n \n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n return null;\n });\n },\n\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\n return null;\n }\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
\n \n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n \n {` (${discountLine.EffectivePercentage !== undefined ? discountLine.EffectivePercentage : ''}%)`}\n
\n );\n });\n },\n renderInventoryLabel: (props: ICartLineProps) => {\n if (!props.inventoryInformationLabel) {\n return null;\n }\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n return {props.inventoryInformationLabel};\n },\n\n /**\n * Gets the react node for product unit of measure display.\n * @param props - Icartline props.\n * @returns The node representing markup for unit of measure component.\n */\n renderUnitOfMeasure: (props: ICartLineProps) => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n const product = props.data.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
\n {product.DefaultUnitOfMeasure}\n
\n );\n },\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\n\n if (shippingChargeLines.length === 0) {\n return undefined;\n }\n\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\n }, 0);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n (otherCharges &&\n otherCharges.map((otherCharge, key) => {\n return otherCharge && otherCharge.CalculatedAmount ? (\n
\n \n \n \n \n
\n ) : (\n ''\n );\n })) ||\n undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
{props.resources.salesAgreementPricePrompt}
;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\n const renderUnitOfMeasure = CartLineItemFunctions.renderUnitOfMeasure(props);\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\n const renderSalesAgreementPrompt = CartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name || cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue, props.lineIndex);\n }\n return true;\n };\n\n const _generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
\n \n {props.errorMessage}\n
\n );\n }\n\n return null;\n };\n\n const _generateQuantityandPrice = (): JSX.Element[] | null => {\n const nodes = [];\n if (props.isOutOfStock) {\n return null;\n }\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
\n
{resources.quantityDisplayString}
\n \n
\n );\n } else {\n nodes.push(\n
\n \n {props.data.cartLine.Quantity}\n
\n );\n }\n }\n\n nodes.push(\n
\n \n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\n <>\n \n {` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n )) ||\n null}\n
\n );\n\n return nodes;\n };\n\n return (\n <>\n
\n
\n \n
\n
\n
\n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
{productDimensions}
\n ) : (\n ''\n )}\n {renderUnitOfMeasure}\n
\n \n
\n {renderDisountLines}\n {renderInventoryLabel}\n {props.showShippingChargesForLineItems &&
{renderShippingLabel}
}\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
\n {_generateQuantityandPrice()}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n
\n
\n {_generateErrorMessage()}\n \n );\n};\n\nexport default CartLine;\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, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, CartLine } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IInvoiceSummaryProps {\n orderTotalLabel: string;\n invoiceLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n id: string;\n typeName: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n}\n\nexport interface IInvoiceSummaryLines {\n orderTotal: React.ReactNode;\n invoices: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n}\n\ninterface IInvoiceSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n}\n\nconst InvoiceSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel\n}) => {\n return (\n

\n {label}\n {price || price === 0 ? (\n \n ) : (\n {toBeCalculatedText}\n )}\n

\n );\n};\n\nconst _buildPaymentSummarySection = (\n props: IInvoiceSummaryProps,\n price: number | undefined,\n label: string,\n cssLabel: string\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nexport const InvoiceSummary = (props: IInvoiceSummaryProps) => {\n const { TotalAmount, CartLines } = props.cart;\n const invoiceLines = CartLines?.filter(cartLine => cartLine.IsInvoiceLine);\n const reactNodes: IInvoiceSummaryLines = {\n invoices: invoiceLines?.map((invoiceLine: CartLine) => {\n return _buildPaymentSummarySection(\n props,\n invoiceLine.InvoiceAmount,\n format(props.invoiceLabel, invoiceLine.InvoiceId),\n 'invoice'\n );\n }),\n orderTotal: _buildPaymentSummarySection(props, TotalAmount, props.orderTotalLabel, 'total')\n };\n\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildPaymentSummarySection(props, -loyaltyAmount, props.loyaltyLabel || 'Loyalty amount', 'loyalty');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildPaymentSummarySection(\n props,\n -giftCardAmount,\n props.giftcardLabel || 'Gift card amount',\n 'gift-card'\n );\n }\n\n reactNodes.orderTotal = _buildPaymentSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n props.orderTotalLabel,\n 'total'\n );\n }\n\n return reactNodes;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel, ICarouselProps, Player, IPlayerData, IPlayerOptions, IVideoMetadata } from '@msdyn365-commerce/components';\nimport { IImageData, IImageSettings, Image, Video } from '@msdyn365-commerce/core';\nimport { MediaLocation, MediaType, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getFallbackImageUrl, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n defaultDataScale,\n IComponentNodeProps,\n ImagefullView,\n IModalViewProps,\n IModuleProps,\n inlineZoomImageOnHover,\n inlineZoomImageOnMouseMove,\n inlineZoomImageOnMouseOut,\n inlineZoomInitClick,\n INodeProps,\n ISingleSlideCarouselProps,\n isMobile,\n KeyCodes,\n NodeTag,\n onContainerZoomInit,\n onMouseMoveLensContainer,\n onMouseOutLensContainer,\n onMouseOverImageContainer,\n removeContainerZoomStyle,\n removeInlineZoomStyle,\n SingleSlideCarousel,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport * as React from 'react';\n\nimport { IMediaGalleryData } from './media-gallery.data';\nimport { imageSource, imageZoom, IMediaGalleryProps, thumbnailsOrientation } from './media-gallery.props.autogenerated';\nimport { getProductImages, getValidProductImages, getVideoMetadataFromApi, validateProductImages } from './utils';\nimport { getAltText, IMediaData } from './utils/helper';\n\n/**\n * IMediaGalleryState Interface.\n */\nexport interface IMediaGalleryState {\n animating: boolean;\n activeIndex: number;\n isImageZoomed: boolean;\n modalIsOpen: boolean;\n lastUpdate?: number;\n isMobileImageZoomed?: boolean;\n mediaGalleryItems?: IMediaData[];\n isInitialLoad?: boolean;\n shouldUseOptimizedImage?: boolean;\n}\n\n/**\n * IMediaGalleryThumbnailsViewProps Interface.\n */\nexport interface IMediaGalleryThumbnailsViewProps {\n ThumbnailsContainerProps: INodeProps;\n SingleSlideCarouselComponentProps: INodeProps;\n items?: IMediaGalleryThumbnailItemViewProps[];\n}\n\n/**\n * IMediaGalleryThumbnailItemViewProps Interface.\n */\nexport interface IMediaGalleryThumbnailItemViewProps {\n ThumbnailItemContainerProps: INodeProps;\n Picture: React.ReactElement;\n}\n\n/**\n * IMediaGalleryViewProps Interface.\n */\nexport interface IMediaGalleryViewProps extends IMediaGalleryProps {\n state: IMediaGalleryState;\n MediaGallery: IModuleProps;\n CarouselProps: INodeProps;\n Thumbnails: IMediaGalleryThumbnailsViewProps;\n Modal?: React.ReactElement | null;\n callbackToggle?(): void;\n callbackThumbnailClick?(index: number): void;\n callbackThumbnailKeyDown?(index: number): void;\n}\n\n/**\n * Props for carousel.\n */\ninterface IMediaGalleryCarouselItems {\n items: ItemType[];\n keys: (string | undefined)[];\n}\n\n/**\n * Media gallery component.\n */\nclass MediaGallery extends React.Component, IMediaGalleryState> {\n private readonly _inlineZoomDivRef: Map = new Map();\n\n private readonly fullScreenOverlayButtonRef: React.RefObject = React.createRef();\n private readonly player: React.RefObject = React.createRef();\n private fallbackImage?: string;\n\n private readonly defaultGalleryImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=767&h=767&m=8', w: 0, h: 0 },\n sm: { q: 'w=600&h=600&m=8', w: 0, h: 0 },\n md: { q: 'w=600&h=772&m=8', w: 0, h: 0 },\n lg: { q: 'h=772&m=8', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n private readonly defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=100&m=8', w: 100, h: 0 },\n lg: { q: 'w=100&m=8', w: 100, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n private readonly _zoomedImageSettings: IImageSettings;\n\n public constructor(props: IMediaGalleryProps) {\n super(props);\n this._toggleModal = this._toggleModal.bind(this);\n const mediaGalleryImages = this.getImagesData();\n this.state = {\n activeIndex: 0,\n animating: false,\n isImageZoomed: false,\n modalIsOpen: false,\n isInitialLoad: true,\n shouldUseOptimizedImage: !!this.props.config.skipImageValidation,\n mediaGalleryItems: mediaGalleryImages\n };\n\n this._zoomedImageSettings =\n props.config.zoomedImageSettings ?? props.config.galleryImageSettings ?? this.defaultGalleryImageSettings;\n\n this._onImageMouseOut = this._onImageMouseOut.bind(this);\n this._inlineZoomImageOnHover = this._inlineZoomImageOnHover.bind(this);\n this._onInlineImageClick = this._onInlineImageClick.bind(this);\n this._onContainerZoomImageClick = this._onContainerZoomImageClick.bind(this);\n this._onMouseOutLensContainer = this._onMouseOutLensContainer.bind(this);\n }\n\n public isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public async componentDidMount(): Promise {\n const source = this.props.config.imageSource ?? imageSource.pageContext;\n const shouldUpdateOnPartialDimensionSelection = this.props.config.shouldUpdateOnPartialDimensionSelection;\n this._setRenderType();\n if (!this.props.context.request.app?.config?.OmniChannelMedia) {\n if (source === imageSource.pageContext) {\n if (this.state.mediaGalleryItems === undefined && this.props.data.mediaLocationsForSelectedVariant.result) {\n const images = await validateProductImages(\n this.props.data.mediaLocationsForSelectedVariant.result,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings\n );\n await this._setImages(images);\n } else if (this.state.mediaGalleryItems === undefined && this.props.data.product.result) {\n const product = this.props.data.product.result;\n const images = await getValidProductImages(\n product.RecordId,\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n product.productVariant\n );\n\n await this._setImages(images);\n } else {\n await this._setImages([]);\n }\n }\n }\n\n reaction(\n () => {\n const product = this.props.data.product.result;\n if (!product) {\n return null;\n }\n\n if (!shouldUpdateOnPartialDimensionSelection || !product.productVariant?.RecordId) {\n return `${product.RecordId}`;\n }\n\n return `${product.RecordId}-${product.productVariant.RecordId}`;\n },\n async () => {\n const product = this.props.data.product.result;\n let images: IImageData[] = [];\n if (product) {\n if (this.props.context.app?.config?.OmniChannelMedia) {\n images = await getProductImages(\n product.RecordId,\n this.shouldUseCmsAltText(),\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n product.Name,\n shouldUpdateOnPartialDimensionSelection ? product.productVariant : undefined\n );\n } else {\n images = await getValidProductImages(\n product.RecordId,\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n shouldUpdateOnPartialDimensionSelection ? product.productVariant : undefined\n );\n }\n await this._setImages(images);\n } else {\n await this._setImages([]);\n }\n },\n { fireImmediately: true }\n );\n\n if (source === imageSource.productId && this.props.data.mediaLocations.result) {\n const images = await validateProductImages(\n this.props.data.mediaLocations.result,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings\n );\n await this._setImages(images);\n }\n }\n\n public shouldComponentUpdate(nextProps: IMediaGalleryProps, nextState: IMediaGalleryState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { id, config, resources } = this.props;\n\n const { className, showPaginationTooltip } = config;\n\n const isVertical: boolean = config.thumbnailsOrientation === thumbnailsOrientation.vertical;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- || is required.\n const isFullscreenAllowed: boolean = this.isMobile() || config.allowFullScreen || false;\n const zoomViewMode: string =\n config.imageZoom === imageZoom.inline ? imageZoom.inline : config.imageZoom === imageZoom.container ? imageZoom.container : '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Site level config can be of any type.\n const emptyPlaceHolderImage = this.props.context.app.config?.placeholderImageName as string;\n if (this.props.data.product.result) {\n this.fallbackImage = getFallbackImageUrl(\n this.props.data.product.result.ItemId,\n this.props.context.request.apiSettings,\n this.props.context.request.app?.config?.OmniChannelMedia\n );\n }\n if (emptyPlaceHolderImage && this.fallbackImage) {\n this.fallbackImage = `${this.fallbackImage},${emptyPlaceHolderImage}`;\n }\n\n const mediaGalleryCarouselItems = this._getMediaGalleryItems(isFullscreenAllowed, zoomViewMode);\n const mediaGalleryThumbnailCarouselItems = this._getMediaGalleryThumbnailItems();\n const viewProps: IMediaGalleryViewProps = {\n ...(this.props as IMediaGalleryProps),\n state: this.state,\n MediaGallery: {\n moduleProps: this.props,\n className: classnames(`ms-media-gallery ${isVertical ? 'vertical' : ''}`, className)\n },\n Modal: isFullscreenAllowed ? this.imageModalSlider(zoomViewMode) : null,\n callbackToggle: this.openModalDialog,\n callbackThumbnailClick: this._generateOnThumbnailClick,\n callbackThumbnailKeyDown: this._generateOnThumbnailKeyDown,\n CarouselProps: {\n tag: Carousel,\n className: 'ms-media-gallery__carousel',\n items: mediaGalleryCarouselItems.items,\n activeIndex: this.state.activeIndex,\n next: this.next,\n previous: this.previous,\n interval: false,\n directionTextPrev: resources.previousScreenshotFlipperText,\n directionTextNext: resources.nextScreenshotFlipperText,\n onIndicatorsClickHandler: this.goToIndex,\n showPaginationTooltip: showPaginationTooltip === true,\n indicatorAriaText: resources.ariaLabelForSlide,\n handleOnExited: this.onExited,\n handleOnExiting: this.onExiting,\n key: mediaGalleryCarouselItems.keys\n } as IComponentNodeProps,\n Thumbnails: {\n ThumbnailsContainerProps: { className: 'ms-media-gallery__thumbnails-container' },\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: 'ms-media-gallery__thumbnails',\n vertical: isVertical,\n flipperPrevLabel: resources.previousScreenshotFlipperText,\n flipperNextLabel: resources.nextScreenshotFlipperText,\n parentId: id,\n useTabList: true,\n key: JSON.stringify(mediaGalleryThumbnailCarouselItems.keys)\n } as IComponentNodeProps,\n items: mediaGalleryThumbnailCarouselItems.items\n }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Zoomed out image on previous/next click.\n */\n public updateZoomedInImage(): void {\n this.setState({ isImageZoomed: false });\n }\n\n private readonly onExiting = () => {\n this.setState({ animating: true });\n };\n\n private readonly onExited = () => {\n this.setState({ animating: false });\n };\n\n /**\n * On click next in carousel.\n */\n private readonly next = (): void => {\n removeInlineZoomStyle();\n if (this.isLastItem() === undefined) {\n return;\n }\n\n const nextIndex = this.isLastItem() ? 0 : this.state.activeIndex + 1;\n this.goToIndex(nextIndex);\n\n this.updateZoomedInImage();\n };\n\n /**\n * On click previous in carousel.\n */\n private readonly previous = (): void => {\n removeInlineZoomStyle();\n const images = this.state.mediaGalleryItems;\n const nextIndex = this.isFirstItem() ? (images ? images.length - 1 : 0) : this.state.activeIndex - 1;\n this.goToIndex(nextIndex);\n this.updateZoomedInImage();\n };\n\n private readonly goToIndex = (index: number): void => {\n const { autoplay } = this.props.config;\n const currentIndex = this.state.activeIndex;\n const mediaItems = this.state.mediaGalleryItems;\n if (autoplay && mediaItems) {\n if (mediaItems[`${index}`]?.mediaTypeValue === MediaType.Video) {\n this.player.current?.play();\n } else if (mediaItems[`${currentIndex}`].mediaTypeValue === MediaType.Video) {\n this.player.current?.pause();\n }\n }\n this.setState({ activeIndex: index });\n };\n\n private _getMediaGalleryThumbnailItems(): IMediaGalleryCarouselItems {\n const mediaGalleryItems = this.state.mediaGalleryItems;\n const thumbnailImageSettings = this.props.config.thumbnailImageSettings;\n if (thumbnailImageSettings) {\n thumbnailImageSettings.cropFocalRegion = true;\n }\n\n const hasMediaGalleryItems = ArrayExtensions.hasElements(mediaGalleryItems);\n\n if (!hasMediaGalleryItems) {\n if (this.state.lastUpdate) {\n const defaultKey = 0;\n return {\n items: [this._getEmptyThumbnailItem(thumbnailImageSettings, defaultKey, this.state.activeIndex)],\n keys: ['empty']\n };\n }\n return { items: [], keys: [] };\n }\n\n return {\n items: [\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n ...mediaGalleryItems!.map((item: IMediaData, index: number) => {\n if (item.mediaTypeValue === MediaType.Video) {\n return this.getVideoThumbNailItem(\n item,\n thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n index,\n this.state.activeIndex\n );\n } else {\n return this._getThumbnailItem(\n item,\n thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n index,\n this.state.activeIndex\n );\n }\n })\n ],\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n keys: [...mediaGalleryItems!.map(item => item.src)]\n };\n }\n\n private getImagesData = (): IImageData[] => {\n if (this.props.config.skipImageValidation || this.props.context.request.app?.config?.OmniChannelMedia) {\n const source = this.props.config.imageSource ?? imageSource.pageContext;\n let images: IImageData[] = [];\n let mediaLocations: MediaLocation[] = [];\n if (source === imageSource.pageContext && this.props.data.mediaLocationsForSelectedVariant.result) {\n mediaLocations = this.props.data.mediaLocationsForSelectedVariant.result;\n } else if (source === imageSource.productId && this.props.data.mediaLocations.result) {\n mediaLocations = this.props.data.mediaLocations.result;\n }\n images = mediaLocations.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(\n this.props.context.actionContext.requestContext,\n this.shouldUseCmsAltText(),\n this.props.data.product.result?.Name,\n mediaLocation.AltText\n ),\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n const curatedImages = this.props.config.images ?? [];\n\n return [...this._filterMasterImageFromVariant(images), ...curatedImages];\n }\n return [];\n };\n\n private _getMediaGalleryItems(isFullscreenAllowed: boolean, zoomViewMode: string): IMediaGalleryCarouselItems {\n const mediaGalleryItems = this.state.mediaGalleryItems;\n const galleryImageSettings = this.props.config.galleryImageSettings;\n if (galleryImageSettings) {\n galleryImageSettings.cropFocalRegion = true;\n }\n\n const zoomView = isFullscreenAllowed ? 'fullscreen' : zoomViewMode;\n\n const hasMediaGalleryItems = ArrayExtensions.hasElements(mediaGalleryItems);\n\n if (!hasMediaGalleryItems) {\n if (this.state.lastUpdate) {\n return { items: [this._renderEmptyImage(galleryImageSettings)], keys: ['empty'] };\n }\n return { items: [], keys: [] };\n }\n\n return {\n items: [\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n ...mediaGalleryItems!.map((item: IMediaData, index: number) => {\n return this._renderCarouselItemImageView(\n zoomView,\n item,\n galleryImageSettings ?? this.defaultGalleryImageSettings,\n index\n );\n })\n ],\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n keys: [...mediaGalleryItems!.map(item => item.src)]\n };\n }\n\n private async _setImages(images?: IMediaData[]): Promise {\n const curatedImage = this.props.config.images || [];\n const mediaToSet: IMediaData[] = this._filterMasterImageFromVariant(images);\n\n void Promise.all(\n mediaToSet.map(async mediaData => {\n if (mediaData.mediaTypeValue === MediaType.Video && mediaData.src) {\n try {\n const url = new URL(mediaData.src);\n const videoId = url.searchParams.get('CVID');\n if (videoId) {\n mediaData.videoData = await getVideoMetadataFromApi(videoId, this.props.context.actionContext);\n }\n } catch (error) {\n if (this.props.telemetry) {\n this.props.telemetry.debug('Error while fetching videoId');\n }\n }\n }\n return mediaData;\n })\n ).then(mediaData => {\n const mediaItems = mediaData.filter(element => {\n return (\n element.mediaTypeValue !== MediaType.Video ||\n (element.mediaTypeValue === MediaType.Video && element.videoData !== undefined)\n );\n });\n\n this.setState({\n mediaGalleryItems: [...mediaItems, ...curatedImage],\n activeIndex: 0,\n lastUpdate: Date.now(),\n shouldUseOptimizedImage: false\n });\n });\n\n this.setState({\n mediaGalleryItems: [...mediaToSet, ...curatedImage],\n activeIndex: 0,\n lastUpdate: Date.now(),\n shouldUseOptimizedImage: false\n });\n }\n\n private _setRenderType(): void {\n this.setState({\n isInitialLoad: false\n });\n }\n\n private _renderCarouselItemImageView(\n zoomView: string,\n media: IMediaData,\n imageSettings: IImageSettings,\n index: number,\n isInPopup: boolean = false\n ): React.ReactNode {\n if (media.mediaTypeValue === MediaType.Video) {\n if (isInPopup || zoomView !== 'fullscreen') {\n return <>{this._renderCarouselItemVideo(media, index, imageSettings)};\n }\n return <>{this._renderVideoThumbnail(media, index, imageSettings)};\n } else {\n if (this.isMobile()) {\n if (isInPopup) {\n return this._renderImageInContainerOnZoom(media, this._zoomedImageSettings, index);\n }\n return this._renderImageFullScreenOnZoom(media, imageSettings, index);\n }\n\n switch (zoomView) {\n case 'container': {\n return this._renderImageInContainerOnZoom(media, this._zoomedImageSettings, index);\n }\n case 'inline': {\n return this._renderImageInlineOnZoom(media, this._zoomedImageSettings, index);\n }\n case 'fullscreen': {\n return this._renderImageFullScreenOnZoom(media, imageSettings, index);\n }\n\n // No default\n }\n return <>{this._getCarouselItem(media, imageSettings, index, isInPopup)};\n }\n }\n\n private _filterMasterImageFromVariant(images?: IImageData[]): IImageData[] {\n const shouldHidePrimaryImages = this.props.config.shouldHideMasterProductImagesForVariant ?? true;\n let variantImages = images ?? [];\n const isVariantProduct =\n !ObjectExtensions.isNullOrUndefined(this.props.data.product.result?.MasterProductId) ||\n !ObjectExtensions.isNullOrUndefined(this.props.data.product.result?.productVariant);\n const itemId = this.props.data.product.result?.ItemId;\n if (shouldHidePrimaryImages && isVariantProduct && itemId) {\n variantImages = variantImages.filter(item => {\n const isApplicableForChildEntities = item.additionalProperties?.isApplicableForChildEntities;\n return !isApplicableForChildEntities;\n });\n if (!ArrayExtensions.hasElements(variantImages)) {\n variantImages = images ?? [];\n }\n }\n return variantImages;\n }\n\n private readonly _renderCarouselItemVideo = (mediaData: IMediaData, index: number, imageSettings: IImageSettings): React.ReactNode => {\n const videoData = mediaData.videoData;\n if (videoData) {\n const options: IPlayerOptions = this.props.config as IPlayerOptions;\n const playerResources = this.props.resources;\n const videoMetaData: IVideoMetadata = {};\n videoMetaData.videoId = videoData.id;\n videoMetaData.title = videoData.title;\n videoMetaData.duration = videoData.playTime;\n if (videoData.thumbnail) {\n videoMetaData.posterframeUrl = videoData.thumbnail.src;\n }\n if (videoData._links?.binaryReferences) {\n videoMetaData.videoBinaryReferences = videoData._links.binaryReferences;\n }\n const videoPlayerData: IPlayerData = { options, metaData: videoMetaData };\n const attributes = {\n id: `${this.props.id}__carousel-item__${index}`\n };\n return (\n \n );\n }\n return this._renderEmptyImage(imageSettings);\n };\n\n private readonly _getCarouselItem = (\n image: IImageData,\n imageSettings: IImageSettings,\n index: number,\n isInPopup: boolean = false\n ): React.ReactNode => (\n \n );\n\n private readonly _getThumbnailItem = (\n image: IImageData,\n imageSettings: IImageSettings,\n index: number,\n modifiedActiveIndex: number\n ): IMediaGalleryThumbnailItemViewProps => {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: index,\n 'aria-label': image.altText,\n 'aria-selected': modifiedActiveIndex === index,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n };\n\n /**\n * Gets the video thumbnail item to display media gallery.\n * @param props - The Media gallery view props from business layer.\n * @returns Return thumbnail view props which will be used to render video.\n */\n private readonly getVideoThumbNailItem = (\n mediaData: IMediaData,\n imageSettings: IImageSettings,\n index: number,\n modifiedActiveIndex: number\n ): IMediaGalleryThumbnailItemViewProps => {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n const videoData = mediaData.videoData;\n let image: IImageData;\n if (videoData?.thumbnail) {\n image = videoData.thumbnail;\n } else {\n image = {\n src: 'empty'\n };\n }\n\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: index,\n 'aria-label': image.altText,\n 'aria-selected': modifiedActiveIndex === index,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n };\n\n /**\n * Ref Handler.\n * @param index -Remove item click function.\n * @returns Set inline zoom.\n */\n private readonly _refHandler = (index: number) => (divRef: HTMLDivElement) => {\n this._inlineZoomDivRef.set(index, divRef);\n };\n\n private readonly _generateOnThumbnailKeyDown = (index: number) => {\n return (event: React.KeyboardEvent) => {\n if (event.which === KeyCodes.Enter || event.which === KeyCodes.Space) {\n event.preventDefault();\n\n this.goToIndex(index);\n }\n };\n };\n\n private readonly _generateOnThumbnailClick = (index: number) => {\n return (event: React.MouseEvent) => {\n event.preventDefault();\n\n this.goToIndex(index);\n };\n };\n\n private _renderImageInlineOnZoom(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return (\n \n \n \n \n );\n }\n\n private _inlineZoomImageOnHover(event: React.MouseEvent): void {\n inlineZoomImageOnHover(event, this.props.config.dataScale ?? String(defaultDataScale));\n }\n\n private _handleMobileViewZoomedImageClick(event: React.MouseEvent) {\n const target = this.state.shouldUseOptimizedImage ? (event.target as HTMLImageElement) : event.currentTarget;\n const mobileZoomedInImageClassName = 'msc-mobile-zoomed-in';\n if (!this.state.isMobileImageZoomed) {\n const bounds = target.getBoundingClientRect();\n const dataScale = Number(this.props.config.dataScale ?? defaultDataScale);\n\n const positionX = event.clientX - bounds.left;\n const positionY = event.clientY - bounds.top;\n const scaledPositionX = positionX * dataScale;\n const scaledPositionY = positionY * dataScale;\n\n target.style.transform = `scale(${dataScale})`;\n target.classList.add(mobileZoomedInImageClassName);\n target.parentElement!.style.overflow = 'auto';\n target.parentElement!.scrollTo(scaledPositionX - positionX, scaledPositionY - positionY);\n this.setState({\n isMobileImageZoomed: true\n });\n } else {\n target.style.transform = '';\n target.classList.remove(mobileZoomedInImageClassName);\n target.parentElement!.style.overflow = '';\n this.setState({\n isMobileImageZoomed: false\n });\n }\n }\n\n private _onInlineImageClick(event: React.MouseEvent): void {\n if (window.innerWidth <= 768) {\n // $msv-breakpoint-m\n this._handleMobileViewZoomedImageClick(event);\n return;\n }\n inlineZoomInitClick(event, this.props.config.dataScale ?? String(defaultDataScale));\n this.setState({\n isImageZoomed: true\n });\n }\n\n private _onImageMouseOut(event: React.MouseEvent): void {\n inlineZoomImageOnMouseOut(event);\n this.setState({\n isImageZoomed: false\n });\n }\n\n private _onContainerZoomImageClick(event: React.MouseEvent): void {\n if (window.innerWidth <= 768) {\n // $msv-breakpoint-m\n this._handleMobileViewZoomedImageClick(event);\n return;\n }\n\n onContainerZoomInit(event);\n\n this.setState({\n isImageZoomed: true\n });\n }\n\n private _onMouseOutLensContainer(event: React.MouseEvent): void {\n onMouseOutLensContainer(event);\n\n this.setState({\n isImageZoomed: false\n });\n }\n\n private _renderImageInContainerOnZoom(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return (\n
\n \n \n
\n );\n }\n\n private _renderImageFullScreenOnZoom(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return (\n
\n \n
\n {}\n \n
\n
\n );\n }\n\n /**\n * Render the video thumbnail in full screen.\n * @param mediaData - Media Data.\n * @param index - Index\n * @param imageSettings - Image settings.\n * @returns - JSX.Element\n */\n private readonly _renderVideoThumbnail = (mediaData: IMediaData, index: number, imageSettings: IImageSettings): React.ReactNode => {\n const videoData = mediaData.videoData;\n let image: IImageData;\n if (videoData?.thumbnail) {\n image = videoData.thumbnail;\n } else {\n image = {\n src: 'empty'\n };\n }\n\n return (\n
\n \n
\n {}\n \n
\n
\n );\n };\n\n private _mapProductToImageData(product: SimpleProduct): IImageData {\n return {\n src: product.PrimaryImageUrl ?? ''\n };\n }\n\n private _renderEmptyImage(imageSettings: IImageSettings | undefined): React.ReactNode {\n return (\n
\n \n
\n );\n }\n\n private _getEmptyThumbnailItem(\n imageSettings: IImageSettings | undefined,\n index: number,\n modifiedActiveIndex: number\n ): IMediaGalleryThumbnailItemViewProps {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: 'empty',\n 'aria-label': '',\n 'aria-selected': modifiedActiveIndex === index,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n }\n\n private readonly isFirstItem = () => this.state.activeIndex === 0;\n\n private readonly isLastItem = () => {\n const images = this.state.mediaGalleryItems;\n return images && this.state.activeIndex === images.length - 1;\n };\n\n private readonly openModalDialog = (): void => {\n this._toggleModal();\n };\n\n private _toggleModal(): void {\n if (this.state.modalIsOpen) {\n this.fullScreenOverlayButtonRef.current?.focus();\n const parentDiv = this._inlineZoomDivRef.get(this.state.activeIndex);\n if (parentDiv && parentDiv.children && parentDiv.children.length >= 2) {\n const image = parentDiv.children[1].querySelector('img');\n if (image) {\n image.removeAttribute('style');\n }\n }\n this.setState({\n isImageZoomed: false\n });\n }\n this.setState({\n isImageZoomed: false,\n modalIsOpen: !this.state.modalIsOpen\n });\n removeInlineZoomStyle();\n removeContainerZoomStyle();\n }\n\n private readonly imageModalSlider = (ZoomView: string): React.ReactElement => {\n const {\n data: {\n product: { result: product }\n },\n resources\n } = this.props;\n let mediaGalleryItems = this.state.mediaGalleryItems;\n\n if (!mediaGalleryItems && product) {\n mediaGalleryItems = [this._mapProductToImageData(product)];\n }\n const carouselprops = {\n tag: Carousel,\n className: 'ms-media-gallery__carousel',\n items:\n mediaGalleryItems &&\n mediaGalleryItems.map((item: IImageData, index: number) =>\n this._renderCarouselItemImageView(ZoomView, item, this._zoomedImageSettings, index, true)\n ),\n activeIndex: this.state.activeIndex,\n next: this.next,\n previous: this.previous,\n interval: false,\n directionTextPrev: resources.previousScreenshotFlipperText,\n directionTextNext: resources.nextScreenshotFlipperText,\n onIndicatorsClickHandler: this.goToIndex,\n showPaginationTooltip: true,\n hideIndicator: false,\n keyboard: false,\n handleOnExited: this.onExited,\n handleOnExiting: this.onExiting,\n isDisabledFunctionality: this.state.isMobileImageZoomed\n } as IComponentNodeProps;\n const carousel = ;\n\n const imageModalSliderProps: IModalViewProps = {\n modalIsOpen: this.state.modalIsOpen,\n ontoggle: this._toggleModal,\n galleryCarousel: carousel,\n classNames: classnames('ms-media-gallery__modal', 'msc-modal-input-required')\n };\n return ImagefullView(imageModalSliderProps) as React.ReactElement;\n };\n\n private shouldUseCmsAltText = (): boolean => {\n if (this.props.config.altTextSource === 'product') {\n return false;\n } else {\n return true;\n }\n };\n}\n\nexport default MediaGallery;\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 { IMediaGalleryThumbnailItemViewProps, IMediaGalleryThumbnailsViewProps, IMediaGalleryViewProps } from '../..';\n\nconst MediaGalleryView: React.FC = props => {\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n\n return (\n \n \n {Modal}\n {_renderThumbnails(Thumbnails)}\n \n );\n};\n\nconst _renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps): JSX.Element => {\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps, items } = thumbnails;\n\n return (\n \n {items && items.map(_renderThumbnailItem)}\n \n );\n};\n\nconst _renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\nexport default MediaGalleryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageData, IRequestContext, IVideoData } from '@msdyn365-commerce/core';\n\nexport enum MediaType {\n /**\n * The None.\n */\n None = 0,\n /**\n * The Image type.\n */\n Image = 1,\n /**\n * The video type.\n */\n Video = 2,\n /**\n * The file type.\n */\n File = 3\n}\n\nexport interface IMediaData extends IImageData {\n mediaTypeValue?: MediaType;\n displayOrder?: number;\n videoData?: IVideoData;\n}\n\n/**\n * Gets correct alt text for image based on configuration of site.\n * @param productName Product name.\n * @param context Current request context.\n * @param imageAltText Alt-text from CMS image.\n */\nexport function getAltText(\n context: IRequestContext,\n shouldUseCmsAltText: boolean,\n productName?: string,\n imageAltText?: string\n): string | undefined {\n if (!context?.app?.config?.OmniChannelMedia) {\n return productName;\n }\n if (shouldUseCmsAltText) {\n return imageAltText;\n }\n return productName;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n commerceApiRequest,\n commerceVideoMetadataRequest,\n getCatalogId,\n IActionContext,\n IImageData,\n IImageSettings,\n IVideoData\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n getMediaLocationsForSelectedVariant,\n MediaLocationsForSelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { getAltText } from './helper';\n\nasync function validateMediaLocationAsync(mediaLocation: MediaLocation): Promise<[IImageData, boolean]> {\n const imageData: IImageData = {\n src: mediaLocation.Uri || '',\n altText: mediaLocation.AltText || ''\n };\n if (mediaLocation.IsApplicableForChildEntities) {\n imageData.additionalProperties = { isApplicableForChildEntities: 'true' };\n }\n\n if (imageData.src === '') {\n return [imageData, false];\n }\n\n return new Promise<[IImageData, boolean]>(resolve => {\n try {\n const http = new XMLHttpRequest();\n http.open('HEAD', imageData.src!, true);\n\n http.addEventListener('load', () => {\n resolve([imageData, http.status === 200 || http.status === 201]);\n });\n\n http.addEventListener('error', () => {\n resolve([imageData, false]);\n });\n\n http.send();\n } catch {\n resolve([imageData, false]);\n }\n });\n}\n\nexport async function getValidProductImages(\n productId: number,\n channelId: number,\n actionContext: IActionContext,\n imageSettings: IImageSettings,\n selectedProduct?: SimpleProduct\n): Promise {\n const catalogId = getCatalogId(actionContext.requestContext);\n const actionInput = new MediaLocationsForSelectedVariantInput(productId, channelId, selectedProduct, catalogId);\n\n return getMediaLocationsForSelectedVariant(actionInput, actionContext)\n .then(mediaLocations => {\n if (mediaLocations) {\n return Promise.all(mediaLocations.map(mediaLocation => validateMediaLocationAsync(mediaLocation))).then(pairs => {\n return pairs.filter(pair => pair[1]).map(pair => pair[0]);\n });\n }\n\n return [];\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant');\n return [];\n });\n}\n\n/**\n * Gets product variant images on dimension change of buy-box module for Omni scenario.\n * @param productId Product record id.\n * @param shouldUseCmsAltText Alt-text source to use.\n * @param channelId Current channel id.\n * @param actionContext Current action context.\n * @param productName Product name.\n * @param selectedProduct Currently selected variant product.\n * @returns List of images.\n */\n\nexport async function getProductImages(\n productId: number,\n shouldUseCmsAltText: boolean,\n channelId: number,\n actionContext: IActionContext,\n productName?: string,\n selectedProduct?: SimpleProduct\n): Promise {\n const catalogId = getCatalogId(actionContext.requestContext);\n if (actionContext.requestContext?.params?.isPreview) {\n const response = await commerceApiRequest(actionContext.requestContext, 'msdyn365-ochannel-product-info', 'post', {\n productId: productId,\n channelId: channelId,\n catalogId: catalogId\n });\n if (response.status !== 200) {\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant for preview scenario');\n return [];\n }\n const previewImageData = response?.data as MediaLocation[];\n if (previewImageData) {\n return previewImageData.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(actionContext.requestContext, shouldUseCmsAltText, productName, mediaLocation.AltText),\n displayOrder: mediaLocation.DisplayOrder,\n mediaTypeValue: mediaLocation.MediaTypeValue,\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n }\n return [];\n }\n const actionInput = new MediaLocationsForSelectedVariantInput(productId, channelId, selectedProduct, catalogId);\n return getMediaLocationsForSelectedVariant(actionInput, actionContext)\n .then(mediaLocations => {\n if (mediaLocations) {\n return mediaLocations.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(actionContext.requestContext, shouldUseCmsAltText, productName, mediaLocation.AltText),\n displayOrder: mediaLocation.DisplayOrder,\n mediaTypeValue: mediaLocation.MediaTypeValue,\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n }\n return [];\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant');\n return [];\n });\n}\n\nexport async function validateProductImages(\n mediaLocations: MediaLocation[],\n actionContext: IActionContext,\n imageSettings: IImageSettings\n): Promise {\n return Promise.all(mediaLocations.map(mediaLocation => validateMediaLocationAsync(mediaLocation)))\n .then(pairs => {\n return pairs.filter(pair => pair[1]).map(pair => pair[0]);\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to validate product images');\n return [];\n });\n}\n\n/**\n * GetVideoMetadataFromAPI - Makes API call to get video metadata.\n * @param videoId: Video Id\n * @param actionContext: Action context\n * @returns: Returns the meta data of the video.\n */\nexport async function getVideoMetadataFromApi(videoId: string, actionContext: IActionContext): Promise {\n let videoPlayerData: IVideoData | undefined;\n if (videoId) {\n const response = await commerceVideoMetadataRequest(actionContext.requestContext, [videoId]);\n\n if (response.status !== 200) {\n actionContext.telemetry.debug(`Unable to get video metadata for videoId: ${videoId}`);\n return;\n }\n\n const videoData = response.data as [];\n if (videoData && ArrayExtensions.hasElements(videoData)) {\n videoPlayerData = videoData[0];\n }\n }\n return videoPlayerData;\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, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\nexport interface IOrderSummaryProps {\n subTotalLabel: string;\n shippingLabel: string;\n taxLabel: string;\n orderTotalLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n totalDiscountsLabel: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n id: string;\n typeName: string;\n otherChargeLabel?: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n retailMultiplePickUpOptionEnabled?: boolean;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isTaxIncludedInPrice?: boolean;\n isShowTaxBreakup?: boolean;\n customerAccountLabel?: string;\n}\n\nexport interface IOrderSummaryLines {\n subtotal: React.ReactNode;\n shipping?: React.ReactNode;\n otherCharge?: React.ReactNode;\n tax: React.ReactNode;\n orderTotal: React.ReactNode;\n totalDiscounts?: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n customerAccount?: React.ReactNode;\n}\n\ninterface IOrderSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n priceCurrency?: string;\n}\n\ninterface IShippingOrderLine {\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n canShip?: boolean;\n hasDeliveryMethod?: boolean;\n hasShippingMethod?: boolean;\n freightFee?: number;\n}\n\nconst OrderSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel,\n priceCurrency\n}) => {\n return (\n

\n {label}\n {price || price === 0 ? (\n \n ) : (\n {toBeCalculatedText}\n )}\n

\n );\n};\n\nconst _buildOrderSummarySection = (\n props: IOrderSummaryProps,\n price: number | undefined,\n cssLabel: string,\n label: string = ''\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computedCustomerAccountAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.customerAccountAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nconst getDeliveryConfiguration = (\n cart: Cart,\n channelConfiguration: ChannelConfiguration,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n retailMultiplePickUpOptionEnabled?: boolean,\n isTaxIncludedInPrice?: boolean,\n isShowTaxBreakup?: boolean\n): IShippingOrderLine => {\n const pickupDeliveryModeCode = channelConfiguration && channelConfiguration.PickupDeliveryModeCode;\n const emailDeliveryModeCode = channelConfiguration && channelConfiguration.EmailDeliveryModeCode;\n const cartLines = cart.CartLines || [];\n const deliveryModes = cartLines.map(cartLine => cartLine.DeliveryMode);\n const taxOnShippingCharge = cart.TaxOnShippingCharge !== undefined ? cart.TaxOnShippingCharge : 0;\n const shippingChargeAmount = cart.ShippingChargeAmount !== undefined ? cart.ShippingChargeAmount : 0;\n\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True shippingChargeAmount\n // True True shippingChargeAmount\n // True false shippingChargeAmount + taxOnShippingCharge\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n let freightFee: number | undefined = 0;\n if (isTaxIncludedInPrice === undefined || isShowTaxBreakup === undefined) {\n freightFee = cart.ShippingChargeAmount;\n } else {\n freightFee = isTaxIncludedInPrice && !isShowTaxBreakup ? shippingChargeAmount + taxOnShippingCharge : cart.ShippingChargeAmount;\n }\n const canShip = deliveryModes.some(\n deliveryMode =>\n !(\n deliveryMode !== '' &&\n (deliveryMode ===\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) ||\n deliveryMode === emailDeliveryModeCode)\n )\n );\n const hasDeliveryMethod = deliveryModes.some(deliveryMode => !!deliveryMode && deliveryMode !== emailDeliveryModeCode);\n const hasShippingMethod = deliveryModes.some(\n deliveryMode =>\n !!deliveryMode &&\n deliveryMode !==\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) &&\n deliveryMode !== emailDeliveryModeCode\n );\n return {\n canShip,\n hasDeliveryMethod,\n hasShippingMethod,\n freightFee\n } as IShippingOrderLine;\n};\n\nconst getDeliveryMode = (\n deliveryMode?: string,\n featureSate: boolean = false,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n pickupDeliveryMode?: string\n) => {\n if (!featureSate) {\n return pickupDeliveryMode;\n }\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === deliveryMode);\n};\n\n// eslint-disable-next-line complexity\nexport const OrderSummary = (props: IOrderSummaryProps) => {\n const {\n SubtotalAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n SubtotalAmountWithoutTax,\n TaxAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n TaxOnNonShippingCharges,\n DiscountAmount = 0,\n TotalAmount,\n OtherChargeAmount\n } = props.cart;\n\n const { canShip, hasDeliveryMethod, hasShippingMethod, freightFee } = getDeliveryConfiguration(\n props.cart,\n props.channelConfiguration,\n props.channelDeliveryOptionConfig,\n props.retailMultiplePickUpOptionEnabled,\n props.isTaxIncludedInPrice,\n props.isShowTaxBreakup\n );\n\n let reactNodes: IOrderSummaryLines;\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n if (props.isTaxIncludedInPrice === undefined || props.isShowTaxBreakup === undefined) {\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, SubtotalAmount, 'sub-total', props.subTotalLabel),\n tax: _buildOrderSummarySection(props, hasDeliveryMethod ? TaxAmount : undefined, 'tax-amount', props.taxLabel),\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, OtherChargeAmount, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n } else {\n const otherChargeAmount = OtherChargeAmount !== undefined ? OtherChargeAmount : 0;\n const taxOnNonShippingCharges = TaxOnNonShippingCharges !== undefined ? TaxOnNonShippingCharges : 0;\n const isTaxGreaterThanZero = TaxAmount !== undefined && TaxAmount > 0;\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True otherChargeAmount\n // True True otherChargeAmount\n // True false otherChargeAmount+TaxOnNonShippingCharges\n\n const otherChargeAmountTotal =\n props.isTaxIncludedInPrice && !props.isShowTaxBreakup ? otherChargeAmount + taxOnNonShippingCharges : otherChargeAmount;\n\n const subtotalAmountActual = props.isTaxIncludedInPrice && props.isShowTaxBreakup ? SubtotalAmountWithoutTax : SubtotalAmount;\n\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, subtotalAmountActual, 'sub-total', props.subTotalLabel),\n tax: props.isShowTaxBreakup\n ? _buildOrderSummarySection(\n props,\n hasDeliveryMethod || isTaxGreaterThanZero ? TaxAmount : undefined,\n 'tax-amount',\n props.taxLabel\n )\n : '',\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, otherChargeAmountTotal, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n }\n if (canShip) {\n reactNodes.shipping = _buildOrderSummarySection(props, hasShippingMethod ? freightFee : undefined, 'shipping', props.shippingLabel);\n }\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const customerAccountAmount = _computedCustomerAccountAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount - customerAccountAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildOrderSummarySection(props, -loyaltyAmount, 'loyalty', props.loyaltyLabel || 'Loyalty amount');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildOrderSummarySection(props, -giftCardAmount, 'gift-card', props.giftcardLabel || 'Gift card amount');\n }\n\n if (customerAccountAmount > 0) {\n reactNodes.customerAccount = _buildOrderSummarySection(\n props,\n -customerAccountAmount,\n 'customer-credit-amount',\n props.customerAccountLabel || 'Customer Credit amount'\n );\n }\n\n reactNodes.orderTotal = _buildOrderSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n 'total',\n props.orderTotalLabel\n );\n }\n\n if (DiscountAmount > 0) {\n reactNodes.totalDiscounts = _buildOrderSummarySection(props, -DiscountAmount, 'total-discounts', props.totalDiscountsLabel);\n }\n\n return reactNodes;\n};\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 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 if (result.substatus === '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('{maxQuantity}', 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 }\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 .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 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 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 { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { IPriceComponentResources, ProductComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getCatalogId, getUrlSync, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n DimensionAvailabilitiesForProductSearchResultInput,\n DimensionTypes,\n DimensionSwatchDisplayTypes,\n getDimensionAvailabilitiesForProductSearchResultAction,\n getPriceForProductSearchResult,\n IDimensionsApp,\n ObjectExtensions,\n PriceForProductSearchResultInput,\n ProductPriceForSelectedProductsInput,\n validateCatalogId,\n getProductPriceForSelectedProducts\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductCollectionData } from './product-collection.data';\nimport { IProductCollectionProps, layout } from './product-collection.props.autogenerated';\n\nexport interface IProductCollectionViewProps extends IProductCollectionProps {\n heading?: React.ReactNode;\n ProductCollectionContainer: IModuleProps;\n SingleSlideCarouselComponentProps: INodeProps;\n GridComponentProps: INodeProps;\n products: IProductComponentViewProps[];\n isCarousel: boolean;\n productPrices?: ProductPrice[];\n seeAllButton?: React.ReactNode;\n}\n\nexport interface IProductComponentViewProps {\n ProductContainer: INodeProps;\n productComponent: React.ReactNode;\n}\nexport interface IProductComponentState {\n products: ProductSearchResult[];\n productPrices: ProductPrice[];\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\n}\n\n/**\n * ProductCollection component.\n */\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly productPrices: ProductPrice[];\n\n constructor(props: IProductCollectionProps) {\n super(props);\n this.productPrices = [];\n this.state = {\n products: this.props.config.productCollection.products || [],\n productPrices: this.productPrices || []\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n if (this.props.config.enableAffiliationBasedPricing && this.props.context.actionContext.requestContext.user.isAuthenticated) {\n await this._getActivePrice();\n }\n }\n\n public render(): JSX.Element | null {\n const { heading, className, shouldDisplaySeeAllButton } = this.props.config;\n const { resources } = this.props;\n const recommendation = this.props.config.productCollection.recommendationListId;\n const discountIds = this.props.config.productCollection.discountIds;\n\n // Initialize state in case if the products were not found during initial module render\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data if not there.\n this.initProductState(this.props.config.productCollection);\n\n const products = this.state.products;\n const productPrices = this.state.productPrices;\n\n const isCarousel = this.props.config.layout === layout.carousel;\n const headingLabel = heading ? heading.text : '';\n const headingComponent = heading && (\n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- product check for safety.\n const updatedProducts = products?.map((item: ProductSearchResult, index: number) => {\n const getProductData = this._getProduct(item, index, productPrices ? productPrices.at(index) : undefined);\n return !ObjectExtensions.isNullOrUndefined(getProductData) ? getProductData : undefined;\n });\n\n const productCollectionViewProps = {\n ...this.props,\n heading: headingComponent,\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: '',\n flipperPrevLabel: `${headingLabel} ${resources.flipperPrevious}`,\n flipperNextLabel: `${headingLabel} ${resources.flipperNext}`,\n parentId: this.props.id,\n telemetryContent: this.telemetryContent\n } as IComponentNodeProps,\n ProductCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-product-collection', className)\n },\n GridComponentProps: {\n tag: 'ul' as NodeTag,\n className: 'ms-product-collection__items'\n },\n isCarousel,\n\n products:\n ArrayExtensions.hasElements(updatedProducts) &&\n updatedProducts.filter(item => {\n return item !== undefined;\n }),\n productPrices: this.productPrices,\n seeAllButton:\n (recommendation || discountIds) && shouldDisplaySeeAllButton && ArrayExtensions.hasElements(updatedProducts)\n ? this._getSeeAllButton(headingLabel, recommendation, discountIds)\n : undefined\n };\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * Get products dimension availabilities.\n * @param products - Products.\n * @returns Promise.\n */\n private readonly _getProductsDimensionsAvailabilities = async (products: ProductSearchResult[]): Promise => {\n const context = this.props.context as ICoreContext;\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n const validProducts = ArrayExtensions.validValues(products);\n if (\n ArrayExtensions.hasElements(validProducts) &&\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none)\n ) {\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\n new DimensionAvailabilitiesForProductSearchResultInput(\n validProducts,\n this.props.context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n ),\n this.props.context.actionContext\n );\n\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n this.setState({ productsDimensionAvailabilities });\n }\n }\n };\n\n /**\n * Helper method to initialize products state.\n * @param productCollection - List of products.\n */\n private readonly initProductState = async (productCollection: Msdyn365.IProductList) => {\n let products = this.state.products;\n let productPrices = this.state.productPrices;\n const productCollectionProducts = productCollection.products;\n if (!ArrayExtensions.hasElements(products) && ArrayExtensions.hasElements(productCollectionProducts)) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (\n ArrayExtensions.hasElements(products) &&\n ArrayExtensions.hasElements(productCollectionProducts) &&\n !ArrayExtensions.equals(products, productCollectionProducts)\n ) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (productCollectionProducts === undefined && ArrayExtensions.hasElements(this.state.products)) {\n products = [];\n this.setState({ products: products });\n }\n\n if (Msdyn365.msdyn365Commerce.isBrowser && !ArrayExtensions.hasElements(this.state.productsDimensionAvailabilities)) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n if (this.props.config.productCollection.listType === 'promotional') {\n productPrices = await getProductPriceForSelectedProducts(\n new ProductPriceForSelectedProductsInput(products.map(p => p.RecordId)),\n this.props.context.actionContext\n );\n this.setState({ productPrices: productPrices });\n }\n };\n\n private readonly _getProduct = (\n product: ProductSearchResult,\n index: number,\n productPrice?: ProductPrice\n ): IProductComponentViewProps | null => {\n if (!product || !product.Name) {\n this.props.telemetry.trace('[product-collection] Product or product name is null');\n return null;\n }\n const telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const { imageSettings, allowBackNavigation } = this.props.config;\n const resources = this.props.resources;\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\n const quickviewSlot =\n this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\n const productComparisonButtonSlot = ArrayExtensions.hasElements(this.props.slots.productComparisonButton)\n ? this.props.slots.productComparisonButton[0]\n : null;\n\n const reviewCount = 1;\n const reviewTotalRatings = Number(product.TotalRatings);\n const reviewCountAriaLabelValue =\n reviewTotalRatings > reviewCount ? resources.ratingCountAriaLabel : resources.ratingCountAriaLabelSingleUser;\n const isPriceMinMaxEnabled = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n return {\n ProductContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-product-collection__item',\n role: 'listitem',\n key: index\n },\n productComponent: (\n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === (product.MasterProductId ?? product.RecordId)\n )}\n />\n )\n };\n };\n\n /**\n * Get the active price for products.\n */\n private readonly _getActivePrice = async (): Promise => {\n const productsList = this.state.products;\n const products = await getPriceForProductSearchResult(\n new PriceForProductSearchResultInput(productsList),\n this.props.context.actionContext\n );\n if (Msdyn365.msdyn365Commerce.isBrowser) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n this.setState({ products });\n };\n\n /**\n * Get the see all button.\n * @param headingLabel - Heading label.\n * @param recommendation - Recommendation.\n * @param discountIds - Discount Ids.\n * @returns IProductComponentSeeAllViewProps - Product component see all view props.\n */\n private readonly _getSeeAllButton = (headingLabel: string, recommendation?: string, discountIds?: string[]): React.ReactNode => {\n if (!Msdyn365.msdyn365Commerce.isBrowser) {\n return null;\n }\n\n if (!recommendation && !discountIds) {\n return null;\n }\n\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const searchPageLink = getUrlSync('search', this.props.context.actionContext);\n if (!searchPageLink) {\n return null;\n }\n\n const url = new URL(searchPageLink, window.location.href);\n\n if (discountIds) {\n // see all button for promotion page\n url.searchParams.set('discountIds', discountIds.toString());\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n } else if (recommendation) {\n // See all button for recommendation\n url.searchParams.set('recommendation', recommendation);\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n }\n\n return (\n \n {this.props.resources.seeAllButtonText}\n \n );\n };\n}\n\nexport default ProductCollection;\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 { IProductCollectionViewProps, IProductComponentViewProps } from './product-collection';\n\nconst ProductCollectionView: React.FC = props => {\n const {\n heading,\n ProductCollectionContainer,\n products,\n SingleSlideCarouselComponentProps,\n GridComponentProps,\n isCarousel,\n seeAllButton\n } = props;\n\n if (products) {\n return (\n \n {heading}\n {seeAllButton}\n {isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products) : _renderGrid(GridComponentProps, products)}\n \n );\n }\n props.context.telemetry.error('Product collection content is empty, module wont render.');\n return null;\n};\n\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\n const { ProductContainer, productComponent } = product;\n\n return {productComponent};\n};\n\nexport default ProductCollectionView;\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