{"version":3,"file":"static/js/8c6d85661e5e2f94a957.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/css-custom/views/cart-icon.view.tsx?cad9","webpack://Msdyn365.Commerce.Online/./lib/cart-icon/module-registration.js?4d28","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-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/../../src/search-org-unit-locations.ts?d18d","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart-icon.view.tsx?7ec9","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\r\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\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/**\r\n * ICartIconViewState: Interface for Cart Icon View State.\r\n */\r\ninterface ICartIconViewState {\r\n isModalOpen: boolean;\r\n}\r\n\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\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\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 && props.context.request.user.isAuthenticated ? (\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\nexport class CartIconView extends React.PureComponent<\r\n ICartViewProps & ICartIconViewProps & ICartIconExtensionProps<{}>,\r\n ICartIconViewState\r\n> {\r\n private isAutoDisplayTriggered: boolean;\r\n\r\n private readonly cartIconRef: React.RefObject = React.createRef();\r\n\r\n public constructor(props: ICartViewProps & ICartIconViewState & ICartIconViewProps & ICartIconExtensionProps<{}>) {\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 /**\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 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 {renderCartlines(this.props.cartlines, this.props)}\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 ) : 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 { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\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\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 id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\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 is 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\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};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n 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 // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\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\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \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 {\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