{"version":3,"file":"static/js/f9db793100942c7b253b.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/rwb-adventureworks/views/cart-icon.view.tsx?73eb","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/components/flyout-cart-line-items.tsx?f2c4","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/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":["/*!\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 (\n
\n \n {props.resources.totalPriceFormatString}\n {totalPrice}\n \n
\n );\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 {renderCartlines(this.props.cartlines, this.props)}\n \n \n {this.props.slots.promoContentItem}\n {renderTotalPrice(this.props)}\n

{this.props.resources.subTotalMessage}

\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 \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 { CartLine, ChannelDeliveryOptionConfiguration, LineDataValidationFailure, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\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\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\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n await this._setOrderQuantityLimitsFeatureFlag();\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 cartLines = this._getCartLines();\n const hasError = !this.state.isCartValid || (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 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 validateCartAsync(this.state.isQuantityLimitsFeatureEnabled, cart, this.props.telemetry, this.props.context)\n .then((result: LineDataValidationFailure[] | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\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: 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 _setOrderQuantityLimitsFeatureFlag(): Promise {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\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 }\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 {_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 { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction, OrgUnitsDataActions, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Search Org Unit Locations action createInput method.\n * @param inputData - Current action context.\n * @returns Input needed to call the Search-org-unit-location API.\n */\nexport function createSearchOrgUnitLocationsInputFunc(\n inputData: ICreateActionContext, IGeneric>\n): IDataServiceRequest {\n const querySettingsProxy = QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(inputData);\n return OrgUnitsDataActions.createSearchOrgUnitLocationsInput(querySettingsProxy, {});\n}\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >retailAction,\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 (\n
\n \n {props.resources.totalPriceFormatString}\n {totalPrice}\n \n
\n );\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 {renderCartlines(this.props.cartlines, this.props)}\n \n \n {this.props.slots.promoContentItem}\n {renderTotalPrice(this.props)}\n

{this.props.resources.subTotalMessage}

\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