{"version":3,"file":"static/js/6a447900fbeb2c65935f.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online.Memx/./src/actions/get-product-default-variant.action.ts?4082","webpack://Msdyn365.Commerce.Online.Memx/./src/actions/get-product-warranties-in-active-cart.action.ts?0f58","webpack://Msdyn365.Commerce.Online.Memx/./src/actions/get-product-warranties.action.ts?94d8","webpack://Msdyn365.Commerce.Online.Memx/./src/themes/memoryexpress/views/cart-icon.view.tsx?9bab","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/mmx-store-selector/state-manager/base-store-selector-state-manager.ts?fa5d","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/mmx-store-selector/state-manager/map-store-selector-state-manager.ts?a944","webpack://Msdyn365.Commerce.Online.Memx/./src/utilities/utils.ts?6402","webpack://Msdyn365.Commerce.Online.Memx/./lib/cart-icon/module-registration.js?4d28","webpack://Msdyn365.Commerce.Online.Memx/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online.Memx/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online.Memx/../../src/search-org-unit-locations.ts?d18d","webpack://Msdyn365.Commerce.Online.Memx/./src/modules/adventureworks/views/cart-icon.view.tsx?7ec9","webpack://Msdyn365.Commerce.Online.Memx/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online.Memx/external var \"ReactDOM\"?853b"],"sourcesContent":["import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n ICreateActionContext,\r\n IActionContext,\r\n IActionInput,\r\n IGeneric,\r\n IAny\r\n} from '@msdyn365-commerce/core';\r\nimport { getProductDefaultVariantsAsync } from './DataActionExtension.g';\r\nimport { IProductDefaultVariant } from './DataServiceEntities.g';\r\nimport { getSelectedProductIdFromActionInput } from '../utilities/utils';\r\n\r\n/*\r\n * Input class for the getProductDefaultVariant data action\r\n */\r\nexport class ProductDefaultVariantInput implements IActionInput {\r\n public productId: number;\r\n constructor(productId: number) {\r\n this.productId = productId;\r\n }\r\n public getCacheKey = () => `mmx-productdefaultvariant-${this.productId.toString()}`;\r\n public getCacheObjectType = () => 'IProductDefaultVariant';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * Create input method for the getProductDefaultVariant data action.\r\n * @param inputData The input data passed to the createInput method.\r\n */\r\nexport const createProductDefaultVariantInput = (inputData: ICreateActionContext>): ProductDefaultVariantInput[] => {\r\n const productIds: string[] = [];\r\n const selectedId = getSelectedProductIdFromActionInput(inputData);\r\n if (selectedId) {\r\n productIds.push(selectedId);\r\n if (Array.isArray(productIds) && productIds.length > 0) {\r\n return productIds.map((productId: string) => {\r\n return new ProductDefaultVariantInput(+productId);\r\n });\r\n }\r\n }\r\n throw new Error('Unable to find product variant, no productId found on module config or query');\r\n};\r\n\r\n/**\r\n * Action method for the getProductDefaultVariant data action.\r\n * @param input\r\n * @param ctx\r\n */\r\nexport async function getProductDefaultVariantAction(\r\n input: ProductDefaultVariantInput[],\r\n ctx: IActionContext\r\n): Promise {\r\n const productIds = input.map((input: ProductDefaultVariantInput): number => {\r\n return input.productId;\r\n });\r\n return getProductDefaultVariantsAsync({ callerContext: ctx }, productIds).then((response: IProductDefaultVariant[]) => {\r\n return response;\r\n });\r\n}\r\n\r\n/**\r\n * The GetProductDefaultVariant data action\r\n * Finds product the default variants for given product masters via the RetailServer API.\r\n */\r\nexport default createObservableDataAction({\r\n id: 'get-product-default-variant',\r\n action: >getProductDefaultVariantAction,\r\n input: createProductDefaultVariantInput,\r\n isBatched: true\r\n});\r\n","import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport { IProductWarranties } from './DataServiceEntities.g';\r\nimport { getProductWarrantiesAction, ProductWarrantiesInput } from './get-product-warranties.action';\r\nimport { getActiveCartProductsAction, ActiveCartProductsInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/*\r\n * Input class for the getProductWarrantiesByCartInput data action\r\n */\r\nexport class GetProductWarrantiesByCartInput implements IActionInput {\r\n public getCacheKey = () => `mmx-productwarrantiesinactivecart`;\r\n public getCacheObjectType = () => 'IProductWarranties';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * Create input method for the getProductWarrantiesByCart data action.\r\n */\r\nexport const createProductWarrantiesByCartInput = (args: ICreateActionContext): IActionInput => {\r\n return new GetProductWarrantiesByCartInput();\r\n};\r\n\r\n/**\r\n * Action method for the getProductWarrntiesByCart data action.\r\n * @param input\r\n * @param ctx\r\n */\r\nexport async function getProductWarrntiesByCartAction(\r\n input: GetProductWarrantiesByCartInput,\r\n ctx: IActionContext\r\n): Promise {\r\n var productWarrantiesInput: ProductWarrantiesInput[] = [];\r\n\r\n return getActiveCartProductsAction(new ActiveCartProductsInput(), ctx).then((response: SimpleProduct[]) => {\r\n response.map(cartProduct => {\r\n productWarrantiesInput.push(new ProductWarrantiesInput(cartProduct.RecordId));\r\n });\r\n\r\n return getProductWarrantiesAction(productWarrantiesInput, ctx).then((response: IProductWarranties[]) => {\r\n return response;\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * The GetProductWarrantiesByCart data action\r\n * Gets all products in the active cart and finds the applicable\r\n * warranty for each product via the getProductWarranties RetailServer API\r\n */\r\nexport default createObservableDataAction({\r\n id: 'get-product-warranties-by-cart',\r\n action: >getProductWarrntiesByCartAction,\r\n input: createProductWarrantiesByCartInput,\r\n isBatched: false\r\n});\r\n","import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n ICreateActionContext,\r\n IActionContext,\r\n IActionInput,\r\n IGeneric,\r\n IAny\r\n} from '@msdyn365-commerce/core';\r\nimport { getProductWarrantiesAsync } from './DataActionExtension.g';\r\nimport { IProductWarranties, IProductDefaultVariant } from './DataServiceEntities.g';\r\nimport { getProductDefaultVariantAction, ProductDefaultVariantInput } from './get-product-default-variant.action';\r\nimport { getSelectedProductIdFromActionInput } from '../utilities/utils';\r\n\r\n/*\r\n * Input class for the getProductWarranties data action\r\n */\r\nexport class ProductWarrantiesInput implements IActionInput {\r\n public productId: number;\r\n constructor(productId: number) {\r\n this.productId = productId;\r\n }\r\n public getCacheKey = () => `mmx-productwarranties-${this.productId}`;\r\n public getCacheObjectType = () => 'IProductWarranties';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * Create input method for the getProductWarranties data action.\r\n * @param inputData The input data passed to the createInput method.\r\n */\r\nexport const createProductWarrantiesInput = (inputData: ICreateActionContext>): ProductWarrantiesInput[] => {\r\n const productIds: string[] = [];\r\n const selectedId = getSelectedProductIdFromActionInput(inputData);\r\n if (selectedId) {\r\n productIds.push(selectedId);\r\n if (Array.isArray(productIds) && productIds.length > 0) {\r\n return productIds.map((productId: string) => {\r\n return new ProductWarrantiesInput(+productId);\r\n });\r\n }\r\n }\r\n throw new Error('Unable to find product warranties, no productId found on module config or query');\r\n};\r\n\r\n/**\r\n * Action method for the getProductWarranties data action.\r\n * @param inputs\r\n * @param ctx\r\n */\r\nexport async function getProductWarrantiesAction(input: ProductWarrantiesInput[], ctx: IActionContext): Promise {\r\n if (!Array.isArray(input) || input.length === 0) {\r\n ctx.telemetry.trace('[getProductWarranties] Invalid or empty input.');\r\n return {};\r\n }\r\n\r\n const productDefaultVariantInputs: ProductDefaultVariantInput[] = input.map(\r\n (input: ProductWarrantiesInput): ProductDefaultVariantInput => {\r\n return new ProductDefaultVariantInput(input.productId);\r\n }\r\n );\r\n\r\n return getProductDefaultVariantAction(productDefaultVariantInputs, ctx).then((response: IProductDefaultVariant[]) => {\r\n const defaultProductMasterIds: number[] = [];\r\n const defaultVariantIds: number[] = [];\r\n\r\n response.map(response => {\r\n defaultProductMasterIds.push(response.MasterId);\r\n defaultVariantIds.push(response.DefaultProductId);\r\n });\r\n\r\n // Product Ids not accounted for by the getProductDefaultVariantAction response\r\n const missingInputIds = input\r\n .filter(input => !defaultProductMasterIds.includes(input.productId))\r\n .map(input => {\r\n return input.productId;\r\n });\r\n\r\n const allProductIds = [...new Set([...defaultVariantIds, ...missingInputIds])];\r\n\r\n return getProductWarrantiesAsync({ callerContext: ctx }, allProductIds).then((response: IProductWarranties[]) => {\r\n return response;\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * The GetProductWarranties data action\r\n * Finds variants from product masters or uses\r\n * Then finds the applicable warranties via the getProductWarranties RetailServer API.\r\n */\r\nexport default createObservableDataAction({\r\n id: 'get-product-warranties',\r\n action: >getProductWarrantiesAction,\r\n input: createProductWarrantiesInput,\r\n isBatched: true\r\n});\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\r\n//mmx-feature: imports --start\r\n/*\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps, ICartlinesViewProps} from '@msdyn365-commerce-modules/cart';\r\n*/\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\r\n//mmx-feature: imports --end\r\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport { ICartIconProps as ICartIconExtensionProps } from '../definition-extensions/cart-icon.ext.props.autogenerated';\r\n\r\n//mmx-feature: imports --start\r\nimport { IProductWarranties, IWarrantyOption } from '../../../actions/DataServiceEntities.g';\r\nimport { ICartIconData } from './cart-icon.data';\r\nimport ProductWarrantyComponent from '../../../components/warranty/product-warranty/product-warranty';\r\nimport { pairWarrantyItemLines, IPairedWarrantyLine, WarrantyLineDataType, findSelectedWarranty } from '../../../utilities/warranty/utils';\r\nimport { GetProductWarrantiesByCartInput, getProductWarrntiesByCartAction } from '../../../actions/get-product-warranties-in-active-cart.action';\r\n//mmx-feature: imports --end\r\n\r\n/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n //mmx-feature: warranty --start\r\n warrantiesInCart?: IProductWarranties[] | undefined;\r\n //mmx-feature: warranty --end\r\n}\r\n\r\n//mmx-feature: paired cart lines --start\r\n/**\r\n * Render Cart lines.\r\n * @param cartLines - Flyout cart line view props.\r\n * @param props - Cart icon view props.-\r\n * @returns JSX Element.\r\n */\r\n/*\r\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\r\n if (!cartLines) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n {cartLine.cartline}\r\n {cartLine.storeLocation}\r\n {cartLine.remove}\r\n \r\n );\r\n });\r\n};\r\n*/\r\n\r\nconst renderPairedCartlines = (\r\n pairedCartLines: IPairedWarrantyLine[] | undefined,\r\n props: ICartIconViewProps & ICartIconExtensionProps,\r\n warrantiesInCart: IProductWarranties[] | undefined\r\n): JSX.Element[] | null => {\r\n if (!pairedCartLines) {\r\n props.context.telemetry.error('Cartlines content is empty, module wont render');\r\n return null;\r\n }\r\n const productWarranties = warrantiesInCart ?? props.data?.productWarrantiesInActiveCart?.result;\r\n return pairedCartLines.map((pairedCartLine, index) => {\r\n const recordId = pairedCartLine.item?.data?.product?.RecordId;\r\n const cartLineIndex = index;\r\n const productWarrantiesForCartline: IProductWarranties | undefined =\r\n productWarranties && productWarranties.length > 0\r\n ? productWarranties?.find(productWarranties => productWarranties.ProductId === pairedCartLine.item.data?.cartline.ProductId)\r\n : undefined;\r\n let selectedWarranty: IWarrantyOption | undefined = findSelectedWarranty(\r\n recordId ?? 0,\r\n pairedCartLine,\r\n productWarrantiesForCartline,\r\n WarrantyLineDataType.IFlyoutCartLineItemViewProps\r\n );\r\n if (productWarranties && productWarrantiesForCartline) {\r\n return (\r\n \r\n \r\n {pairedCartLine.item.cartline}\r\n \r\n {pairedCartLine.item.storeLocation}\r\n {props.context.app.config.productWarrantyEnabled && (\r\n \r\n )}\r\n {pairedCartLine.item.remove}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {pairedCartLine.item.cartline}\r\n \r\n {pairedCartLine.item.storeLocation}\r\n {pairedCartLine.item.remove}\r\n \r\n );\r\n }\r\n });\r\n};\r\n//mmx-feature: paired cart lines --end\r\n\r\n/**\r\n * Initiate total price.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\r\n const totalPrice = price\r\n ? props.context.cultureFormatter.formatCurrency(price)\r\n : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\r\n return cart && !cart.hasInvoiceLine ? (\r\n
\r\n \r\n {props.resources.totalPriceFormatString}\r\n {totalPrice}\r\n \r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\n/**\r\n * Initiate subtotal message.\r\n * @param props - Cart icon view props.\r\n * @returns JSX Element.\r\n */\r\nconst renderSubtotalMessage = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\r\n const cart = props.data.cart.result ?? undefined;\r\n return cart && !cart.hasInvoiceLine ?

{props.resources.subTotalMessage}

: null;\r\n};\r\n\r\n/**\r\n *\r\n * CartIconView component.\r\n * @extends {React.PureComponent}\r\n */\r\n//mmx-feature: view extension --start\r\n/*\r\nexport class CartIconView extends React.PureComponent<\r\n ICartViewProps & ICartIconViewProps & ICartIconExtensionProps<{}>,\r\n ICartIconViewState\r\n> {\r\n*/\r\nexport class CartIconView extends React.PureComponent<\r\n ICartViewProps & ICartIconViewProps & ICartIconExtensionProps,\r\n ICartIconViewState\r\n> {\r\n //mmx-feature: view extension --end\r\n private isAutoDisplayTriggered: boolean;\r\n\r\n private readonly cartIconRef: React.RefObject = React.createRef();\r\n\r\n //mmx-feature: view extension --start\r\n /*\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\r\n */\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps) {\r\n //mmx-feature: view extension --end\r\n super(props);\r\n this.isAutoDisplayTriggered = false;\r\n this.state = {\r\n isModalOpen: false\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('keydown', this._escFunction, false);\r\n }\r\n }\r\n\r\n //mmx-feature: warranty --start\r\n public async componentDidUpdate(prevProps: Readonly>, prevState: Readonly, snapshot?: any): Promise {\r\n if (this.state.isModalOpen && !prevState.isModalOpen) {\r\n const newWarrantiesInCart = await getProductWarrntiesByCartAction(new GetProductWarrantiesByCartInput(), this.props.context.actionContext);\r\n this.setState({ warrantiesInCart: newWarrantiesInCart });\r\n }\r\n }\r\n //mmx-feature: warranty --end\r\n\r\n /**\r\n * Render Cart Item count.\r\n * @returns JSX Element.\r\n */\r\n public render(): JSX.Element | null {\r\n const cart = this.props.data.cart.result ?? undefined;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\r\n const shouldShowMiniCart =\r\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\r\n if (shouldShowMiniCart) {\r\n if (!this.isAutoDisplayTriggered) {\r\n // First time trigger auto mini cart.\r\n this.setState({ isModalOpen: true });\r\n this.isAutoDisplayTriggered = true;\r\n } else if (!this.state.isModalOpen) {\r\n // If modal is closed, reset the flag.\r\n this.isAutoDisplayTriggered = false;\r\n }\r\n }\r\n //mmx-feature: warranty --start\r\n let pairedCartLines : IPairedWarrantyLine[] = [];\r\n if (this.state.isModalOpen && this.props.cartlines) {\r\n pairedCartLines = pairWarrantyItemLines(this.props.cartlines, WarrantyLineDataType.IFlyoutCartLineItemViewProps);\r\n }\r\n //mmx-feature: warranty --end\r\n return (\r\n \r\n \r\n \r\n \r\n {this.props.flyoutTitle}\r\n {this._renderCartItemCount(this.props)}\r\n {this._renderCartCloseIcon()}\r\n \r\n \r\n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\r\n {this.props.checkoutBlockedDueToUnavailableFunds}\r\n {/*mmx-feature: warranty --start*/\r\n /*\r\n {renderCartlines(this.props.cartlines, this.props)}\r\n */\r\n {renderPairedCartlines(pairedCartLines, this.props, this.state.warrantiesInCart)}\r\n /*mmx-feature: warranty --end*/}\r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n {renderSubtotalMessage(this.props)}\r\n {this.props.checkoutAsSignInUserButton}\r\n {this.props.checkoutAsGuestButton}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\r\n \r\n {this.props.data.cart.result?.isEmpty ? (\r\n \r\n {this.props.resources.continueShoppingButtonTitle}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Initiate modal container.\r\n * @returns Inode props.\r\n */\r\n private readonly _modalContainer = (): INodeProps => {\r\n return {\r\n tag: Modal,\r\n placement: 'bottom-end',\r\n hideArrow: true,\r\n className: 'ms-cart-icon__minicartmodal-container',\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.cartIconRef.current?.focus();\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _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\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\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 if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\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 { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\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';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', 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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\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 (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\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 quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\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 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.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\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 || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\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 IAny,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { searchOrgUnitLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\n/**\n * Input for search-org-unit-locations data action.\n */\nexport class SearchOrgUnitLocationsInput implements IActionInput {\n public getCacheKey = () => 'SearchOrgUnitLocations';\n\n public getCacheObjectType = () => 'SearchOrgUnitLocations';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData -- Input data.\n * @returns -- IActionInput.\n */\nexport const createSearchOrgUnitLocationsInputFunc = (inputData: ICreateActionContext>): IActionInput => {\n return new SearchOrgUnitLocationsInput();\n};\n\n/**\n * Calls the Retail API and returns all the orgUnitLocations as array.\n * @param input - Input.\n * @param ctx - Context.\n * @returns - orgUnitLocations.\n */\nexport async function getSearchOrgUnitLocationsAction(\n input: SearchOrgUnitLocationsInput,\n context: IActionContext\n): Promise {\n const OrgUnitLocations = await searchOrgUnitLocationsAsync(\n {\n callerContext: context\n },\n {}\n );\n\n return OrgUnitLocations;\n}\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >getSearchOrgUnitLocationsAction,\n input: createSearchOrgUnitLocationsInputFunc\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { ICartIconProps as ICartIconExtensionProps } from '../definition-extensions/cart-icon.ext.props.autogenerated';\n\n/**\n * ICartIconViewState: Interface for Cart Icon View State.\n */\ninterface ICartIconViewState {\n isModalOpen: boolean;\n}\n\n/**\n * Render Cart lines.\n * @param cartLines - Flyout cart line view props.\n * @param props - Cart icon view props.-\n * @returns JSX Element.\n */\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n return cartLines.map((cartLine, index) => {\n const cartLineIndex = index;\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\n/**\n * Initiate total price.\n * @param props - Cart icon view props.\n * @returns JSX Element.\n */\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\n const cart = props.data.cart.result ?? undefined;\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\n const totalPrice = price\n ? props.context.cultureFormatter.formatCurrency(price)\n : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\n return cart && !cart.hasInvoiceLine ? (\n
\n \n {props.resources.totalPriceFormatString}\n {totalPrice}\n \n
\n ) : (\n <>\n );\n};\n\n/**\n * Initiate subtotal message.\n * @param props - Cart icon view props.\n * @returns JSX Element.\n */\nconst renderSubtotalMessage = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\n const cart = props.data.cart.result ?? undefined;\n return cart && !cart.hasInvoiceLine ?

