{"version":3,"file":"static/js/8d60626af6e20970264b.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/wldtheme/views/cart-icon.view.tsx?7e2a","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":["/*!\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 return cartLines.map((cartLine, index) => {\r\n const cartLineIndex = index;\r\n return (\r\n \r\n {cartLine.cartline}\r\n {cartLine.remove}\r\n {cartLine.storeLocation}\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 (\r\n
\r\n \r\n {props.resources.fixedPriceString}\r\n {totalPrice}\r\n \r\n
\r\n );\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 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 * Removes the comment from the Cart if there are no cart lines.\r\n */\r\n private _removeCommentFromCartLine(): void {\r\n const cartState = this.props.data.cart.result || undefined;\r\n\r\n if (cartState) {\r\n if ((!cartState.cart.CartLines || cartState.cart.CartLines?.length === 0) && cartState.cart.Comment) {\r\n const _clonedCart = { ...cartState.cart };\r\n _clonedCart.Comment = \"\";\r\n\r\n void cartState.updateCart({newCartObject: _clonedCart});\r\n }\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 this._removeCommentFromCartLine();\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 {renderCartlines(this.props.cartlines, this.props)}\r\n \r\n \r\n {this.props.slots.promoContentItem}\r\n {renderTotalPrice(this.props)}\r\n

{this.props.resources.subTotalMessage}

\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.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 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 }\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