{"version":3,"file":"static/js/9cfa6f24f81e194e02d1.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./lib/cart-icon/module-registration.js?4d28","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/../../src/search-org-unit-locations.ts?d18d","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart-icon.view.tsx?7ec9","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['cart-icon'] = {\n c: () => require('@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'cartConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration', runOn: 0},{name:'catalogs', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart-icon',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-cart-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-catalogs');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['@msdyn365-commerce-modules|cart|modules|cart-icon|cart-icon'] = {\n c: () => require('@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-theme|adventureworks-theme-kit|modules|adventureworks|views|cart-icon'] = {\n c: () => require('@msdyn365-commerce-theme/adventureworks-theme-kit/dist/lib/modules/adventureworks/views/cart-icon.view.js'),\n cn: '@msdyn365-commerce-theme-adventureworks-theme-kit-cart-icon'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IAny,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { searchOrgUnitLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\n/**\n * Input for search-org-unit-locations data action.\n */\nexport class SearchOrgUnitLocationsInput implements IActionInput {\n public getCacheKey = () => 'SearchOrgUnitLocations';\n\n public getCacheObjectType = () => 'SearchOrgUnitLocations';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData -- Input data.\n * @returns -- IActionInput.\n */\nexport const createSearchOrgUnitLocationsInputFunc = (inputData: ICreateActionContext>): IActionInput => {\n return new SearchOrgUnitLocationsInput();\n};\n\n/**\n * Calls the Retail API and returns all the orgUnitLocations as array.\n * @param input - Input.\n * @param ctx - Context.\n * @returns - orgUnitLocations.\n */\nexport async function getSearchOrgUnitLocationsAction(\n input: SearchOrgUnitLocationsInput,\n context: IActionContext\n): Promise {\n const OrgUnitLocations = await searchOrgUnitLocationsAsync(\n {\n callerContext: context\n },\n {}\n );\n\n return OrgUnitLocations;\n}\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >getSearchOrgUnitLocationsAction,\n input: createSearchOrgUnitLocationsInputFunc\n});\n\nexport default retailActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior } from '@msdyn365-commerce/components';\nimport MsDyn365, { getUrlSync } from '@msdyn365-commerce/core';\nimport { ICartIconViewProps, ICartViewProps, IFlyoutCartLineItemViewProps } from '@msdyn365-commerce-modules/cart';\nimport { Button, getPayloadObject, INodeProps, KeyCodes, Modal, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { ICartIconProps as ICartIconExtensionProps } from '../definition-extensions/cart-icon.ext.props.autogenerated';\n\n/**\n * ICartIconViewState: Interface for Cart Icon View State.\n */\ninterface ICartIconViewState {\n isModalOpen: boolean;\n}\n\n/**\n * Render Cart lines.\n * @param cartLines - Flyout cart line view props.\n * @param props - Cart icon view props.-\n * @returns JSX Element.\n */\nconst renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n return cartLines.map((cartLine, index) => {\n const cartLineIndex = index;\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\n/**\n * Initiate total price.\n * @param props - Cart icon view props.\n * @returns JSX Element.\n */\nconst renderTotalPrice = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\n const cart = props.data.cart.result ?? undefined;\n const price = cart && !cart.hasInvoiceLine && (cart.cart.TotalAmount || undefined);\n const totalPrice = price\n ? props.context.cultureFormatter.formatCurrency(price)\n : props.context.cultureFormatter.formatCurrency(props.resources.emptyPrice);\n return cart && !cart.hasInvoiceLine ? (\n
\n \n {props.resources.totalPriceFormatString}\n {totalPrice}\n \n
\n ) : (\n <>\n );\n};\n\n/**\n * Initiate subtotal message.\n * @param props - Cart icon view props.\n * @returns JSX Element.\n */\nconst renderSubtotalMessage = (props: ICartIconViewProps & ICartIconExtensionProps<{}>): JSX.Element | null => {\n const cart = props.data.cart.result ?? undefined;\n return cart && !cart.hasInvoiceLine ?

{props.resources.subTotalMessage}

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