{props.resources.subTotalMessage}

: null;\n};\n\n/**\n *\n * CartIconView component.\n * @extends {React.PureComponent}\n */\nexport class CartIconView extends React.PureComponent<\n ICartViewProps & ICartIconViewProps & ICartIconExtensionProps<{}>,\n ICartIconViewState\n> {\n private isAutoDisplayTriggered: boolean;\n\n private readonly cartIconRef: React.RefObject = React.createRef();\n\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\n super(props);\n this.isAutoDisplayTriggered = false;\n this.state = {\n isModalOpen: false\n };\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n window.addEventListener('keydown', this._escFunction, false);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('keydown', this._escFunction, false);\n }\n }\n\n /**\n * Render Cart Item count.\n * @returns JSX Element.\n */\n public render(): JSX.Element | null {\n const cart = this.props.data.cart.result ?? undefined;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n if (shouldShowMiniCart) {\n if (!this.isAutoDisplayTriggered) {\n // First time trigger auto mini cart.\n this.setState({ isModalOpen: true });\n this.isAutoDisplayTriggered = true;\n } else if (!this.state.isModalOpen) {\n // If modal is closed, reset the flag.\n this.isAutoDisplayTriggered = false;\n }\n }\n return (\n \n \n \n \n {this.props.flyoutTitle}\n {this._renderCartItemCount(this.props)}\n {this._renderCartCloseIcon()}\n \n \n {this.props.data.cart.result?.isEmpty ? this.props.slots.emptyCart : null}\n {this.props.checkoutBlockedDueToUnavailableFunds}\n {renderCartlines(this.props.cartlines, this.props)}\n \n \n {this.props.slots.promoContentItem}\n {renderTotalPrice(this.props)}\n {renderSubtotalMessage(this.props)}\n {this.props.checkoutAsSignInUserButton}\n {this.props.checkoutAsGuestButton}\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\n \n {this.props.data.cart.result?.isEmpty ? (\n \n {this.props.resources.continueShoppingButtonTitle}\n \n ) : null}\n \n \n \n \n );\n }\n\n /**\n * Initiate modal container.\n * @returns Inode props.\n */\n private readonly _modalContainer = (): INodeProps => {\n return {\n tag: Modal,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__minicartmodal-container',\n wrapClassName: 'ms-cart-icon__minicartmodal',\n isOpen: this.state.isModalOpen,\n toggle: this.closeModal\n };\n };\n\n /**\n * Initiate open modal.\n */\n private readonly _openModal = (): void => {\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\n this.setState({\n isModalOpen: true\n });\n };\n\n /**\n * Initiate close modal.\n */\n private readonly closeModal = (): void => {\n this.cartIconRef.current?.focus();\n this.setState({\n isModalOpen: false\n });\n };\n\n /**\n * Initiate cart close Icon.\n * @returns JSX Element.\n */\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\n return