{"version":3,"file":"static/js/289d65786e3612b30f47.bundle.js","mappings":"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","sources":["webpack://sgi-bookstore/./src/common/buybox-components.tsx?5517","webpack://sgi-bookstore/./src/common/buybox-product-configure.tsx?88cc","webpack://sgi-bookstore/./src/themes/sgi-theme/views/Utilities/utility.ts?1838"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n AddToCartComponent,\r\n AddToOrderTemplateComponent,\r\n AddToWishlistComponent,\r\n IAddToCartFailureResult,\r\n IAddToCartResources,\r\n IAddToOrderTemplateDialogResources,\r\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\r\n IItemAddedToOrderTemplateDialogResources,\r\n IOrderTemplateActionErrorResult,\r\n IOrderTemplateNameDialogResources,\r\n IWishlistActionErrorResult,\r\n PriceComponent,\r\n RatingComponent\r\n} from '@msdyn365-commerce/components';\r\nimport { getUrlSync, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\r\nimport { ProductAvailableQuantity, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, DeliveryMode } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Alert,\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n Heading,\r\n ITelemetryContent,\r\n Node,\r\n Quantity,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonData,\r\n IBuyboxCommonResources,\r\n IBuyboxErrorBlockProps,\r\n IBuyboxExtentedProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IProductDetails,\r\n ShopSimiliarButtonType,\r\n getConfigureErrors,\r\n getGenericError,\r\n getQuantityError\r\n} from '@msdyn365-commerce-modules/buybox';\r\n\r\nconst _getClassNamePrefix = (typeName: string): string => {\r\n return typeName.toLocaleLowerCase() === 'sgi-quickview' ? 'ms-quickView' : 'ms-buybox';\r\n};\r\n\r\nexport function getBuyBoxInventoryLabel(\r\n props: IBuyboxExtentedProps,\r\n productDetails?: IProductDetails\r\n): React.ReactElement | undefined {\r\n const { typeName } = props;\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const productAvailableQuantity = props.data.productAvailableQuantity?.result ?? productDetails?.productAvailableQuantity;\r\n\r\n const className = _getClassNamePrefix(typeName);\r\n if (!productAvailableQuantity || !ArrayExtensions.hasElements(productAvailableQuantity)) {\r\n return undefined;\r\n }\r\n const shippingInventory = productAvailableQuantity.find(shipping => shipping.deliveryType === DeliveryMode.shipping);\r\n\r\n if (shippingInventory) {\r\n let inventoryClassName: string;\r\n if (shippingInventory.StockLevelCode) {\r\n inventoryClassName = `${className}__inventory-label ${className}__inventory-code-${shippingInventory.StockLevelCode.toLowerCase()}`;\r\n } else {\r\n inventoryClassName = `${className}__inventory-label`;\r\n }\r\n return (\r\n
\r\n {shippingInventory.StockLevelLabel}\r\n
\r\n );\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function getBuyboxProductTitle(\r\n props: IBuyboxExtentedProps,\r\n productDetails?: IProductDetails\r\n): React.ReactElement | undefined {\r\n const {\r\n config: { titleHeadingTag = 'h1' },\r\n typeName\r\n } = props;\r\n const className = _getClassNamePrefix(typeName);\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const product = props.data.product?.result ?? productDetails?.product ?? undefined;\r\n\r\n return product && ;\r\n}\r\n\r\nexport function getBuyboxProductDescription(\r\n props: IBuyboxExtentedProps,\r\n productDetails?: IProductDetails\r\n): String | undefined {\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const product = props.data.product?.result ?? productDetails?.product ?? undefined;\r\n return product && product.Description;\r\n}\r\n\r\n/**\r\n * Gets the react node for product unit of measure display.\r\n * @param {IBuyboxExtentedProps} props The buybox module props.\r\n * @param {IProductDetails} productDetails The product details to be displyed in buybox.\r\n * @returns {React.ReactElement} The node representing markup for unit of measure component.\r\n */\r\nexport function getBuyboxProductUnitOfMeasure(\r\n props: IBuyboxExtentedProps,\r\n productDetails?: IProductDetails\r\n): React.ReactElement | undefined {\r\n const { typeName } = props;\r\n const className = _getClassNamePrefix(typeName);\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\r\n if (\r\n props.context.app.config &&\r\n (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none')\r\n ) {\r\n return undefined;\r\n }\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const product = props.data.product?.result ?? productDetails?.product;\r\n if (!product || !product.DefaultUnitOfMeasure) {\r\n props.telemetry.warning('Missing defult unit of measureor theproduct');\r\n return undefined;\r\n }\r\n\r\n return (\r\n
\r\n {product.DefaultUnitOfMeasure}\r\n
\r\n );\r\n}\r\n\r\nlet telemetryContent: ITelemetryContent;\r\n\r\n/**\r\n * On add to cart failed function.\r\n * @param props -The buybox module props.\r\n * @param state -The buybox module state.\r\n * @param callbacks -The buybox module callbacks.\r\n * @param defaultMinimumKeyInPrice -The default minimum key in price.\r\n * @param defaultMaximumKeyInPrice -The default maximum key in price.\r\n * @param cart -The cart state.\r\n * @param product -The simple product.\r\n * @param productAvailability -The product available quantity.\r\n * @returns Update error state.\r\n */\r\nconst onAddToCartFailed = (\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n defaultMinimumKeyInPrice: number,\r\n defaultMaximumKeyInPrice: number,\r\n cart: ICartState,\r\n product: SimpleProduct,\r\n productAvailability: ProductAvailableQuantity | undefined\r\n) => (result: IAddToCartFailureResult) => {\r\n let quantityErrorForState: string | undefined;\r\n let customAmountErrorForState: string | undefined;\r\n let otherErrorForState: string | undefined = getGenericError(\r\n result,\r\n cart,\r\n props.resources,\r\n props.context,\r\n product,\r\n productAvailability,\r\n undefined\r\n );\r\n\r\n if (result.failureReason === 'OUTOFSTOCK') {\r\n quantityErrorForState = result.failureReason === 'OUTOFSTOCK' ? getQuantityError(result.stockLeft, props.resources) : undefined;\r\n } else if (\r\n result.failureReason === 'CARTACTIONFAILED' &&\r\n result.cartActionResult &&\r\n (result.cartActionResult.substatus === 'MAXQUANTITY' || result.cartActionResult.substatus === 'QUANTITYLIMITS')\r\n ) {\r\n quantityErrorForState = getGenericError(result, cart, props.resources, props.context, product, productAvailability, undefined);\r\n otherErrorForState = undefined; // Prevent error duplication in otherError and quantityError\r\n }\r\n\r\n if (result.failureReason === 'INVALIDCUSTOMAMOUNT') {\r\n if (state.keyInPriceAmount === undefined || state.keyInPriceAmount < (props.config.minimumKeyInPrice || defaultMinimumKeyInPrice)) {\r\n const formatedAmountLimit = props.context.cultureFormatter.formatCurrency(\r\n props.config.minimumKeyInPrice || defaultMinimumKeyInPrice\r\n );\r\n customAmountErrorForState = props.resources.invalidSmallCustomAmountText.replace('{minAmount}', formatedAmountLimit);\r\n } else if (state.keyInPriceAmount > (props.config.maximumKeyInPrice || defaultMaximumKeyInPrice)) {\r\n const formatedAmountLimit = props.context.cultureFormatter.formatCurrency(\r\n props.config.maximumKeyInPrice || defaultMaximumKeyInPrice\r\n );\r\n customAmountErrorForState = props.resources.invalidLargeCustomAmountText.replace('{maxAmount}', formatedAmountLimit);\r\n }\r\n }\r\n\r\n callbacks.updateErrorState({\r\n errorHost: 'ADDTOCART',\r\n quantityError: quantityErrorForState,\r\n configureErrors:\r\n result.failureReason === 'MISSINGDIMENSION'\r\n ? getConfigureErrors(result.missingDimensions, props.resources, product?.IsGiftCard)\r\n : {},\r\n customAmountError: customAmountErrorForState,\r\n otherError: otherErrorForState\r\n });\r\n};\r\n\r\n/**\r\n * On Item Add To Cart function.\r\n * @param typeName -Type name.\r\n * @param callbacks -Buybox Callbacks.\r\n * @returns Change modal open.\r\n */\r\nconst onItemAddedToCart = (typeName: string, callbacks: IBuyboxCallbacks) => (result: ICartActionResult) => {\r\n if (typeName === 'sgi-quickview') {\r\n callbacks.changeModalOpen(false);\r\n }\r\n};\r\n\r\nexport function getBuyboxAddToCart(\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n defaultMinimumKeyInPrice: number,\r\n defaultMaximumKeyInPrice: number,\r\n productDetails?: IProductDetails,\r\n hasAvailableProducts?: boolean\r\n): IBuyboxAddToCartViewProps {\r\n const { id, typeName, context, resources } = props;\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const product = props.data.product?.result ?? productDetails?.product;\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const cart = props.data.cart?.result ?? productDetails?.cart;\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const productAvailableQuantity = props.data.productAvailableQuantity?.result ?? productDetails?.productAvailableQuantity;\r\n\r\n const {\r\n quantity,\r\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\r\n selectedProduct,\r\n isUpdatingDimension,\r\n isUpdatingDeliveryOptions,\r\n isServiceItem\r\n } = state;\r\n\r\n const productAvailability = state.productAvailableQuantity\r\n ? state.productAvailableQuantity.ProductAvailableQuantity\r\n : productAvailableQuantity && productAvailableQuantity.length > 0\r\n ? productAvailableQuantity[0].ProductAvailableQuantity\r\n : undefined;\r\n\r\n const dialogStrings: IAddToCartResources = {\r\n goToCartText: resources.buyBoxGoToCartText,\r\n continueShoppingText: resources.buyBoxContinueShoppingText,\r\n closeNotificationLabel: resources.closeNotificationLabel,\r\n headerItemOneText: resources.buyBoxSingleItemText,\r\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\r\n headerMessageText: resources.buyBoxHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText,\r\n addedQuantityText: resources.addedQuantityText\r\n };\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const isProductQuantityLoading = typeName !== 'sgi-quickview' && props.data.productAvailableQuantity.status === 'LOADING';\r\n if (isProductQuantityLoading) {\r\n callbacks.changeUpdatingDimension(false);\r\n }\r\n\r\n const isLoadingDeliveryOptions = typeName !== 'sgi-quickview' && props.data.deliveryOptions?.status === 'LOADING';\r\n if (isLoadingDeliveryOptions && callbacks.changeUpdatingDeliveryOptions) {\r\n callbacks.changeUpdatingDeliveryOptions(false);\r\n }\r\n\r\n telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.typeName, props.telemetry);\r\n\r\n // Check if the product delivery mode is electronic\r\n const emailDeliveryModeCode = props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode;\r\n const deliveryOptions = props.data.deliveryOptions?.result;\r\n const isEmailDelivery =\r\n ArrayExtensions.hasElements(deliveryOptions?.DeliveryOptions) && deliveryOptions!.DeliveryOptions[0].Code === emailDeliveryModeCode;\r\n const className = _getClassNamePrefix(typeName);\r\n const isDisabled = isUpdatingDimension && typeName === 'sgi-quickview';\r\n\r\n return {\r\n ContainerProps: {\r\n className: `${className}__add-to-cart-container`\r\n },\r\n button: product && (\r\n \r\n ),\r\n errorBlock: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport function getBuyboxProductPrice(props: IBuyboxExtentedProps, state: IBuyboxState): React.ReactElement | undefined {\r\n const { id, typeName, context, resources } = props;\r\n\r\n return (\r\n state.productPrice && (\r\n featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\r\n )?.IsEnabled\r\n }\r\n priceResources={{ priceRangeSeparator: resources.priceRangeSeparator }}\r\n freePriceText={resources.priceFree}\r\n originalPriceText={resources.originalPriceText}\r\n currentPriceText={resources.currentPriceText}\r\n />\r\n )\r\n );\r\n}\r\n\r\nexport function getBuyboxProductRating(\r\n props: IBuyboxExtentedProps,\r\n productDetails?: IProductDetails\r\n): React.ReactElement | undefined {\r\n const { id, typeName, context, resources } = props;\r\n\r\n // Since the data action can return no value, and the type is non-nullable due to backward compatibility reasons, the null check is required.\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\r\n const ratingsSummary = props.data.ratingsSummary?.result ?? productDetails?.ratingsSummary;\r\n\r\n const ratingComponent =\r\n (ratingsSummary && ratingsSummary.averageRating && (\r\n \r\n )) ||\r\n undefined;\r\n\r\n return ratingsSummary && ratingComponent && ratingComponent;\r\n}\r\n\r\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\r\n return {\r\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\r\n\r\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\r\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\r\n\r\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\r\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\r\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\r\n\r\n selectTemplatesText: resources.selectTemplatesText,\r\n addToTemplateButtonText: resources.addToTemplateButtonText,\r\n lineItemsText: resources.lineItemsText\r\n };\r\n}\r\n\r\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\r\n return {\r\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\r\n continueShoppingButtonText: resources.continueShoppingButtonText,\r\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\r\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\r\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\r\n freePriceText: resources.priceFree,\r\n originalPriceText: resources.originalPriceText,\r\n currentPriceText: resources.currentPriceText\r\n };\r\n}\r\n\r\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\r\n resources: IBuyboxCommonResources\r\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\r\n return {\r\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\r\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\r\n updateQuantityButtonText: resources.updateQuantityButtonText,\r\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Add to order template failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox common resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IOrderTemplateActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'ORDER_TEMPLATE',\r\n configureErrors:\r\n result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\nexport function getBuyboxProductAddToOrderTemplate(\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): IBuyboxAddToOrderTemplateViewProps | undefined {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n orderTemplates: { result: orderTemplates },\r\n customerInformation: { result: customerInformation }\r\n },\r\n resources\r\n } = props;\r\n\r\n const product = props.data.product?.result;\r\n\r\n const {\r\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\r\n quantity\r\n } = state;\r\n\r\n // If custom amount is selected, add-to-orderTemplate is disabled\r\n if (state.isCustomPriceSelected) {\r\n return undefined;\r\n }\r\n const className = _getClassNamePrefix(typeName);\r\n\r\n return {\r\n ContainerProps: {\r\n className: `${className}__add-to-order-template-container`\r\n },\r\n button: product && orderTemplates && (\r\n \r\n ),\r\n errorBlock: (\r\n \r\n )\r\n };\r\n}\r\n\r\n/**\r\n * Add to wishlist failed function.\r\n * @param callbacks -Buybox callbacks.\r\n * @param resources -Buybox resources.\r\n * @param product -Simple product.\r\n * @returns Update error state.\r\n */\r\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\r\n result: IWishlistActionErrorResult\r\n) => {\r\n callbacks.updateErrorState({\r\n errorHost: 'WISHLIST',\r\n configureErrors:\r\n result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\r\n });\r\n};\r\n\r\nexport function getBuyboxProductAddToWishlist(\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks,\r\n productDetails?: IProductDetails\r\n): IBuyboxAddToWishlistViewProps | undefined {\r\n const {\r\n id,\r\n typeName,\r\n context,\r\n data: {\r\n wishlists: { result: wishlists }\r\n },\r\n resources\r\n } = props;\r\n\r\n const product = props.data.product?.result ? props.data.product.result : productDetails?.product!;\r\n\r\n const {\r\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\r\n selectedProduct\r\n } = state;\r\n\r\n // If custom amount is selected, add-to-wishlist is disabled\r\n if (state.isCustomPriceSelected) {\r\n return undefined;\r\n }\r\n\r\n const className = _getClassNamePrefix(typeName);\r\n\r\n return {\r\n ContainerProps: {\r\n className: `${className}__add-to-wishlist-container`\r\n },\r\n button: product && (\r\n \r\n ),\r\n errorBlock: (\r\n \r\n )\r\n };\r\n}\r\n\r\n/**\r\n * On quantity change function.\r\n * @param callbacks -Buybox callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onQuantityChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number) => {\r\n if (callbacks.updateQuantity) {\r\n callbacks.updateQuantity(newValue);\r\n }\r\n};\r\n\r\nexport function getBuyboxProductQuantity(\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): IBuyboxProductQuantityViewProps {\r\n const { resources, typeName } = props;\r\n\r\n const {\r\n quantity,\r\n max,\r\n errorState: { quantityError }\r\n } = state;\r\n\r\n const className = _getClassNamePrefix(typeName);\r\n\r\n return {\r\n ContainerProps: {\r\n className: `${className}__quantity`\r\n },\r\n LabelContainerProps: {\r\n tag: 'label',\r\n className: `${className}__product-quantity-label`,\r\n htmlFor: `${className}__product-quantity-input`\r\n },\r\n heading:
{resources.productQuantityHeading}
,\r\n errors: quantityError && (\r\n \r\n \r\n ),\r\n input: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport function getBuyboxShopSimilarButton(\r\n props: IBuyboxExtentedProps,\r\n buttonType: ShopSimiliarButtonType\r\n): IBuyboxShopSimilarLookViewProps {\r\n const { resources, context, typeName } = props;\r\n const product = props.data.product?.result;\r\n\r\n const className = _getClassNamePrefix(typeName);\r\n const navigationUrl = (shopSimiliarButtonType: ShopSimiliarButtonType) => () => {\r\n const searchURL = getUrlSync('search', context && context.actionContext);\r\n const separator = searchURL!.includes('?') ? '&' : '?';\r\n document.location.href = `${searchURL}${separator}productId=${product &&\r\n product.RecordId}&recommendation=${shopSimiliarButtonType}`;\r\n };\r\n const telemetryText =\r\n buttonType === ShopSimiliarButtonType.Looks ? TelemetryConstant.ShopSimliarLooks : TelemetryConstant.ShopSimliarDescription;\r\n const payLoad = getPayloadObject('click', telemetryContent, telemetryText);\r\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\r\n const text = buttonType === ShopSimiliarButtonType.Looks ? resources.shopSimilarLooksText : resources.shopSimilarDescriptionText;\r\n\r\n return {\r\n ContainerProps: {\r\n className: `${className}__shopsimilar${buttonType}`\r\n },\r\n input: (\r\n \r\n {text}\r\n \r\n )\r\n };\r\n}\r\n\r\n/**\r\n * On price change function.\r\n * @param callbacks -Buybox callbacks.\r\n * @returns Update key in price.\r\n */\r\nconst onPriceChangeHandler = (callbacks: IBuyboxCallbacks) => (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.value;\r\n callbacks.updateKeyInPrice(value.length > 0 ? Number(value) : Number.parseFloat(value));\r\n};\r\n\r\nexport function getBuyboxKeyInPrice(\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): IBuyboxKeyInPriceViewProps {\r\n const { config, resources } = props;\r\n\r\n const {\r\n errorState: {}\r\n } = state;\r\n\r\n const className = _getClassNamePrefix(props.typeName);\r\n\r\n return {\r\n ContainerProps: {\r\n className: `${className}__key_in_price`\r\n },\r\n LabelContainerProps: {\r\n tag: 'label',\r\n className: `${className}__key_in_price-label`,\r\n htmlFor: `${className}__key_in_price`\r\n },\r\n heading:
{resources.buyboxKeyInPriceLabelHeading}
,\r\n input: (\r\n \r\n )\r\n };\r\n}\r\n\r\nexport const BuyboxErrorBlock: React.FC = ({\r\n showError,\r\n configureErrors,\r\n quantityError,\r\n customAmountError,\r\n otherError,\r\n resources\r\n}) => {\r\n let errorMessages: (string | undefined)[] = [];\r\n\r\n errorMessages = Object.values(configureErrors).filter(message => message !== undefined);\r\n\r\n if (quantityError) {\r\n errorMessages.push(quantityError);\r\n }\r\n\r\n if (customAmountError) {\r\n errorMessages.push(customAmountError);\r\n }\r\n\r\n if (otherError) {\r\n errorMessages.push(otherError);\r\n }\r\n\r\n return (\r\n 0} color='danger' assertive aria-label={resources.buyboxErrorMessageHeader}>\r\n \r\n {errorMessages.map((message, index) => {\r\n return (\r\n
\r\n {message}\r\n
\r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nexport function getQuantityLimitsMessages(\r\n props: IBuyboxExtentedProps,\r\n state: IBuyboxState\r\n): React.ReactElement | undefined {\r\n const { resources } = props;\r\n\r\n const { min, max } = state;\r\n\r\n if (!_isOrderQuantityLimitsFeatureEnabled(props)) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n \r\n {_renderMaxLabel(props, max, resources.maxQuantityText)}\r\n {_renderMinLabel(props, min, resources.minQuantityText)}\r\n \r\n );\r\n}\r\n\r\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\r\n\r\nconst _renderMaxLabel = (\r\n props: IBuyboxExtentedProps,\r\n max: number | undefined,\r\n maxQuantityText: string\r\n): React.ReactElement | undefined => {\r\n const { resources, typeName } = props;\r\n const className = _getClassNamePrefix(typeName);\r\n if (max && max !== 0 && max !== Number.MAX_VALUE) {\r\n return (\r\n

\r\n {resources.informationIconText}\r\n