{"version":3,"file":"static/js/00467a07dee9ccba4631.bundle.js","mappings":"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","sources":["webpack://bju-press/./src/themes/base/views/cart-icon.view.tsx?2879","webpack://bju-press/./src/themes/base/views/components/carticon.component.tsx?c302","webpack://bju-press/./lib/cart-icon/module-registration.js?4d28","webpack://bju-press/./src/validate-cart.ts?cd50","webpack://bju-press/./src/Common/get-product.ts?0a21","webpack://bju-press/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://bju-press/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://bju-press/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://bju-press/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://bju-press/../../src/search-org-unit-locations.ts?d18d","webpack://bju-press/./src/modules/adventureworks/views/cart-icon.view.tsx?7ec9","webpack://bju-press/external var \"React\"?0d3b","webpack://bju-press/external var \"ReactDOM\"?853b"],"sourcesContent":["// @CUSTOM: The view and accompanying definition extensions are from adventureworks@9.47. Any custom changes noted are\r\n// edits to the adventureworks version, not core.\r\n\r\n/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\r\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\r\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// @CUSTOM: Kit custom imports\r\n//----------------------------------------------------------\r\nimport { ICartIconData } from '@msdyn365-commerce-modules/cart/src/modules/cart-icon/cart-icon.data';\r\nimport { attrNames } from '../../../utilities/global-constants';\r\nimport { convertCartAttributes } from '../../../utilities/data-attribute-parser';\r\nimport { CartIconComponent } from './components/carticon.component';\r\nimport { CartLineItemComponent} from './components/cartlineitem.component';\r\n//----------------------------------------------------------\r\n\r\n//----------------------------------------------------------\r\n// @CUSTOM: Kit display - get elective cart lines tied to\r\n// kit item\r\n//----------------------------------------------------------\r\nconst getElectiveCartLines = (kitCartLine: IFlyoutCartLineItemViewProps, cartLines: IFlyoutCartLineItemViewProps[]) => {\r\n return cartLines.filter(cartLine => {\r\n const kitAttributes = kitCartLine.data?.cartline.AttributeValues;\r\n const parsedKitAttributes = kitAttributes && convertCartAttributes(kitAttributes);\r\n const attributes = cartLine.data?.cartline.AttributeValues;\r\n const parsedAttributes = attributes && convertCartAttributes(attributes);\r\n return parsedKitAttributes && parsedAttributes && parsedKitAttributes[attrNames.kitLineChildAssociation] === parsedAttributes[attrNames.kitLineParentAssociation];\r\n });\r\n};\r\n//----------------------------------------------------------\r\n\r\n//----------------------------------------------------------\r\n// @CUSTOM: Kit display - remove kit item alongside tied\r\n// elective items\r\n//----------------------------------------------------------\r\nconst removeKitItem = async (kitCartLine: IFlyoutCartLineItemViewProps, cartLines: IFlyoutCartLineItemViewProps[], cartData: ICartIconData) => {\r\n const electiveCartLines = getElectiveCartLines(kitCartLine, cartLines);\r\n\r\n if (cartData.cart.result) {\r\n const input = {\r\n cartLineIds: [kitCartLine.data.cartline.LineId!.toString()]\r\n };\r\n\r\n if (electiveCartLines) {\r\n electiveCartLines.forEach(electiveCartLine => {\r\n input.cartLineIds.push(electiveCartLine.data.cartline.LineId!.toString());\r\n });\r\n }\r\n\r\n cartData.cart.result.removeCartLines(input);\r\n }\r\n};\r\n//----------------------------------------------------------\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)[] | null => { // @CUSTOM: Kit display - updated return type to account for no cart lines being returned\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 //--------------------------------------------------\r\n // @CUSTOM: Kit display\r\n //--------------------------------------------------\r\n\r\n // Minicart does not use cartlineitem.component extension by default on other themes extended from base, so\r\n // have to force import it and replace the original component\r\n const cartLineProps = React.isValidElement(cartLine.cartline) && cartLine.cartline.props;\r\n const cartLineOverride = ;\r\n\r\n const cartLineData = cartLine.data?.cartline;\r\n const lineAttributes = cartLineData?.AttributeValues && convertCartAttributes(cartLineData.AttributeValues);\r\n const kitElectives = lineAttributes && lineAttributes[attrNames.kitElectives];\r\n\r\n // Do not return kit elective cart lines\r\n if (lineAttributes && lineAttributes[attrNames.kitLineParentAssociation]) {\r\n return null;\r\n }\r\n\r\n const removeProps = React.isValidElement(cartLine.remove) && cartLine.remove.props;\r\n //--------------------------------------------------\r\n\r\n const cartLineIndex = index;\r\n return (\r\n \r\n {/* @CUSTOM: Replace original cartlineitem component {cartLine.cartline} with extended one to show cartline customizations */}\r\n {cartLineOverride}\r\n {cartLine.storeLocation}\r\n {/* @CUSTOM: Replaced Remove button below with custom remove cartline handler if item is a kit with electives */}\r\n {kitElectives\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 {/* @CUSTOM: Moved Checkout, Guest Checkout, Go to Cart buttons to btn-section div below */}\r\n \r\n {this.props.checkoutAsSignInUserButton}\r\n {/* @CUSTOM Removed Guest Checkout {this.props.checkoutAsGuestButton} */}\r\n {this.props.data.cart.result?.isEmpty ? null : this.props.goToCartButton}\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: classnames('ms-cart-icon__minicartmodal-container', this.props.config.className), // @CUSTOM: Added config CSS class\r\n wrapClassName: 'ms-cart-icon__minicartmodal',\r\n isOpen: this.state.isModalOpen,\r\n toggle: this.closeModal\r\n };\r\n };\r\n\r\n /**\r\n * Initiate open modal.\r\n */\r\n private readonly _openModal = (): void => {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'cart-icon', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'cart-icon');\r\n this.setState({\r\n isModalOpen: true\r\n });\r\n };\r\n\r\n /**\r\n * Initiate close modal.\r\n */\r\n private readonly closeModal = (): void => {\r\n this.cartIconRef.current?.focus();\r\n this.setState({\r\n isModalOpen: false\r\n });\r\n };\r\n\r\n /**\r\n * Initiate cart close Icon.\r\n * @returns JSX Element.\r\n */\r\n private readonly _renderCartCloseIcon = (): JSX.Element | null => {\r\n return \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n 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