{"version":3,"file":"static/js/5.ed663300965de3e82d4d.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/ratings-histogram/ratings-histogram.tsx?f6bc","webpack://Citta2.0/./src/modules/ratings-histogram/ratings-histogram.view.tsx?5bff","webpack://Citta2.0/./src/modules/bulk-purchase/bulk-purchase.tsx?9fd5","webpack://Citta2.0/./src/modules/buybox/components/buybox-find-in-store.tsx?3ef8","webpack://Citta2.0/./src/modules/buybox/buybox.tsx?e22d","webpack://Citta2.0/./src/modules/quickview/utilities/helper.ts?f31d","webpack://Citta2.0/./src/modules/quickview/utilities/get-valid-product-images.ts?78b7","webpack://Citta2.0/./src/modules/quickview/quickview.tsx?4080","webpack://Citta2.0/./src/modules/quickview/utilities/get-product-details.ts?5cc2","webpack://Citta2.0/./src/modules/buybox/buybox.view.tsx?376b","webpack://Citta2.0/./src/modules/quickview/quickview.view.tsx?ee5b","webpack://Citta2.0/./src/themes/citta/views/components/cart-icon.component.tsx?a3df","webpack://Citta2.0/./src/components/citta-notify-me/notify-me.tsx?1aee","webpack://Citta2.0/./src/themes/citta/views/components/add-to-cart.component.tsx?7134","webpack://Citta2.0/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Citta2.0/./src/modules/header/components/logo.tsx?f27e","webpack://Citta2.0/./src/modules/header/components/nav-icon.tsx?2475","webpack://Citta2.0/./src/modules/header/header.tsx?e91a","webpack://Citta2.0/./src/modules/product-collection/product-collection.tsx?4008","webpack://Citta2.0/./src/actions/utilities/utils.ts?cb7c","webpack://Citta2.0/./src/actions/get-selected-variant-v29.ts?793f","webpack://Citta2.0/./src/modules/citta-buybox/components/citta-buybox-find-in-store.tsx?333f","webpack://Citta2.0/./src/modules/citta-buybox/citta-buybox.tsx?0c39","webpack://Citta2.0/./src/modules/citta-enquire-form/citta-enquire-form.tsx?4786","webpack://Citta2.0/./src/modules/citta-header/components/logo.tsx?d610","webpack://Citta2.0/./src/modules/citta-header/components/nav-icon.tsx?2883","webpack://Citta2.0/./src/modules/citta-header/components/citta-header-preferred-store.tsx?31a1","webpack://Citta2.0/./src/modules/citta-header/citta-header.tsx?01c9","webpack://Citta2.0/./src/modules/citta-promo-banner/components/close-button.tsx?7ba2","webpack://Citta2.0/./src/modules/citta-promo-banner/components/links.tsx?a64a","webpack://Citta2.0/./src/modules/citta-promo-banner/components/text.tsx?2035","webpack://Citta2.0/./src/modules/citta-promo-banner/citta-promo-banner.tsx?f097","webpack://Citta2.0/./src/modules/citta-wishlist-items/components/citta-wishlist-items-dimensions.tsx?42bc","webpack://Citta2.0/./src/modules/citta-wishlist-items/components/wishlist-item.tsx?cb43","webpack://Citta2.0/./src/modules/citta-wishlist-items/components/citta-wishlist-items-status-message.tsx?e2b6","webpack://Citta2.0/./src/modules/citta-wishlist-items/citta-wishlist-items.tsx?878b","webpack://Citta2.0/./src/modules/citta-buybox/citta-buybox.view.tsx?586e","webpack://Citta2.0/./src/modules/citta-enquire-form/citta-enquire-form.view.tsx?c1aa","webpack://Citta2.0/./src/modules/citta-header/citta-header.view.tsx?4656","webpack://Citta2.0/./src/modules/citta-promo-banner/citta-promo-banner.view.tsx?4353","webpack://Citta2.0/./src/modules/citta-wishlist-items/citta-wishlist-items.view.tsx?20f3","webpack://Citta2.0/./src/themes/citta/views/components/layBuyPriceBreakdown.tsx?147b","webpack://Citta2.0/./src/themes/citta/views/buybox.view.tsx?10fd","webpack://Citta2.0/./src/themes/citta/views/header.view.tsx?b6f0","webpack://Citta2.0/./src/themes/citta/views/components/product-collection-component.tsx?595b","webpack://Citta2.0/./src/themes/citta/views/product-collection.view.tsx?2634","webpack://Citta2.0/./src/modules/bulk-purchase/bulk-purchase.view.tsx?feac","webpack://Citta2.0/./src/modules/header/header.view.tsx?cf0f","webpack://Citta2.0/./src/modules/product-collection/product-collection.view.tsx?5d36","webpack://Citta2.0/./src/components/price-component.tsx?ed26","webpack://Citta2.0/./src/common/buybox-components.tsx?42b4","webpack://Citta2.0/./src/common/utilities/error-utilities.ts?bb69","webpack://Citta2.0/./src/common/buybox-product-configure.tsx?139c","webpack://Citta2.0/./src/common/dropdown/dropdown.props.ts?7676","webpack://Citta2.0/./src/modules/ratings-histogram/component/components.tsx?f324","webpack://Citta2.0/./src/themes/citta/utilities/quantity/Quantity.tsx?4279","webpack://Citta2.0/./src/common/dropdown/dropdown.tsx?f1d3","webpack://Citta2.0/./src/modules/recently-viewed/base/recently-viewed-product-item.ts?4982","webpack://Citta2.0/./src/modules/recently-viewed/base/recently-viewed-item.ts?54c9","webpack://Citta2.0/./src/modules/recently-viewed/recently-viewed-state.ts?c73b","webpack://Citta2.0/./src/modules/recently-viewed/recently-viewed-manager.ts?a2a8","webpack://Citta2.0/./src/shared-utils/utilities.ts?3b7d","webpack://Citta2.0/./src/components/citta-dropdown/Dropdown.tsx?19db","webpack://Citta2.0/./src/components/citta-dropdown/DropdownItem.tsx?1c51","webpack://Citta2.0/./src/components/citta-dropdown/DropdownMenu.tsx?9d9a","webpack://Citta2.0/./src/components/citta-button/Button.tsx?7e09","webpack://Citta2.0/./src/components/citta-dropdown/DropdownProvider.tsx?b6f4","webpack://Citta2.0/./src/components/citta-dropdown/UncontrolledDropdown.tsx?004c","webpack://Citta2.0/./src/components/citta-dropdown/DropdownToggle.tsx?e5a5","webpack://Citta2.0/./src/components/citta-buybox/utilities.ts?0124","webpack://Citta2.0/./src/components/citta-buybox/rich-select/RichSelect.tsx?e43a","webpack://Citta2.0/./src/components/citta-buybox/dropdown/dropdown.tsx?d495","webpack://Citta2.0/./src/themes/citta/views/components/buybox-product-configure.tsx?ca59","webpack://Citta2.0/./src/common/buyboxInterface.ts?9d60","webpack://Citta2.0/./src/data-actions/pdp-enquiry/submit-pdp-enquiry-form-data.ts?9564","webpack://Citta2.0/./src/themes/citta/views/components/afterpay_info.tsx?049f","webpack://Citta2.0/./src/themes/citta/views/components/sidebar.tsx?30ee","webpack://Citta2.0/./src/themes/citta/views/components/buybox-find-in-store.tsx?ca0e","webpack://Citta2.0/./src/themes/citta/views/components/buybox-small-components.tsx?19f8"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createRatingsReviewsStateInput } from '../../actions/ratings-reviews-state-data-action';\nimport { AverageRatingNumber, HistogramItems, IHistogramItemViewProps, TotalReviews } from './component/components';\nimport { IRatingsHistogramData } from './ratings-histogram.data';\nimport { IRatingsHistogramProps } from './ratings-histogram.props.autogenerated';\n\nexport interface IRatingsHistogramViewProps extends IRatingsHistogramProps {\n className: string;\n histogramItems: IHistogramItemViewProps[];\n moduleProps: IModuleProps;\n heading: React.ReactNode;\n averageRating: React.ReactNode;\n averageNumber: React.ReactNode;\n totalReviews: React.ReactNode;\n histogramProps: INodeProps;\n ratingsSummaryProps: INodeProps;\n callbacks: IRatingsHistogramCallbacks;\n}\n\nexport interface IRatingsHistogramCallbacks {\n selectFilterBy(stars: number): void;\n}\n\n/**\n * RatingsHistogram component.\n * @extends {React.Component>}\n */\n@observer\nclass RatingsHistogram extends React.PureComponent> {\n constructor(props: IRatingsHistogramProps) {\n super(props);\n this.selectFilterBy = this.selectFilterBy.bind(this);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { className, heading } = this.props.config;\n const {\n ratingsSummary: { result: ratingsSummary }\n } = this.props.data;\n const ratingCount = ratingsSummary && ratingsSummary.totalRatingsCount ? `${ratingsSummary.totalRatingsCount}` : '0';\n\n const completeClass = classname('ms-ratings-histogram', className);\n const viewProps: IRatingsHistogramViewProps = {\n ...this.props,\n className: completeClass,\n callbacks: {\n selectFilterBy: this.selectFilterBy\n },\n moduleProps: {\n moduleProps: this.props,\n className: completeClass\n },\n histogramItems: ratingsSummary\n ? HistogramItems({\n ratingsSummary,\n resources: { ...resources },\n locale: this.props.context.request.locale,\n onClick: this.selectFilterBy\n })\n : [],\n averageRating: ratingsSummary && (\n \n ),\n averageNumber: ratingsSummary && ,\n totalReviews: ratingsSummary && ,\n ratingsSummaryProps: { className: 'ms-ratings-histogram__summary' },\n heading: heading && (\n \n ),\n histogramProps: { className: 'ms-ratings-histogram__histogram' }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public selectFilterBy(stars: number): void {\n const filterKey = `${stars}`;\n this.props.context.actionContext.update(createRatingsReviewsStateInput({ filterKey }), { filterKey });\n }\n}\n\nexport default RatingsHistogram;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHistogramItemViewProps } from './component/components';\nimport { IRatingsHistogramViewProps } from './ratings-histogram';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport { ProductDimensionsMatrix } from '@msdyn365-commerce/components';\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ICoreContext, getCatalogId } from '@msdyn365-commerce/core-internal';\nimport { ArrayExtensions, IDimensionsApp, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, Collapse, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { IBulkPurchaseData } from './bulk-purchase.data';\nimport { IBulkPurchaseProps } from './bulk-purchase.props.autogenerated';\n\n/**\n * Additional optional props for the bulk purchase.\n */\nexport interface IBulkPurchaseExtendedProps extends IBulkPurchaseProps {\n productDimensions?: IProductDimensionsWithAvailabilitiesFull[];\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseViewProps extends IBulkPurchaseProps {\n container: IModuleProps;\n content: React.ReactElement;\n}\n\n/**\n * BulkPurchase state message Interface.\n */\nexport interface IBulkPurchaseStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseState {\n isExpanded: boolean;\n stateMessage?: IBulkPurchaseStateMessage;\n}\n\n/**\n * Bulk-purchase module.\n */\nexport class BulkPurchase extends React.PureComponent {\n public static readonly className = 'ms-bulk-purchase';\n private readonly _errorCssClass: string = 'danger';\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n private readonly collapseRef: React.RefObject = React.createRef();\n\n public constructor(props: IBulkPurchaseExtendedProps) {\n super(props);\n\n this.state = {\n isExpanded: false\n };\n }\n\n public render(): React.ReactElement | null {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const hasDimensionsInData = ArrayExtensions.hasElements(this.props.data.productDimensions?.result);\n if (!hasDimensionsInProps && !hasDimensionsInData) {\n return null;\n }\n\n const viewProps: IBulkPurchaseViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className: classnames(BulkPurchase.className, this.props.config.className)\n },\n content: this._renderCollapseContent(`${BulkPurchase.className}__content`)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderCollapseContent(className: string): React.ReactElement {\n return (\n
\n {this._renderCollapseButton(`${className}__collapse-button`)}\n {this._renderCollapse(`${className}__collapse`)}\n
\n );\n }\n\n private _renderCollapseButton(className: string): React.ReactElement {\n return (\n \n {this.props.resources.bulkPurchaseHeaderTitle}\n \n );\n }\n\n /**\n *This function is being used to handel variant change dropdown.\n */\n private _dimensionDropDownChange = () => {\n this.collapseRef.current?.reEvaluateHeight();\n };\n\n private _renderCollapse(className: string): React.ReactElement {\n return (\n \n {this._renderMainContent(`${className}__main-content`)}\n \n );\n }\n\n private _renderMainContent(className: string): React.ReactElement {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n const userMessageNode = this.state.stateMessage ? (\n \n \n {this.state.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return (\n
\n {!isMobileDevice && (\n
\n \n
\n )}\n {userMessageNode}\n {this._renderMatrix(`${className}__matrix-container`)}\n
\n );\n }\n\n private _renderMatrix(className: string): React.ReactElement {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState?.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n return (\n }\n data={{\n dimensions: hasDimensionsInProps ? this.props.productDimensions! : this.props.data.productDimensions!.result!,\n orderTemplates: this.props.data.orderTemplates?.result,\n customerInformation: this.props.data.customerInformation?.result\n }}\n resources={this.props.resources}\n dimensionOnChange={this._dimensionDropDownChange}\n onErrorMessage={this._onErrorMessage}\n isMultipleCatalogFeatureEnabledInHq={isMultipleCatalogsFeatureEnabled}\n catalogId={catalogId}\n />\n );\n }\n\n private _onErrorMessage = (errorMessage: string) => {\n this.setState({\n stateMessage: {\n messageText: errorMessage,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n });\n };\n\n /**\n * Callback which toggles collapse mode.\n */\n private readonly _toggleCollapse = () => {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n };\n}\n\nexport default BulkPurchase;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddToCartBehavior,\n IAddToCartFailureResult,\n IAddToCartResources,\n ItemSuccessfullyAddedToCartNotification,\n PriceComponent\n} from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { DeliveryOption, FeatureState, OrgUnitLocation, ProductAvailableQuantity, ProductDimension } from '@msdyn365-commerce/retail-proxy';\nimport { NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport {\n ArrayExtensions,\n DeliveryMode,\n IProductInventoryInformation,\n isAggregatedInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, Heading, INodeProps, IPopupProps, Popup } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { BuyboxErrorBlock } from '../../../common/buybox-components';\nimport { IBuyboxCallbacks, IBuyboxState } from '../../../common/buyboxInterface';\nimport { getConfigureErrors, getGenericError } from '../../../common/utilities/error-utilities';\nimport { IBuyboxData } from '../buybox.data';\nimport { IBuyboxProps, IBuyboxResources } from '../buybox.props.autogenerated';\n\nconst modalCloseButtonReference: React.RefObject = React.createRef();\n\n/**\n * FindinStore failure Interface.\n */\nexport interface IFindInStoreFailureResult {\n missingDimensions?: ProductDimension[];\n}\n\n/**\n * BuyBoxFindinStore View Props Interface.\n */\nexport interface IBuyboxFindInStoreViewProps {\n storeSelector?: React.ReactNode;\n heading?: React.ReactNode;\n description?: React.ReactNode;\n errors?: React.ReactNode;\n button?: React.ReactNode;\n productPickupOptionList?: React.ReactNode;\n\n modal?: React.ReactNode;\n\n ContainerProps: INodeProps;\n\n openFindInStoreDialog(): Promise;\n}\n\n/**\n * On click find store handler.\n * @param props -Buybox data.\n * @param state -Buybox state.\n * @param callbacks -Buybox callbacks.\n * @returns Find in store.\n */\nconst onClickFindInStoreHandler = (props: IBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks) => async () => {\n await findInStoreOnClick(props, state, callbacks);\n};\n\n/**\n * Inventory settings based on the inventory policy for aggregated availability.\n */\ninterface IInventorySettingsProps {\n isSectionDisabled: boolean;\n description: string;\n buttonText: string;\n}\n\n/**\n * The function defines the settings values for a given inventory configuration.\n * @param context - The context.\n * @param isStockCheck - Flag to enable inventory validation.\n * @param productAvailability - The product inventory information.\n * @param buyboxResources - The buybox string resources.\n * @param isLoading - Is loading.\n * @returns Boolean.\n */\nfunction getFindInStoreInventorySettings(\n context: ICoreContext,\n isStockCheck: boolean,\n productAvailability: IProductInventoryInformation[] | undefined,\n buyboxResources: IBuyboxResources,\n isLoading?: boolean\n): IInventorySettingsProps {\n // If shouldValidateAggregation is true then is required to check for the product inventory, based on this the messaging will change\n // and the find in store button will be ensbled or disabled\n\n let isSectionDisabled: boolean;\n let buttonText;\n let description: string;\n\n let pickupInventory: IProductInventoryInformation | undefined;\n\n if (!isStockCheck || isLoading) {\n return {\n isSectionDisabled: false,\n buttonText: buyboxResources.findInStoreLinkText,\n description: buyboxResources.findInStoreDescriptionText\n };\n }\n\n if (productAvailability) {\n pickupInventory = productAvailability.find(pickup => pickup.deliveryType === DeliveryMode.pickup);\n }\n\n // If aggregated is enabled, then we need to validate the inventor check for find in store.\n // If an individual is selected, then we will always show a find in store button.\n if (isAggregatedInventory(context.actionContext)) {\n if (productAvailability && pickupInventory?.IsProductAvailable) {\n isSectionDisabled = false;\n buttonText = buyboxResources.findInStoreLinkText;\n description = buyboxResources.findInStoreDescriptionText;\n } else {\n isSectionDisabled = true;\n buttonText = buyboxResources.findInStoreNotAvailableTextButton;\n description = buyboxResources.findInStoreNotAvailableDescription;\n }\n } else {\n isSectionDisabled = false;\n buttonText = buyboxResources.findInStoreLinkText;\n description = buyboxResources.findInStoreDescriptionText;\n }\n\n return {\n isSectionDisabled,\n description,\n buttonText\n };\n}\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns Boolean flag.\n */\nconst matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: string[] | undefined\n): boolean => {\n const deliveryOption: string[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(deliveryCode => deliveryCode === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n return deliveryOption;\n });\n\n return ArrayExtensions.hasElements(deliveryOption);\n};\n\nexport function getBuyboxFindInStore(\n props: IBuyboxProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): IBuyboxFindInStoreViewProps | undefined {\n const {\n data,\n slots: { storeSelector },\n resources: {\n priceFree,\n originalPriceText,\n currentPriceText,\n findInStoreHeaderText,\n buyBoxGoToCartText,\n buyBoxContinueShoppingText,\n closeNotificationLabel,\n buyBoxSingleItemText,\n buyBoxMultiLineItemFormatText,\n buyBoxHeaderMessageText,\n descriptionTextToShowAllPickupOptions\n },\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n }\n } = props;\n\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const product = data?.product?.result;\n const price = data?.productPrice?.result;\n const cart = data?.cart?.result;\n const deliveryOptions = data?.deliveryOptions?.result;\n const productAvailability = data.productAvailableQuantity?.result;\n const retailMulitplePickupMFeatureState = data?.featureState?.result?.find(\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n const channelDeliveryOptionConfig = data?.channelDeliveryOptionConfig?.result;\n\n const missingDimensions = product?.Dimensions?.filter(dimension => !dimension.DimensionValue?.Value);\n\n const {\n errorState: { configureErrors, quantityError, otherError, errorHost },\n modalOpen,\n quantity\n } = state;\n\n const { isSectionDisabled, buttonText, description } = getFindInStoreInventorySettings(\n props.context,\n props.context.app.config.enableStockCheck,\n productAvailability,\n props.resources,\n props.data.productAvailableQuantity.status === 'LOADING' || ArrayExtensions.hasElements(missingDimensions)\n );\n\n if (!product || !ArrayExtensions.hasElements(storeSelector)) {\n return undefined;\n }\n\n if (!deliveryOptions || !deliveryOptions.DeliveryOptions) {\n return undefined;\n }\n\n // If no delivery options present on the product, or none of the delivery options\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\n if (retailMulitplePickupMFeatureState && channelDeliveryOptionConfig) {\n if (!matchDeliveryOptions(deliveryOptions.DeliveryOptions, channelDeliveryOptionConfig?.PickupDeliveryModeCodes)) {\n return undefined;\n }\n } else if (\n !PickupDeliveryModeCode ||\n !deliveryOptions.DeliveryOptions.find((option: DeliveryOption) => option.Code === PickupDeliveryModeCode)\n ) {\n return undefined;\n }\n\n const dialogStrings = {\n goToCartText: buyBoxGoToCartText,\n continueShoppingText: buyBoxContinueShoppingText,\n closeNotificationLabel,\n headerItemOneText: buyBoxSingleItemText,\n headerItemFormatText: buyBoxMultiLineItemFormatText,\n headerMessageText: buyBoxHeaderMessageText,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText\n };\n\n const priceComponent = price ? (\n \n ) : (\n ''\n );\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const popupProps: IPopupProps = {\n context: props.context,\n className: 'ms-buybox',\n id: props.id,\n typeName: props.typeName,\n data: { product: props.data.product?.result, price: props.data.productPrice?.result },\n dialogStrings,\n imageSettings: defaultImageSettings,\n gridSettings: props.context.request.gridSettings,\n productQuantity: quantity,\n priceComponent,\n navigationUrl: getUrlSync('cart', props.context.actionContext),\n modalOpen,\n setModalOpen: callbacks.changeModalOpen\n };\n const renderModalPopup = ;\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n return {\n ContainerProps: {\n className: 'ms-buybox__find-in-store'\n },\n\n storeSelector: storeSelector[0],\n\n openFindInStoreDialog: onClickFindInStoreHandler(props, state, callbacks),\n\n heading: ,\n\n description:

{description}

,\n productPickupOptionList:\n retailMulitplePickupMFeatureState && !isSectionDisabled ? (\n <>\n

{descriptionTextToShowAllPickupOptions}

\n
    \n {deliveryOptions.DeliveryOptions.map((item: DeliveryOption) => {\n return (\n
  • \n {item.Description}\n
  • \n );\n })}\n
\n \n ) : null,\n errors: (\n \n ),\n\n button: (\n \n {buttonText}\n \n ),\n\n modal: renderModalPopup\n };\n}\n\n/**\n * Handler for find in store button.\n * @param props - BuyBox data.\n * @param state - BuyBox state.\n * @param callbacks - BuyBox callbacks.\n * @returns - Promise.\n */\nasync function findInStoreOnClick(props: IBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n cart: { result: cart },\n productAvailableQuantity: { result: productAvailableQuantity }\n },\n resources,\n context,\n modules\n } = props;\n\n const { selectedProduct, quantity } = state;\n\n let dataProduct = props.data.product.result;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const retailMulitplePickupMFeatureState = props.data?.featureState?.result?.find(\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (selectedProduct) {\n dataProduct = (await selectedProduct) || dataProduct;\n }\n\n if (!dataProduct || !storeSelectorStateManager) {\n return;\n }\n\n const product = dataProduct;\n\n const missingDimensions =\n product.Dimensions &&\n product.Dimensions.filter((dimension: ProductDimension) => !(dimension.DimensionValue && dimension.DimensionValue.Value));\n\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n\n if (missingDimensions && missingDimensions.length > 0) {\n if (callbacks.updateErrorState) {\n callbacks.updateErrorState({\n errorHost: 'FINDINSTORE',\n configureErrors: getConfigureErrors(missingDimensions, resources)\n });\n }\n } else {\n storeSelectorStateManager\n .openDialog({\n product,\n id: storeSelectorId,\n parentElementRef: modalCloseButtonReference,\n deliveryOptions: retailMulitplePickupMFeatureState ? props.data.deliveryOptions.result : undefined,\n onLocationSelected: async (orgUnitLocation: OrgUnitLocation, deliveryMode: string) => {\n if (!cart) {\n return Promise.resolve();\n }\n\n const behavior = props.context?.app?.config?.addToCartBehavior;\n\n return cart\n .addProductToCart({ product, count: quantity, location: orgUnitLocation, deliveryMode })\n .then((result: ICartActionResult) => {\n if (result.status === 'FAILED' && result.substatus === 'MAXQUANTITY') {\n callbacks.changeModalOpen(false);\n let productAvailability: ProductAvailableQuantity | undefined;\n if (state.productAvailableQuantity) {\n productAvailability = state.productAvailableQuantity.ProductAvailableQuantity;\n } else if (productAvailableQuantity && ArrayExtensions.hasElements(productAvailableQuantity)) {\n const shippingInventory = productAvailableQuantity.find(\n shipping => shipping.deliveryType === DeliveryMode.pickup\n );\n productAvailability = shippingInventory?.ProductAvailableQuantity;\n } else {\n productAvailability = undefined;\n }\n const failureResult: IAddToCartFailureResult = {\n failureReason: 'CARTACTIONFAILED',\n cartActionResult: { status: result.status, substatus: result.substatus }\n };\n callbacks.updateErrorState({\n errorHost: 'ADDTOCART',\n configureErrors: {},\n otherError: getGenericError(\n failureResult,\n cart,\n resources,\n context,\n product,\n productAvailability,\n orgUnitLocation\n )\n });\n } else {\n callbacks.updateErrorState({\n configureErrors: {}\n });\n const navigationUrl = getUrlSync('cart', context.actionContext);\n if (behavior === undefined || behavior === AddToCartBehavior.goToCart) {\n if (result.status === 'SUCCESS' && navigationUrl) {\n window.location.assign(navigationUrl);\n }\n } else if (behavior === AddToCartBehavior.showModal) {\n callbacks.changeModalOpen(true);\n } else if (behavior === AddToCartBehavior.showNotification) {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const telemetryContent = getTelemetryObject(\n props.context.request.telemetryPageName!,\n props.friendlyName,\n props.telemetry\n );\n const dialogStrings: IAddToCartResources = {\n goToCartText: resources.buyBoxGoToCartText,\n continueShoppingText: resources.buyBoxContinueShoppingText,\n closeNotificationLabel: resources.closeNotificationLabel,\n headerItemOneText: resources.buyBoxSingleItemText,\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\n headerMessageText: resources.buyBoxHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n addedQuantityText: resources.addedQuantityText\n };\n const notification = new ItemSuccessfullyAddedToCartNotification(\n props.context,\n dialogStrings,\n defaultImageSettings,\n props.context.request.gridSettings,\n product,\n props.data.productPrice?.result,\n quantity,\n navigationUrl,\n telemetryContent,\n props.id,\n props.typeName\n );\n NotificationsManager.instance().addNotification(notification);\n }\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.exception(error);\n props.telemetry.debug('Unable to add product to cart');\n }\n });\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to find in store');\n }\n });\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getCatalogId, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core-internal';\nimport {\n CommerceProperty,\n ProductCatalog,\n ProductDeliveryOptions,\n ProductDimensionValue,\n ProductDimensionValueInventoryAvailability,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { BulkPurchase } from '@msdyn365-commerce-modules/bulk-purchase';\nimport {\n ArrayExtensions,\n DeliveryMode,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDeliveryOptionsForSelectedVariant,\n GetDeliveryOptionsForSelectedVariantInput,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getDimensionValuesFromQuery,\n getInventoryLevelCodeFromDimensionValue,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getSelectedVariant,\n IDimensionsApp,\n IDimensionValueForSelectedVariant,\n InventoryLevelValues,\n IProductInventoryInformation,\n IPromiseQueue,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput,\n setDimensionValuesToQuery,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n updateMaxQuantityForCartLineItem\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n getBuyboxAddToCart,\n getBuyBoxInventoryLabel,\n getBuyboxKeyInPrice,\n getBuyboxProductAddToOrderTemplate,\n getBuyboxProductAddToWishlist,\n getBuyboxProductComparisonButton,\n getBuyboxProductDescription,\n getBuyboxProductPrice,\n getBuyboxProductQuantity,\n getBuyboxProductRating,\n getBuyboxProductTitle,\n getBuyboxProductUnitOfMeasure,\n getBuyboxShopSimilarButton,\n getQuantityLimitsMessages,\n RetailDefaultOrderQuantityLimitsFeatureName,\n EcommerceQuantityLimitConfigurationsFeatureName,\n RevertToSiteBuilderOrderQuantityLimitsSettingsCRTFeatureName\n} from '../../common/buybox-components';\nimport { getBuyboxProductConfigure } from '../../common/buybox-product-configure';\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonData,\n IBuyboxExtentedProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IErrorState,\n ShopSimiliarButtonType\n} from '../../common/buyboxInterface';\nimport { IBuyboxData } from './buybox.data';\nimport { IBuyboxProps, IBuyboxResources } from './buybox.props.autogenerated';\nimport { getBuyboxFindInStore, IBuyboxFindInStoreViewProps } from './components/buybox-find-in-store';\nimport { RecentlyViewedState } from '../recently-viewed';\n\nexport interface IBuyboxViewProps extends IBuyboxProps {\n state: IBuyboxState;\n ModuleProps: IModuleProps;\n ProductInfoContainerProps: INodeProps;\n MediaGalleryContainerProps: INodeProps;\n callbacks: IBuyboxCallbacks;\n mediaGallery?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n rating?: React.ReactNode;\n price?: React.ReactNode;\n productComparisonButton?: React.ReactNode;\n bulkPurchaseLink?: React.ReactNode;\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps;\n addToWishlist?: IBuyboxAddToWishlistViewProps;\n min?: number | undefined;\n max: number | undefined;\n addToCart: IBuyboxAddToCartViewProps;\n findInStore?: IBuyboxFindInStoreViewProps;\n quantity?: IBuyboxProductQuantityViewProps;\n configure?: IBuyboxProductConfigureViewProps;\n inventoryLabel?: React.ReactNode;\n shopSimilarLook?: IBuyboxShopSimilarLookViewProps;\n shopSimilarDescription?: IBuyboxShopSimilarLookViewProps;\n quantityLimitsMessages: React.ReactNode;\n telemetryContent?: ITelemetryContent;\n keyInPrice?: IBuyboxKeyInPriceViewProps;\n unitOfMeasure?: React.ReactNode;\n catalogs?: ProductCatalog[] | undefined;\n isChannelMultipleCatalogsFeatureEnabled?: boolean;\n currentCatalogId?: number;\n applyDefaultOrderSettings?: boolean;\n}\n\n/**\n * Buybox Module.\n */\nclass Buybox extends React.PureComponent, IBuyboxState> {\n /**\n * A queue of tasks of processing the changes in the dimensions.\n * Limit to two processes:\n * 1 - for the current process, which is under execution at the moment.\n * 2 - next process, which will process the latest version of data.\n * @remark Enqueueing new promises will discard the previous ones (except the one which is under processing).\n */\n private readonly dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(2);\n\n private dimensions: { [id: number]: string } = {};\n private initializedDimensions: Set = new Set();\n\n private readonly buyboxCallbacks: IBuyboxCallbacks = {\n updateQuantity: (newQuantity: number): boolean => {\n const errorState = { ...this.state.errorState };\n errorState.quantityError = undefined;\n errorState.otherError = undefined;\n\n this.setState({ quantity: newQuantity, errorState });\n return true;\n },\n updateErrorState: (newErrorState: IErrorState): void => {\n this.setState({ errorState: newErrorState });\n },\n updateSelectedProduct: (\n newSelectedProduct: Promise,\n newInventory: IProductInventoryInformation | undefined,\n newPrice: ProductPrice | undefined,\n newDeliveryOptions: ProductDeliveryOptions | undefined\n ): void => {\n this.setState({\n selectedProduct: newSelectedProduct,\n productAvailableQuantity: newInventory,\n productDeliveryOptions: newDeliveryOptions\n });\n this._updatePrice(newPrice);\n },\n initializeDimension: (initializedDimension: string): void => {\n if (initializedDimension) {\n this.initializedDimensions.add(initializedDimension);\n }\n },\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\n this.dimensions[selectedDimensionId] = selectedDimensionValueId;\n // Only trigger _updateDimensions when all dimensions are initialized\n if (this.initializedDimensions.size === (this.props.data.product.result?.Dimensions?.length || 0)) {\n return this.dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: unknown) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw error;\n }\n });\n }\n },\n getDropdownName: (dimensionType: number, resources: IBuyboxResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n changeModalOpen: (isModalOpen: boolean): void => {\n this.setState({ modalOpen: isModalOpen });\n },\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n },\n\n /**\n * Update isUpdatingDeliveryOptions state.\n *\n * @param isUpdatingDeliveryOptions - The status of updating delivery options.\n */\n changeUpdatingDeliveryOptions: (isUpdatingDeliveryOptions: boolean): void => {\n this.setState({ isUpdatingDeliveryOptions });\n },\n\n updateKeyInPrice: (customPrice: number): void => {\n // Remove custom amount error when updating the custom price\n const errorState = { ...this.state.errorState };\n errorState.customAmountError = undefined;\n\n this.setState({ isPriceKeyedIn: true, keyInPriceAmount: customPrice, errorState });\n this._updatePrice(this.state.productPrice, customPrice);\n }\n };\n\n private readonly telemetryContent: ITelemetryContent;\n\n public constructor(props: IBuyboxProps, state: IBuyboxState) {\n super(props);\n this.state = {\n errorState: {\n configureErrors: {}\n },\n quantity: 1,\n min: undefined,\n max: undefined,\n selectedProduct: undefined,\n productPrice: undefined,\n productDeliveryOptions: undefined,\n\n modalOpen: false,\n isUpdatingDimension: false,\n isUpdatingDeliveryOptions: false,\n isPriceApiCalled: false\n };\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\n }\n\n public async componentDidMount(): Promise {\n const {\n data: {\n product: { result: product },\n productPrice\n },\n context\n } = this.props;\n\n // There are multiple sources triggering the callback function dimensionSelectedAsync calling the GetActivePrice api before componentDidMount and after componentDidMount.\n // Set isPriceApiCalled to false here to prevent redundant API call after componentDidMount:\n // If the price has not been hydrated before, this means the component was just loaded for the first time with variant selected.\n // We will skip calling RS API in this case as the price data has already been fetched via module data action in node server.\n\n const matchedDimensions = getDimensionValuesFromQuery(this.props.context.request.url.requestUrl);\n\n // Set isPriceApiCalled to false only when variant is there\n if (matchedDimensions.length > 0) {\n this.setState({ isPriceApiCalled: false });\n } else {\n this.setState({ isPriceApiCalled: true });\n }\n\n productPrice.then(async result => {\n this._updatePrice(result);\n });\n\n if (product) {\n // Check if the product is service or not by product type\n if (product.ItemTypeValue === ReleasedProductType.Service) {\n this.setState({ isServiceItem: true });\n }\n await this._updateQuantitiesInState(product);\n }\n\n if (product && context.app.config.maxRecentlyViewedItemsCount > 0) {\n RecentlyViewedState.instance(this.props.context, context.app.config.maxRecentlyViewedItemsCount, product.RecordId);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n slots: { mediaGallery, productComparisonButton },\n data: {\n product: { result: product }\n },\n config: { className = '' }\n } = this.props;\n\n const { min, max } = this.state;\n\n if (!product) {\n this.props.context.telemetry.error('Product content is empty, module wont render');\n return null;\n }\n\n const props = this.props as IBuyboxExtentedProps;\n const defaultMinimumKeyInPrice = 10;\n const defaultMaximumKeyInPrice = 100;\n\n const context = this.props.context as ICoreContext;\n const inventoryLevel = context.app.config.inventoryLevel;\n const dimensionValuesWithInventory = ArrayExtensions.flatten(\n ArrayExtensions.validValues(this.props.data.productDimensions.result?.map(value => value.dimensionValuesWithInventory))\n );\n const applyDefaultOrderSettings =\n (this.props.data.featureState?.result?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)\n ?.IsEnabled ??\n false) &&\n (this.props.data.cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false);\n const hasAvailableProducts =\n !ArrayExtensions.hasElements(dimensionValuesWithInventory) ||\n dimensionValuesWithInventory.some((value: unknown) => {\n const inventoryLevelCode = getInventoryLevelCodeFromDimensionValue(\n value as ProductDimensionValueInventoryAvailability,\n inventoryLevel\n );\n return inventoryLevelCode !== InventoryLevelValues.outOfStock;\n });\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n\n const viewProps: IBuyboxViewProps = {\n ...(this.props as IBuyboxProps),\n state: this.state,\n mediaGallery: mediaGallery && mediaGallery.length > 0 ? mediaGallery[0] : undefined,\n ModuleProps: {\n moduleProps: this.props,\n className: classnames('ms-buybox', className)\n },\n ProductInfoContainerProps: {\n className: 'ms-buybox__content'\n },\n MediaGalleryContainerProps: {\n className: 'ms-buybox__media-gallery'\n },\n telemetryContent: this.telemetryContent,\n callbacks: this.buyboxCallbacks,\n title: getBuyboxProductTitle(props),\n description: getBuyboxProductDescription(props),\n bulkPurchaseLink: this._renderBuyboxBulkPurchaseLink(),\n unitOfMeasure: getBuyboxProductUnitOfMeasure(props),\n configure: getBuyboxProductConfigure(props, this.state, this.buyboxCallbacks),\n findInStore: getBuyboxFindInStore(this.props, this.state, this.buyboxCallbacks),\n price: getBuyboxProductPrice(props, this.state),\n addToCart: getBuyboxAddToCart(\n props,\n this.state,\n this.buyboxCallbacks,\n defaultMinimumKeyInPrice,\n defaultMaximumKeyInPrice,\n undefined,\n hasAvailableProducts\n ),\n productComparisonButton: ArrayExtensions.hasElements(productComparisonButton)\n ? getBuyboxProductComparisonButton(\n productComparisonButton[0],\n product,\n getCatalogId(this.props.context.request),\n this.state\n )\n : undefined,\n addToOrderTemplate: getBuyboxProductAddToOrderTemplate(\n props,\n this.state,\n this.buyboxCallbacks,\n this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogId\n ),\n addToWishlist: getBuyboxProductAddToWishlist(props, this.state, this.buyboxCallbacks),\n rating: !props.context.app.config.hideRating && getBuyboxProductRating(props),\n quantity: product.IsGiftCard ? undefined : getBuyboxProductQuantity(props, this.state, this.buyboxCallbacks),\n inventoryLabel: getBuyBoxInventoryLabel(props),\n shopSimilarLook:\n this.props.config.enableShopSimilarLooks && !product.IsGiftCard\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Looks)\n : undefined,\n shopSimilarDescription:\n this.props.config.enableShopSimilarDescription && !product.IsGiftCard\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Description)\n : undefined,\n keyInPrice:\n this.props.config.enableKeyInPrice && this.state.isCustomPriceSelected\n ? getBuyboxKeyInPrice(props, this.state, this.buyboxCallbacks)\n : undefined,\n quantityLimitsMessages: getQuantityLimitsMessages(props, this.state),\n min: applyDefaultOrderSettings ? min : 1,\n max,\n applyDefaultOrderSettings: applyDefaultOrderSettings,\n isChannelMultipleCatalogsFeatureEnabled: this._isChannelMultipleCatalogsFeatureEnabled(),\n currentCatalogId: catalogId,\n catalogs: this._validateCatalogDetails(catalogId)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles anchor click event and scrolls to the given bulk purchase module.\n * @param bulkPurchaseModule - Bulk purchase module.\n * @returns Handler.\n */\n private readonly _onBulkPurchaseLinkClick = (bulkPurchaseModule: Element) => () => {\n const boundingRect = bulkPurchaseModule.getBoundingClientRect();\n const scrollX = boundingRect.left + window.pageXOffset;\n const scrollY = boundingRect.top + window.pageYOffset;\n\n window.scrollTo(scrollX, scrollY);\n };\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private _renderBuyboxBulkPurchaseLink(): React.ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\n return null;\n }\n\n if (!msdyn365Commerce.isBrowser) {\n return null;\n }\n\n const bulkPurchaseModules = Array.from(document.getElementsByClassName(BulkPurchase.className));\n\n if (!ArrayExtensions.hasElements(bulkPurchaseModules)) {\n return null;\n }\n\n return (\n \n {this.props.resources.bulkPurchaseLinkText}\n \n );\n }\n\n private _updatePrice(newPrice: ProductPrice | undefined, customPrice: number | undefined = this.state.keyInPriceAmount): void {\n if (this.state.isCustomPriceSelected && newPrice) {\n newPrice.CustomerContextualPrice = customPrice;\n }\n this.setState({ productPrice: newPrice });\n }\n\n private _getProductVariant(dimensionsToUpdate: { [id: number]: string }) {\n const {\n data: {\n product: { result: product }\n },\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n\n const productDimensions = this.props.data.productDimensions.result!;\n\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\n // over the information in data\n const mappedDimensions = productDimensions\n .map(dimension => {\n const dimensions = (dimension.dimensionValuesWithInventory ??\n dimension.DimensionValues ??\n []) as IDimensionValueForSelectedVariant[];\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n dimensions.find(\n value => value.DimensionValue?.RecordId.toString() === dimensionsToUpdate[dimension.DimensionTypeValue]\n )?.DimensionValue ?? dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => dimension.DimensionValue);\n setDimensionValuesToQuery(this.props.context.actionContext.requestContext.url.requestUrl, mappedDimensions);\n\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\n // so that places like add to cart can await it\n const selectedProductPromise = getSelectedVariant(\n new SelectedVariantInput(\n product!.MasterProductId ? product!.MasterProductId : product!.RecordId,\n channelId,\n undefined,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n this.setState({ selectedProduct: selectedProductPromise });\n\n return { productVariantPromise: selectedProductPromise, mappedDimensions };\n }\n\n private readonly _updateDimensions = async (): Promise => {\n const product = this.props.data.product.result;\n\n const productDimensions = this.props.data.productDimensions.result;\n\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\n\n if (!product || !hasProductDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this.dimensions };\n\n this.setState({ isUpdatingDimension: true, isUpdatingDeliveryOptions: true });\n\n // Step 1: Clear error state to display relevant errors\n if (this.state.errorState.otherError || this.state.errorState.quantityError) {\n const clearErrorState = { ...this.state.errorState };\n clearErrorState.otherError = undefined;\n if (this.state.errorState.errorHost === 'ADDTOCART') {\n clearErrorState.quantityError = undefined;\n clearErrorState.errorHost = undefined;\n }\n this.setState({ errorState: clearErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const key of Object.keys(dimensionsToUpdate)) {\n if (this.state.errorState.configureErrors[key]) {\n this.setState(previousState => {\n const errorState = previousState.errorState;\n errorState.configureErrors[key] = undefined;\n return { errorState };\n });\n }\n }\n\n const data = this._getProductVariant(dimensionsToUpdate);\n const productVariant: SimpleProduct | null = await data.productVariantPromise;\n\n if (!productVariant) {\n return;\n }\n\n const promises: Promise[] = [\n this._getDimensionsForSelectedVariant(productVariant, data.mappedDimensions),\n this._hydrateInventoryInfo(productVariant),\n this._hydratePrice(productVariant),\n this._hydrateDeliveryOptions(productVariant),\n this._updateQuantitiesInState(productVariant)\n ];\n\n await Promise.all(promises);\n };\n\n private async _getDimensionsForSelectedVariant(\n productVariant: SimpleProduct,\n mappedDimensions: {\n /* eslint-disable @typescript-eslint/naming-convention -- Retail proxy values */\n DimensionTypeValue: number;\n DimensionValue: ProductDimensionValue | undefined;\n ExtensionProperties: CommerceProperty[] | undefined;\n /* eslint-enable @typescript-eslint/naming-convention -- Retail proxy values */\n }[]\n ): Promise {\n await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n productVariant.MasterProductId ? productVariant.MasterProductId : productVariant.RecordId,\n this.props.context.request.apiSettings.channelId,\n mappedDimensions,\n this.props.context.request\n ),\n this.props.context.actionContext\n );\n }\n\n private async _hydrateInventoryInfo(productVariant: SimpleProduct): Promise {\n // Step 5. Use these dimensions hydrate the inventory. Wrap this in a promise\n // so that places like add to cart can await it\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\n new ProductAvailabilitiesForSelectedVariantInput(\n productVariant.RecordId,\n this.props.context.request.apiSettings.channelId,\n productVariant\n ),\n this.props.context.actionContext\n );\n\n const newShippingQuantity = newAvailableQuantity?.find(\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (shipping: { deliveryType: any }) => shipping.deliveryType === DeliveryMode.shipping\n );\n const isCustomPriceSelected = productVariant.Dimensions?.find(\n dimension =>\n dimension.DimensionTypeValue === 4 && dimension.DimensionValue && dimension.DimensionValue.Value?.toLowerCase() === 'custom'\n );\n if (isCustomPriceSelected) {\n this.setState({ isCustomPriceSelected: true });\n } else {\n this.setState(previousState => {\n const errorState = previousState.errorState;\n errorState.customAmountError = undefined;\n return { isCustomPriceSelected: false, isPriceKeyedIn: false, errorState };\n });\n }\n\n if (newShippingQuantity) {\n this.setState({ productAvailableQuantity: newShippingQuantity });\n } else {\n this.setState({ productAvailableQuantity: undefined });\n }\n }\n\n private async _hydratePrice(productVariant: SimpleProduct): Promise {\n // This function is invoked when dimensionSelectedAsync get called.\n // If the price has not been hydrated before, this means the component was just loaded for the first time with variant selected.\n // We will skip calling RS API in this case as the price data has already been fetched via module data action in node server.\n if (!this.state.isPriceApiCalled) {\n this.setState({ isPriceApiCalled: true });\n return;\n }\n\n // Step 6. Use these dimensions hydrate the product price.\n const newPrice = await getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(productVariant.RecordId, this.props.context.request.apiSettings.channelId, productVariant),\n this.props.context.actionContext\n );\n\n if (newPrice) {\n this._updatePrice(newPrice);\n }\n }\n\n private async _hydrateDeliveryOptions(productVariant: SimpleProduct): Promise {\n const retailMultiplePickupFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n\n // Step 7. Use these dimensions hydrate the product delivery options.\n const newDeliveryOptions = await getDeliveryOptionsForSelectedVariant(\n new GetDeliveryOptionsForSelectedVariantInput(\n productVariant.RecordId,\n this.props.context.request.apiSettings.channelId,\n productVariant,\n undefined,\n retailMultiplePickupFeatureState?.IsEnabled\n ),\n this.props.context.actionContext\n );\n\n if (newDeliveryOptions) {\n this.setState({ productDeliveryOptions: newDeliveryOptions });\n }\n }\n\n private async _updateQuantitiesInState(product: SimpleProduct): Promise {\n const isOrderQuantityLimitsFeatureEnabled = await this._isOrderQuantityLimitsFeatureEnabled();\n const isChannelLimitsFeatureEnabled = await this._isChannelLimitsFeatureEnabled();\n\n const min: number = this._getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n isChannelLimitsFeatureEnabled || isOrderQuantityLimitsFeatureEnabled,\n product\n );\n let quantity: number = this._getQuantity(product, isOrderQuantityLimitsFeatureEnabled);\n quantity = Math.max(quantity, min);\n\n this.setState({\n min,\n max,\n quantity\n });\n }\n\n private _getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isOrderQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MinimumQuantity &&\n product.Behavior.MinimumQuantity > 0\n ) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MaximumQuantity &&\n product.Behavior.MaximumQuantity > 0\n ) {\n return product.Behavior.MaximumQuantity;\n }\n\n return updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem);\n }\n\n /**\n * Retrieves the value of the IgnoreOrderSettings property from the cart configuration.\n * If the property is not present, it defaults to false.\n * @returns {boolean} The value of the IgnoreOrderSettings property.\n */\n private _getIgnoreOrderSettings(): boolean {\n const cartConfiguration = this.props.data.cartConfiguration;\n return !(cartConfiguration?.result?.IgnoreOrderSettings ?? false);\n }\n\n private _getQuantity(product: SimpleProduct, isOrderQuantityLimitsFeatureEnabled: boolean): number {\n const { quantity } = this.state;\n let defaultQuantity = 1;\n\n if (quantity !== defaultQuantity || !isOrderQuantityLimitsFeatureEnabled) {\n return quantity;\n }\n\n const cartConfiguration = this.props.data.cartConfiguration;\n const applyDefaultOrderSettingsForCartLine = cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false;\n if (!applyDefaultOrderSettingsForCartLine) {\n return quantity;\n }\n\n if (product?.Behavior?.DefaultQuantity && product.Behavior.DefaultQuantity > 0) {\n defaultQuantity = product.Behavior.DefaultQuantity;\n }\n\n return defaultQuantity;\n }\n\n private readonly _getDropdownName = (dimensionType: number, resources: IBuyboxResources): string => {\n const isGiftCard = this.props.data.product.result?.IsGiftCard;\n\n switch (dimensionType) {\n case 1: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case 2: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case 4: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private async _isOrderQuantityLimitsFeatureEnabled(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName\n )?.IsEnabled;\n if (!isFeatureEnabledInHq) {\n return false;\n }\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === RevertToSiteBuilderOrderQuantityLimitsSettingsCRTFeatureName\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return true;\n }\n let customerInfo;\n try {\n customerInfo = await this.props.data.customerInformation;\n } catch (error) {\n this.props.telemetry.information(error);\n this.props.telemetry.debug('Unable to receive Customer Information. May be user is not authorized');\n return false;\n }\n\n return (\n customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\n );\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n return !(cartConfiguration?.IgnoreOrderSettings ?? false);\n }\n }\n\n private _validateCatalogDetails(catalogId: number): ProductCatalog[] | undefined {\n const catalogs = this.props.data.catalogs?.result?.filter(item => item.RecordId === catalogId);\n if (ArrayExtensions.hasElements(catalogs) && catalogs[0].RecordId === 0) {\n return;\n }\n\n return catalogs;\n }\n\n private async _isChannelLimitsFeatureEnabled(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelLimitsFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName\n )?.IsEnabled;\n\n return isChannelLimitsFeatureEnabledInHq ?? false;\n }\n}\n\nexport default Buybox;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContext } from '@msdyn365-commerce/core';\n\n/**\n * Gets correct alt text for image based on configuration of site.\n * @param context Current request context.\n * @param shouldUseCmsAltText Should use CMS alt text.\n * @param productName Product name.\n * @param imageAltText Alt-text from CMS image.\n */\nexport function getAltText(\n context: IRequestContext,\n shouldUseCmsAltText: boolean,\n productName?: string,\n imageAltText?: string\n): string | undefined {\n if (!context?.app?.config?.OmniChannelMedia) {\n return productName;\n }\n if (shouldUseCmsAltText) {\n return imageAltText;\n }\n return productName;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { commerceApiRequest, getCatalogId, IActionContext, IImageData, IImageSettings } from '@msdyn365-commerce/core';\nimport { MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getMediaLocationsForSelectedVariant, MediaLocationsForSelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { getAltText } from './helper';\n\nexport async function getValidProductImages(\n productId: number,\n channelId: number,\n actionContext: IActionContext,\n imageSettings: IImageSettings,\n selectedProduct?: SimpleProduct\n): Promise {\n const catalogId = getCatalogId(actionContext.requestContext);\n const actionInput = new MediaLocationsForSelectedVariantInput(productId, channelId, selectedProduct, catalogId);\n\n return getMediaLocationsForSelectedVariant(actionInput, actionContext)\n .then(mediaLocations => {\n if (mediaLocations) {\n return Promise.all(mediaLocations.map(async mediaLocation => validateMediaLocaionAsync(mediaLocation, imageSettings))).then(\n pairs => {\n return pairs.filter(pair => pair[1]).map(pair => pair[0]);\n }\n );\n }\n return [];\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant');\n return [];\n });\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-unused-vars-experimental -- .\nasync function validateMediaLocaionAsync(mediaLocation: MediaLocation, imageSettings?: IImageSettings): Promise<[IImageData, boolean]> {\n const imageData = {\n src: mediaLocation.Uri || '',\n altText: mediaLocation.AltText || ''\n };\n\n if (imageData.src === '') {\n return [imageData, false];\n }\n\n return new Promise<[IImageData, boolean]>(resolve => {\n try {\n const http = new XMLHttpRequest();\n http.open('HEAD', imageData.src, true);\n\n http.addEventListener('load', () => {\n resolve([imageData, http.status === 200 || http.status === 201]);\n });\n\n http.addEventListener('error', () => {\n resolve([imageData, false]);\n });\n\n http.send();\n } catch {\n resolve([imageData, false]);\n }\n });\n}\n\n/**\n * Gets product variant images on dimension change of buy-box module for Omni scenario.\n * @param productId Product record id.\n * @param shouldUseCmsAltText Alt-text source to use.\n * @param channelId Current channel id.\n * @param actionContext Current action context.\n * @param productName Product name.\n * @param selectedProduct Currently selected variant product.\n * @returns List of images.\n */\n\nexport async function getProductImages(\n productId: number,\n shouldUseCmsAltText: boolean,\n channelId: number,\n actionContext: IActionContext,\n productName?: string,\n selectedProduct?: SimpleProduct\n): Promise {\n const catalogId = getCatalogId(actionContext.requestContext);\n if (actionContext.requestContext?.params?.isPreview) {\n const response = await commerceApiRequest(actionContext.requestContext, 'msdyn365-ochannel-product-info', 'post', {\n productId: productId,\n channelId: channelId,\n catalogId: catalogId\n });\n if (response.status !== 200) {\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant for preview scenario');\n return [];\n }\n const previewImageData = response?.data as MediaLocation[];\n if (previewImageData) {\n return previewImageData.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(actionContext.requestContext, shouldUseCmsAltText, productName, mediaLocation.AltText),\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n }\n return [];\n }\n const actionInput = new MediaLocationsForSelectedVariantInput(productId, channelId, selectedProduct, catalogId);\n return getMediaLocationsForSelectedVariant(actionInput, actionContext)\n .then(mediaLocations => {\n if (mediaLocations) {\n return mediaLocations.map(mediaLocation => {\n return {\n src: mediaLocation.Uri ?? '',\n altText: getAltText(actionContext.requestContext, shouldUseCmsAltText, productName, mediaLocation.AltText),\n additionalProperties: mediaLocation.IsApplicableForChildEntities\n ? {\n isApplicableForChildEntities: 'true'\n }\n : undefined\n };\n });\n }\n return [];\n })\n .catch(error => {\n actionContext.telemetry.exception(error);\n actionContext.telemetry.debug('Unable to get Media Locations for Selected Variant');\n return [];\n });\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { Carousel, ICarouselProps } from '@msdyn365-commerce/components';\nimport msdyn365Commerce, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport {\n ProductDeliveryOptions,\n ProductDimension,\n ProductDimensionValue,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDeliveryOptionsForSelectedVariant,\n GetDeliveryOptionsForSelectedVariantInput,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getProductPageUrlSync,\n getSelectedVariant,\n IProductInventoryInformation,\n IPromiseQueue,\n ISelectedProduct,\n ObjectExtensions,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n QueryResultSettingsProxy,\n SelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n IncrementalQuantity,\n INodeProps,\n ISingleSlideCarouselProps,\n isMobile,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n onTelemetryClick,\n SingleSlideCarousel,\n TelemetryConstant,\n updateMaxQuantityForCartLineItem,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react';\nimport React, { ReactNode } from 'react';\n\nimport {\n getBuyboxAddToCart,\n getBuyBoxInventoryLabel,\n getBuyboxKeyInPrice,\n getBuyboxProductAddToWishlist,\n getBuyboxProductDescription,\n getBuyboxProductPrice,\n getBuyboxProductRating,\n getBuyboxProductTitle,\n getBuyboxProductUnitOfMeasure,\n getQuantityLimitsMessages,\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonData,\n IBuyboxExtentedProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxState,\n IErrorState,\n IProductDetails,\n RetailDefaultOrderQuantityLimitsFeatureName,\n EcommerceQuantityLimitConfigurationsFeatureName,\n RevertToSiteBuilderOrderQuantityLimitsSettingsCRTFeatureName\n} from '../../common';\nimport { getBuyboxProductConfigure } from '../../common/buybox-product-configure';\nimport { IQuickviewData } from './quickview.data';\nimport { IQuickviewProps, IQuickviewResources } from './quickview.props.autogenerated';\nimport { getProductDetails } from './utilities/get-product-details';\nimport { getProductImages, getValidProductImages } from './utilities/get-valid-product-images';\nimport { RecentlyViewedState } from '../recently-viewed';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * QuickView props Interface.\n */\nexport interface IQuickviewViewProps extends IQuickviewProps {\n quickView: IModuleProps;\n quickViewButton: React.ReactNode;\n ModalContainer: IModuleProps;\n ModalHeaderContainer: INodeProps;\n ModalHeaderContent: React.ReactNode;\n ModalFooterContainer: INodeProps;\n ModalBodyContainer: INodeProps;\n cartContainerProps: INodeProps;\n state: IBuyboxState;\n ModuleProps?: IModuleProps;\n ProductInfoContainerProps: INodeProps;\n MediaGalleryContainerProps: INodeProps;\n callbacks?: IBuyboxCallbacks;\n title?: React.ReactNode;\n description?: React.ReactNode;\n configure?: IBuyboxProductConfigureViewProps;\n inventoryLabel?: React.ReactNode;\n rating?: React.ReactNode;\n price?: React.ReactNode;\n addToCart?: IBuyboxAddToCartViewProps;\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps;\n addToWishlist?: IBuyboxAddToWishlistViewProps;\n max: number | undefined;\n keyInPrice?: IBuyboxKeyInPriceViewProps;\n quantity?: IBuyboxProductQuantityViewProps;\n quantityLimitsMessages?: React.ReactNode;\n CarouselProps: INodeProps;\n Thumbnails: IQuickViewThumbnailsViewProps;\n seeDetailsbutton: React.ReactNode;\n isModalOpen: boolean;\n loading?: React.ReactNode;\n unitOfMeasure?: React.ReactNode;\n productDetails?: IProductDetails | undefined;\n isMobileDevice?: boolean;\n}\n\n/**\n * QuickView extend props Interface.\n */\nexport interface IQuickviewExtentedProps extends IQuickviewProps {\n selectedProductId?: number;\n selectedDimensions?: ProductDimension[];\n}\n\n/**\n * QuickView thumbnails props Interface.\n */\nexport interface IQuickViewThumbnailsViewProps {\n ThumbnailsContainerProps: INodeProps;\n SingleSlideCarouselComponentProps: INodeProps;\n items?: IQuickViewThumbnailItemViewProps[];\n}\n\n/**\n * QuickView thumbnail item view props Interface.\n */\nexport interface IQuickViewThumbnailItemViewProps {\n ThumbnailItemContainerProps: INodeProps;\n Picture: React.ReactElement;\n}\n\n/**\n * QuickView state Interface.\n */\nexport interface IQuickViewState extends IBuyboxState {\n isDataLoaded: boolean;\n}\n\n/**\n *\n * Quickview component.\n * @extends {React.Component>}\n */\nclass Quickview extends React.Component, IQuickViewState> {\n /**\n * A queue of tasks of processing the changes in the dimensions.\n * Limit to two processes:\n * 1 - for the current process, which is under execution at the moment.\n * 2 - next process, which will process the latest version of data.\n * @remark Enqueueing new promises will discard the previous ones (except the one which is under processing).\n */\n private readonly dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(2);\n\n private dimensions: { [id: number]: string } = {};\n\n private initializedDimensions: Set = new Set();\n\n private readonly telemetryContent: ITelemetryContent;\n\n private productDetails: IProductDetails | undefined;\n\n private readonly quickViewCallbacks: IBuyboxCallbacks = {\n updateQuantity: (newQuantity: number): boolean => {\n const errorState = { ...this.state.errorState };\n errorState.quantityError = undefined;\n errorState.otherError = undefined;\n\n this.setState({ quantity: newQuantity, errorState });\n return true;\n },\n updateErrorState: (newErrorState: IErrorState): void => {\n this.setState({ errorState: newErrorState });\n },\n updateSelectedProduct: (\n newSelectedProduct: Promise,\n newInventory: IProductInventoryInformation | undefined,\n newPrice: ProductPrice | undefined,\n newDeliveryOptions: ProductDeliveryOptions | undefined\n ): void => {\n this.setState({\n selectedProduct: newSelectedProduct,\n productAvailableQuantity: newInventory,\n productDeliveryOptions: newDeliveryOptions\n });\n this._updatePrice(newPrice);\n },\n initializeDimension: (initializedDimension: string): void => {\n if (initializedDimension) {\n this.initializedDimensions.add(initializedDimension);\n }\n },\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\n this.dimensions[selectedDimensionId] = selectedDimensionValueId;\n // Only trigger _updateDimensions when all dimensions are initialized\n if (this.initializedDimensions.size === this.productDetails?.product?.Dimensions?.length) {\n return this.dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: unknown) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw error;\n }\n });\n }\n },\n getDropdownName: (dimensionType: number, resources: IQuickviewResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n changeModalOpen: (isModalOpen: boolean): void => {\n this._hideQuickViewDialog();\n },\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n },\n updateKeyInPrice: (customPrice: number): void => {\n // Remove custom amount error when updating the custom price\n const errorState = { ...this.state.errorState };\n errorState.customAmountError = undefined;\n\n this.setState({ isPriceKeyedIn: true, keyInPriceAmount: customPrice, errorState });\n this._updatePrice(this.state.productPrice, customPrice);\n }\n };\n\n private readonly defaultGalleryImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=767&h=767&m=8', w: 0, h: 0 },\n sm: { q: 'w=600&h=600&m=8', w: 0, h: 0 },\n md: { q: 'w=600&h=772&m=8', w: 0, h: 0 },\n lg: { q: 'h=772&m=8', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n private readonly defaultThumbnailImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=100&m=8', w: 100, h: 0 },\n lg: { q: 'w=100&m=8', w: 100, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n public constructor(props: IQuickviewProps) {\n super(props);\n this.state = {\n modalOpen: false,\n quantity: 1,\n min: undefined,\n max: undefined,\n errorState: {\n configureErrors: {}\n },\n selectedProduct: undefined,\n productPrice: undefined,\n productDeliveryOptions: undefined,\n isUpdatingDimension: false,\n activeIndex: 0,\n animating: false,\n mediaGalleryItems: undefined,\n isDataLoaded: false\n };\n\n this._quickViewCloseButtonclick = this._quickViewCloseButtonclick.bind(this);\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\n }\n\n /**\n * React should component udpate function.\n * @param nextProps - Next Props.\n * @param nextState - Next State.\n * @returns Boolean - Whether the module will rerender or not.\n */\n public shouldComponentUpdate(nextProps: IQuickviewProps, nextState: IBuyboxState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const {\n config: { className = '' },\n resources\n } = this.props;\n const { max } = this.state;\n const product = this.productDetails?.product ? this.productDetails.product : undefined;\n const props = this.props as IBuyboxExtentedProps;\n const defaultMinimumKeyInPrice = 10;\n const defaultMaximumKeyInPrice = 100;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const viewprops: IQuickviewViewProps = {\n ...(this.props as IQuickviewExtentedProps),\n state: this.state,\n productDetails: this.productDetails,\n isModalOpen: this.state.modalOpen!,\n quickView: {\n moduleProps: this.props,\n className: classnames('ms-quickView', className),\n tag: 'div'\n },\n isMobileDevice,\n quickViewButton: (\n \n ),\n ModalContainer: {\n moduleProps: this.props,\n tag: Modal,\n className: 'ms-quickView__dialog',\n isOpen: this.state.modalOpen,\n 'aria-label': format(resources.quickViewAriaLabel, this.productDetails?.product?.Name),\n toggle: this._quickViewCloseButtonclick,\n modalTransition: { timeout: 0 },\n shouldUpdateFocusToFirstElement: this.state.isDataLoaded\n },\n ModalHeaderContainer: {\n tag: ModalHeader,\n className: 'ms-quickView__header',\n toggle: this._quickViewCloseButtonclick\n },\n ModalFooterContainer: {\n tag: ModalFooter,\n className: 'ms-quickView__footer'\n },\n ModalHeaderContent: '',\n ModalBodyContainer: {\n tag: ModalBody,\n className: 'ms-quickView__body'\n },\n cartContainerProps: {\n className: 'ms-quickView__product-add-to-cart'\n },\n ProductInfoContainerProps: {\n className: 'ms-quickView__content'\n },\n MediaGalleryContainerProps: {\n className: 'ms-quickView__media-gallery'\n },\n seeDetailsbutton: this._renderSeeDetailButton(product),\n loading: !this.state.isDataLoaded && (\n \n ),\n callbacks: this.quickViewCallbacks,\n title: this.state.isDataLoaded && getBuyboxProductTitle(props, this.productDetails),\n description: this.state.isDataLoaded && getBuyboxProductDescription(props, this.productDetails),\n configure: this.state.isDataLoaded\n ? getBuyboxProductConfigure(props, this.state, this.quickViewCallbacks, this.productDetails, this.props.selectedDimensions)\n : undefined,\n price: this.state.isDataLoaded && getBuyboxProductPrice(props, this.state),\n unitOfMeasure: this.state.isDataLoaded && getBuyboxProductUnitOfMeasure(props, this.productDetails),\n rating:\n this.state.isDataLoaded && !this.props.context.app.config.hideRating && getBuyboxProductRating(props, this.productDetails),\n addToCart: this.state.isDataLoaded\n ? getBuyboxAddToCart(\n props,\n this.state,\n this.quickViewCallbacks,\n defaultMinimumKeyInPrice,\n defaultMaximumKeyInPrice,\n this.productDetails\n )\n : undefined,\n keyInPrice:\n this.state.isDataLoaded && this.props.config.enableKeyInPrice && this.state.isCustomPriceSelected\n ? getBuyboxKeyInPrice(props, this.state, this.quickViewCallbacks)\n : undefined,\n quantity: product?.IsGiftCard ? undefined : this._renderQuantity(this.props, this.state, this.quickViewCallbacks),\n inventoryLabel: this.state.isDataLoaded && getBuyBoxInventoryLabel(props, this.productDetails),\n addToWishlist: this.state.isDataLoaded\n ? getBuyboxProductAddToWishlist(props, this.state, this.quickViewCallbacks, this.productDetails)\n : undefined,\n quantityLimitsMessages: this.state.isDataLoaded && getQuantityLimitsMessages(props, this.state),\n max,\n CarouselProps: this._renderCarousel(),\n Thumbnails: this._renderThumbnails()\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n\n /**\n * Method to render detail button on quick view.\n * @param product - Simple product object.\n * @returns JSX element.\n */\n private readonly _renderSeeDetailButton = (product: SimpleProduct | undefined): JSX.Element => {\n const { config } = this.props;\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.seeDetails, '');\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n return (\n \n {config.seeDetailsLinkText}\n \n );\n };\n\n /**\n * Method to return carousel.\n * @returns Node props.\n */\n private readonly _renderCarousel = (): INodeProps => {\n const { config, resources } = this.props;\n let mediaGalleryItems: ReactNode[];\n let keys: (string | undefined)[];\n const galleryImageSettings = config.galleryImageSettings;\n if (galleryImageSettings) {\n galleryImageSettings.cropFocalRegion = true;\n }\n\n if (ArrayExtensions.hasElements(this.state.mediaGalleryItems)) {\n mediaGalleryItems = this.state.mediaGalleryItems.map((item: IImageData, index: number) => {\n return this._renderCarouselItemImageView(item, galleryImageSettings || this.defaultGalleryImageSettings, index);\n });\n keys = [...this.state.mediaGalleryItems.map(item => item.src)];\n } else {\n mediaGalleryItems = [this._renderEmptyImage(galleryImageSettings)];\n keys = ['empty'];\n }\n\n const props: IComponentNodeProps = {\n tag: Carousel,\n className: 'ms-media-gallery__carousel',\n items: mediaGalleryItems,\n activeIndex: this.state.activeIndex ?? 0,\n next: this.next,\n previous: this.previous,\n interval: false,\n directionTextPrev: resources.previousScreenshotFlipperText,\n directionTextNext: resources.nextScreenshotFlipperText,\n indicatorAriaText: resources.ariaLabelForSlide,\n onIndicatorsClickHandler: this.goToIndex,\n handleOnExited: this.onExited,\n handleOnExiting: this.onExiting,\n key: keys\n };\n\n return props;\n };\n\n /**\n * Method to render thumbnails.\n * @returns QuickView Thumbnails view props.\n */\n private readonly _renderThumbnails = (): IQuickViewThumbnailsViewProps => {\n const { config, id, resources } = this.props;\n\n const thumbnailImageSettings = config.thumbnailImageSettings;\n if (thumbnailImageSettings) {\n thumbnailImageSettings.cropFocalRegion = true;\n }\n\n let mediaGalleryItems: IQuickViewThumbnailItemViewProps[];\n let keys: (string | undefined)[];\n if (ArrayExtensions.hasElements(this.state.mediaGalleryItems)) {\n mediaGalleryItems = this.state.mediaGalleryItems.map((item: IImageData, index: number) => {\n return this._getThumbnailItem(\n item,\n thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n index,\n this.state.activeIndex!\n );\n });\n keys = [...this.state.mediaGalleryItems.map(item => item.src)];\n } else {\n mediaGalleryItems = [];\n keys = [];\n }\n\n return {\n ThumbnailsContainerProps: { className: 'ms-media-gallery__thumbnails-container' },\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: 'ms-media-gallery__thumbnails',\n flipperPrevLabel: resources.previousScreenshotFlipperText,\n flipperNextLabel: resources.nextScreenshotFlipperText,\n parentId: id,\n useTabList: true,\n key: JSON.stringify(keys)\n } as IComponentNodeProps,\n items: mediaGalleryItems\n };\n };\n\n private _updateMediaItems(lastUpdatedTime: number): void {\n const product = this.productDetails?.product;\n if (!this.state.mediaGalleryItems && product?.PrimaryImageUrl) {\n this.setState({\n mediaGalleryItems: [this._mapProductToImageData(product)],\n lastUpdate: lastUpdatedTime\n });\n }\n }\n\n private _updatePrice(newPrice: ProductPrice | undefined, customPrice: number | undefined = this.state.keyInPriceAmount): void {\n if (this.state.isCustomPriceSelected && newPrice) {\n newPrice.CustomerContextualPrice = customPrice;\n }\n this.setState({ productPrice: newPrice });\n }\n\n private readonly _updateDimensions = async (): Promise => {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n\n const { product, productDimensions } = this.productDetails!;\n\n if (!product || !productDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this.dimensions };\n this.setState({ isUpdatingDimension: true });\n\n // Step 1: Clear error state to display relevant errors\n if (this.state.errorState.otherError || this.state.errorState.quantityError) {\n const clearErrorState = { ...this.state.errorState };\n clearErrorState.otherError = undefined;\n if (this.state.errorState.errorHost === 'ADDTOCART') {\n clearErrorState.quantityError = undefined;\n clearErrorState.errorHost = undefined;\n }\n this.setState({ errorState: clearErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const key of Object.keys(dimensionsToUpdate)) {\n if (this.state.errorState.configureErrors[key]) {\n const errorState = { ...this.state.errorState };\n errorState.configureErrors[key] = undefined;\n\n this.setState({ errorState });\n }\n }\n\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\n // over the information in data\n const mappedDimensions = productDimensions\n .map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, dimensionsToUpdate[dimension.DimensionTypeValue]) || dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension && dimension.DimensionValue;\n });\n\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\n // so that places like add to cart can await it\n const selectedProduct = new Promise(async resolve => {\n const newProduct = await getSelectedVariant(\n new SelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n if (newProduct) {\n // @ts-expect-error\n this.productDetails.productDimensions = await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n newProduct.MasterProductId ? newProduct.MasterProductId : newProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n ),\n actionContext\n );\n }\n\n resolve(newProduct);\n });\n\n this.setState({ selectedProduct });\n const variantProduct = await selectedProduct;\n\n if (variantProduct && this.productDetails) {\n // Step 5. Use these dimensions hydrate the inventory. Wrap this in a promise\n // so that places like add to cart can await it\n this.productDetails.product = variantProduct;\n let images: IImageData[] = await this.getImagesForProduct(product, variantProduct);\n images = this._filterMasterImageFromVariant(images, variantProduct);\n this.setState({\n mediaGalleryItems: [...images],\n activeIndex: 0,\n lastUpdate: Date.now()\n });\n\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\n new ProductAvailabilitiesForSelectedVariantInput(variantProduct.RecordId, channelId),\n actionContext\n );\n\n this.productDetails.productAvailableQuantity = newAvailableQuantity!;\n\n const isCustompriceSelected = variantProduct.Dimensions?.find(\n dimension => dimension.DimensionTypeValue === 4 && dimension.DimensionValue?.Value?.toLowerCase() === 'custom'\n );\n\n if (isCustompriceSelected) {\n this.setState({ isCustomPriceSelected: true });\n } else {\n // Remove custom amount error when unselect the custom amount\n const errorState = { ...this.state.errorState };\n errorState.customAmountError = undefined;\n\n this.setState({ isCustomPriceSelected: false, isPriceKeyedIn: false, errorState });\n }\n\n if (newAvailableQuantity && newAvailableQuantity.length > 0) {\n this.setState({ productAvailableQuantity: newAvailableQuantity[0] });\n } else {\n this.setState({ productAvailableQuantity: undefined });\n }\n\n // Step 6. Use these dimensions hydrate the product price.\n const newPrice = await getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(variantProduct.RecordId, channelId),\n actionContext\n );\n\n if (newPrice) {\n this._updatePrice(newPrice);\n }\n\n const RetailMulitplePickupMFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n );\n\n // Step 7. Use these dimensions hydrate the product delivery options.\n const newDeliveryOptions = await getDeliveryOptionsForSelectedVariant(\n new GetDeliveryOptionsForSelectedVariantInput(\n variantProduct.RecordId,\n channelId,\n undefined,\n undefined,\n RetailMulitplePickupMFeatureState?.IsEnabled\n ),\n actionContext\n );\n\n if (newDeliveryOptions) {\n this.setState({ productDeliveryOptions: newDeliveryOptions });\n }\n\n this.setState({ isUpdatingDimension: false });\n await this._updateQuantitiesInState(variantProduct);\n }\n };\n\n private _getProductURL(product: SimpleProduct | undefined): string {\n if (!product || !msdyn365Commerce.isBrowser) {\n return '';\n }\n\n let productUrl = '';\n productUrl = getProductPageUrlSync(product.Name || '', product.RecordId, this.props.context.actionContext, undefined);\n\n const fullUrl = new URL(productUrl, window.location.href);\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n return fullUrl.href;\n }\n\n private shouldUseCmsAltText = (): boolean => {\n if (this.props.config.altTextSource === 'product') {\n return false;\n } else {\n return true;\n }\n };\n\n private async _updateQuantitiesInState(product: SimpleProduct): Promise {\n const isOrderQuantityLimitsFeatureEnabled = await this._isOrderQuantityLimitsFeatureEnabled();\n const isChannelLimitsFeatureEnabled = await this._isChannelLimitsFeatureEnabled();\n\n const min: number = this._getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n isChannelLimitsFeatureEnabled || isOrderQuantityLimitsFeatureEnabled,\n product\n );\n let quantity: number = this._getQuantity(product, isOrderQuantityLimitsFeatureEnabled);\n quantity = Math.max(quantity, min);\n\n this.setState({\n min,\n max,\n quantity\n });\n }\n\n private _getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isOrderQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MinimumQuantity &&\n product.Behavior.MinimumQuantity > 0\n ) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (\n isQuantityLimitsFeatureEnabled &&\n this._getIgnoreOrderSettings() &&\n product?.Behavior?.MaximumQuantity &&\n product.Behavior.MaximumQuantity > 0\n ) {\n return product.Behavior.MaximumQuantity;\n }\n\n return updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem);\n }\n\n /**\n * Retrieves the value of the IgnoreOrderSettings property from the cart configuration.\n * If the property is not present, it defaults to false.\n * @returns {boolean} The value of the IgnoreOrderSettings property.\n */\n private _getIgnoreOrderSettings(): boolean {\n const cartConfiguration = this.props.data.cartConfiguration;\n return !(cartConfiguration?.result?.IgnoreOrderSettings ?? false);\n }\n\n private _getQuantity(product: SimpleProduct, isOrderQuantityLimitsFeatureEnabled: boolean): number {\n const { quantity } = this.state;\n let defaultQuantity = 1;\n\n if (quantity !== defaultQuantity || !isOrderQuantityLimitsFeatureEnabled) {\n return quantity;\n }\n\n const cartConfiguration = this.props.data.cartConfiguration;\n const applyDefaultOrderSettingsForCartLine = cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false;\n if (!applyDefaultOrderSettingsForCartLine) {\n return quantity;\n }\n\n if (product?.Behavior?.DefaultQuantity && product.Behavior.DefaultQuantity > 0) {\n defaultQuantity = product.Behavior.DefaultQuantity;\n }\n\n return defaultQuantity;\n }\n\n private _filterMasterImageFromVariant(images?: IImageData[], product?: ISelectedProduct | null): IImageData[] {\n const shouldHidePrimaryImages = this.props.config.shouldHideMasterProductImagesForVariant ?? true;\n let variantImages = images ?? [];\n const isVariantProduct =\n !ObjectExtensions.isNullOrUndefined(product?.MasterProductId) || !ObjectExtensions.isNullOrUndefined(product?.productVariant);\n const itemId = product?.ItemId;\n if (shouldHidePrimaryImages && isVariantProduct && itemId) {\n variantImages = variantImages.filter(item => {\n const isApplicableForChildEntities = item.additionalProperties?.isApplicableForChildEntities;\n return !isApplicableForChildEntities;\n });\n if (!ArrayExtensions.hasElements(variantImages)) {\n variantImages = images ?? [];\n }\n }\n return variantImages;\n }\n\n private readonly _updateDimensionValue = (\n productDimensionFull: ProductDimensionFull,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n private readonly _getDropdownName = (dimensionType: number, resources: IQuickviewResources): string => {\n const isGiftCard = this.productDetails?.product?.IsGiftCard;\n\n switch (dimensionType) {\n case 1: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case 2: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case 4: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private async _isOrderQuantityLimitsFeatureEnabled(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName\n )?.IsEnabled;\n if (!isFeatureEnabledInHq) {\n return false;\n }\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === RevertToSiteBuilderOrderQuantityLimitsSettingsCRTFeatureName\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return true;\n }\n let customerInfo;\n try {\n customerInfo = await this.props.data.customerInformation;\n } catch (error) {\n this.props.telemetry.information(error);\n this.props.telemetry.debug('Unable to receive Customer Information. May be user is not authorized');\n return false;\n }\n\n return (\n customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\n );\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n return !(cartConfiguration?.IgnoreOrderSettings ?? false);\n }\n }\n\n private async _isChannelLimitsFeatureEnabled(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelLimitsFeatureEnabledInHq = featureStatuses?.find(\n featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName\n )?.IsEnabled;\n\n return isChannelLimitsFeatureEnabledInHq ?? false;\n }\n\n private readonly onExiting = () => {\n this.setState({ animating: true });\n };\n\n private readonly onExited = () => {\n this.setState({ animating: false });\n };\n\n private readonly next = (): void => {\n if (this.isLastItem() === undefined) {\n return;\n }\n\n const nextIndex = this.isLastItem() ? 0 : this.state.activeIndex! + 1;\n this.goToIndex(nextIndex);\n };\n\n private readonly previous = (): void => {\n const nextIndex = this.isFirstItem()\n ? this.state.mediaGalleryItems\n ? this.state.mediaGalleryItems.length - 1\n : 0\n : this.state.activeIndex! - 1;\n this.goToIndex(nextIndex);\n };\n\n private readonly goToIndex = (index: number): void => {\n this.setState({ activeIndex: index });\n };\n\n private _renderCarouselItemImageView(image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode {\n return <>{this._getCarouselItem(image, imageSettings, index)};\n }\n\n private readonly _getCarouselItem = (image: IImageData, imageSettings: IImageSettings, index: number): React.ReactNode => (\n \n );\n\n private readonly _getThumbnailItem = (\n image: IImageData,\n imageSettings: IImageSettings,\n index: number,\n modifiedActiveIndex: number\n ): IQuickViewThumbnailItemViewProps => {\n const classes = classnames(\n 'ms-media-gallery__thumbnail-item',\n modifiedActiveIndex === index ? 'ms-media-gallery__thumbnail-item-active' : ''\n );\n\n return {\n ThumbnailItemContainerProps: {\n tag: 'li' as NodeTag,\n className: classes,\n role: 'tab',\n tabIndex: 0,\n key: index,\n 'aria-label': image.altText,\n 'aria-selected': modifiedActiveIndex === index,\n 'aria-controls': `${this.props.id}__carousel-item__${index}`,\n onClick: this._generateOnThumbnailClick(index),\n onKeyDown: this._generateOnThumbnailKeyDown(index)\n },\n Picture: (\n \n )\n };\n };\n\n private readonly _generateOnThumbnailKeyDown = (index: number) => {\n return (event: React.KeyboardEvent) => {\n if (event.which === KeyCodes.Enter || event.which === KeyCodes.Space) {\n event.preventDefault();\n this.goToIndex(index);\n }\n };\n };\n\n private readonly _generateOnThumbnailClick = (index: number) => {\n return (event: React.MouseEvent) => {\n event.preventDefault();\n this.goToIndex(index);\n };\n };\n\n private _mapProductToImageData(product: SimpleProduct): IImageData {\n return {\n src: product.PrimaryImageUrl || '',\n altText: product.Name\n };\n }\n\n private readonly isFirstItem = () => this.state.activeIndex === 0;\n\n private readonly isLastItem = () => this.state.mediaGalleryItems && this.state.activeIndex === this.state.mediaGalleryItems.length - 1;\n\n private readonly onClickHandler = async (event: React.MouseEvent) => {\n return this._onClick(event, this.props);\n };\n\n private readonly _onClick = async (_event: React.MouseEvent, props: IQuickviewExtentedProps) => {\n if (!ObjectExtensions.isNullOrUndefined(props.selectedProductId)) {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n\n if (this.props.selectedProductId) {\n this.setState({ modalOpen: true });\n const productId = this.props.selectedProductId;\n const selectedDimensions = this.props.selectedDimensions;\n this.productDetails = await getProductDetails(productId, channelId, actionContext, selectedDimensions);\n const { product, productPrice } = this.productDetails;\n const currentTime: number = Date.now();\n this._updateMediaItems(currentTime);\n if (productPrice) {\n this._updatePrice(productPrice);\n }\n\n if (product) {\n const { context } = this.props;\n if (context.app.config.maxRecentlyViewedItemsCount > 0) {\n RecentlyViewedState.instance(this.props.context, context.app.config.maxRecentlyViewedItemsCount, product.RecordId);\n }\n // Check if the product is service or not by product type\n if (product.ItemTypeValue === ReleasedProductType.Service) {\n this.setState({ isServiceItem: true });\n }\n await this._updateQuantitiesInState(product);\n let images = await this.getImagesForProduct(product, product);\n images = this._filterMasterImageFromVariant(images);\n this.setState({\n mediaGalleryItems: [...images],\n activeIndex: 0,\n lastUpdate: currentTime\n });\n // update product delivery options on product on quickview popUp load\n const newDeliveryOptions = await getDeliveryOptionsAsync(\n {\n callerContext: this.props.context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(\n this.props.context.actionContext\n )\n },\n [this.props.selectedProductId]\n );\n if (newDeliveryOptions && newDeliveryOptions.length > 0) {\n this.setState({ productDeliveryOptions: newDeliveryOptions[0] });\n }\n }\n this.setState({ isDataLoaded: true });\n }\n }\n };\n\n private getImagesForProduct = async (product: ISelectedProduct, variantProduct: ISelectedProduct): Promise => {\n let images: IImageData[];\n if (this.props.context.app?.config?.OmniChannelMedia) {\n images = await getProductImages(\n product.RecordId,\n this.shouldUseCmsAltText(),\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n product.Name,\n product.productVariant ?? variantProduct\n );\n } else {\n images = await getValidProductImages(\n product.RecordId || 0,\n +this.props.context.request.apiSettings.channelId,\n this.props.context.actionContext,\n this.props.config.thumbnailImageSettings ?? this.defaultThumbnailImageSettings,\n product.productVariant ?? variantProduct\n );\n }\n return images;\n };\n\n private readonly _quickViewCloseButtonclick = () => {\n this._hideQuickViewDialog();\n };\n\n private _hideQuickViewDialog(): void {\n this.dimensions = [];\n this.setState({\n modalOpen: false,\n quantity: 1,\n min: undefined,\n max: undefined,\n errorState: {\n configureErrors: {}\n },\n selectedProduct: undefined,\n productPrice: undefined,\n productDeliveryOptions: undefined,\n isUpdatingDimension: false,\n productAvailableQuantity: undefined,\n lastUpdate: undefined,\n activeIndex: undefined,\n animating: undefined,\n mediaGalleryItems: [],\n isDataLoaded: false\n });\n }\n\n /**\n * Quantity Change Handler.\n * @param callbacks -Buybox callbacks.\n * @returns Update quantity.\n */\n private readonly onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\n if (callbacks.updateQuantity) {\n return callbacks.updateQuantity(newValue);\n }\n return true;\n };\n\n private readonly _renderQuantity = (\n props: IQuickviewExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n ): IBuyboxProductQuantityViewProps => {\n const { resources } = props;\n\n const {\n quantity,\n min,\n max,\n errorState: { quantityError }\n } = state;\n\n return {\n ContainerProps: {\n className: 'ms-quickView__quantity'\n },\n LabelContainerProps: {\n tag: 'label',\n className: 'ms-quickView__product-quantity-label',\n htmlFor: 'ms-quickView__product-quantity-input'\n },\n heading:
{resources.productQuantityHeading}
,\n errors: quantityError && (\n \n \n ),\n input: (\n \n )\n };\n };\n\n private _renderEmptyImage(imageSettings: IImageSettings | undefined): React.ReactNode {\n return (\n
\n \n
\n );\n }\n}\nexport default Quickview;\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 { getCartStateData, GetCartStateDataInput } from '@msdyn365-commerce/global-state';\nimport { ProductDimension } from '@msdyn365-commerce/retail-proxy';\nimport {\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getRatingsSummary,\n GetRatingsSummaryInput,\n getRnrEndpointId,\n getRnrPartnerId,\n getSelectedVariant,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IProductDetails } from '../../../common/buyboxInterface';\n\n/**\n * Calls the Retail API and returns the product details.\n * @param productId\n * @param channelId\n * @param ctx\n * @param selectedDimensions - Dimensions previously selected for the product variant.\n */\nexport async function getProductDetails(\n productId: number,\n channelId: number,\n ctx: IActionContext,\n selectedDimensions?: ProductDimension[]\n): Promise {\n const productDetails: IProductDetails = {};\n\n if (productId > 0 && channelId > 0) {\n const tenantId = getRnrPartnerId(ctx);\n const serviceEndPoint = getRnrEndpointId(ctx);\n\n // Get Product Details\n await getSelectedVariant(new SelectedVariantInput(productId, channelId, selectedDimensions, 'get', ctx.requestContext), ctx)\n .then(async productResult => {\n if (productResult) {\n productDetails.product = productResult;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n });\n\n // Get Product Availability\n await getProductAvailabilitiesForSelectedVariant(new ProductAvailabilitiesForSelectedVariantInput(productId, channelId), ctx)\n .then(productAvailabilities => {\n if (productAvailabilities) {\n productDetails.productAvailableQuantity = productAvailabilities;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n });\n\n // Get Product Price\n await getPriceForSelectedVariant(new PriceForSelectedVariantInput(productId, channelId, undefined), ctx)\n .then(productPrice => {\n if (productPrice) {\n productDetails.productPrice = productPrice;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n });\n\n // Get product dimensions\n await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(productId, channelId, selectedDimensions, ctx.requestContext),\n ctx\n )\n .then(productDimensions => {\n if (productDimensions) {\n productDetails.productDimensions = productDimensions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n });\n\n // Get Cart State\n await getCartStateData(new GetCartStateDataInput(ctx.requestContext.apiSettings, ctx.requestContext), ctx)\n .then(cartState => {\n productDetails.cart = cartState;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n });\n\n // Get Product Ratings\n if (tenantId && serviceEndPoint) {\n await getRatingsSummary(new GetRatingsSummaryInput(productId.toString(), tenantId, serviceEndPoint), ctx)\n .then(ratingsSummaryData => {\n if (ratingsSummaryData) {\n productDetails.ratingsSummary = ratingsSummaryData;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n });\n }\n }\n\n return productDetails;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxShopSimilarLookViewProps\n} from '../../common';\nimport { IBuyboxViewProps } from './buybox';\nimport { IBuyboxFindInStoreViewProps } from './components/buybox-find-in-store';\n\nconst BuyboxView: React.FC = props => {\n const {\n ModuleProps,\n MediaGalleryContainerProps,\n ProductInfoContainerProps,\n addToCart,\n addToOrderTemplate,\n addToWishlist,\n configure,\n description,\n findInStore,\n quantity,\n price,\n title,\n rating,\n inventoryLabel,\n shopSimilarLook,\n keyInPrice,\n shopSimilarDescription,\n unitOfMeasure,\n productComparisonButton\n } = props;\n\n return (\n \n {props.mediaGallery}\n \n {title}\n {price}\n {unitOfMeasure}\n {props.bulkPurchaseLink}\n {description}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity)}\n {inventoryLabel}\n {addToCart && _renderAddToCart(addToCart)}\n {findInStore && _renderFindInStore(findInStore)}\n {addToOrderTemplate && _renderAddToOrderTemplate(addToOrderTemplate)}\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\n {_renderSocialShare(props.slots && props.slots.socialShare)}\n {productComparisonButton}\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\n \n \n );\n};\n\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToCart;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderAddToOrderTemplate = (addToOrderTemplate: IBuyboxAddToOrderTemplateViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToOrderTemplate;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToWishlist;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\n if (!socialShare || socialShare.length === 0) {\n return undefined;\n }\n\n return <>{socialShare[0]};\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\n\n return (\n \n {storeSelector}\n {heading}\n {productPickupOptionList}\n {description}\n {errors}\n {button}\n {modal}\n \n );\n};\n\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\n\n return (\n \n \n {heading}\n {errors}\n \n {input}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\n const { ContainerProps, errors, input } = shopSimilarItem;\n\n return (\n \n {errors}\n {input}\n \n );\n};\nexport default BuyboxView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductConfigureDropdownViewProps,\n IBuyboxProductConfigureViewProps,\n IBuyboxProductQuantityViewProps\n} from '../../common';\nimport { IQuickviewViewProps } from './quickview';\n\nconst _renderAddToCart = (addToCart: IBuyboxAddToCartViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToCart;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderAddToWishlist = (addToWishlist: IBuyboxAddToWishlistViewProps): JSX.Element => {\n const { ContainerProps, errorBlock, button } = addToWishlist;\n\n return (\n \n {errorBlock}\n {button}\n \n );\n};\n\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n \n {heading}\n {errors}\n \n {select}\n \n );\n};\n\nconst _renderQuickViewPopup = (props: IQuickviewViewProps): JSX.Element => {\n const {\n ModalContainer,\n ModalHeaderContainer,\n ModalFooterContainer,\n ModalHeaderContent,\n ModalBodyContainer,\n addToWishlist,\n addToCart,\n cartContainerProps\n } = props;\n\n return (\n \n {ModalHeaderContent}\n {_renderBodyContent(props)}\n \n \n {addToCart && _renderAddToCart(addToCart)}\n {addToWishlist && _renderAddToWishlist(addToWishlist)}\n \n \n \n );\n};\n\nconst _renderQuantity = (quantity: IBuyboxProductQuantityViewProps, quantityLimitsMessages: React.ReactNode): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input, errors } = quantity;\n\n return (\n \n \n {heading}\n {errors}\n \n {input}\n {quantityLimitsMessages}\n \n );\n};\n\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\n\n return (\n \n {heading}\n {input}\n \n );\n};\n\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\n const { ContainerProps, dropdowns } = configure;\n\n return {dropdowns.map(_renderConfigureDropdown)};\n};\n\nconst _renderBodyContent = (props: IQuickviewViewProps): JSX.Element => {\n const {\n title,\n price,\n rating,\n keyInPrice,\n quantity,\n configure,\n inventoryLabel,\n quantityLimitsMessages,\n seeDetailsbutton,\n loading,\n ProductInfoContainerProps,\n MediaGalleryContainerProps,\n CarouselProps,\n unitOfMeasure\n } = props;\n if (loading) {\n return <>{loading};\n }\n return (\n <>\n \n \n \n \n {title}\n {price}\n {unitOfMeasure}\n {rating}\n {configure && _renderConfigure(configure)}\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\n {quantity && _renderQuantity(quantity, quantityLimitsMessages)}\n {seeDetailsbutton}\n {inventoryLabel}\n \n \n );\n};\n\n/**\n * Functional component which renders quick view button and popup based by the given props file.\n * @param {IQuickviewViewProps} props - Configuration for the quick view component.\n * @returns {React.FC} - Functional component of the quick view.\n */\nexport const QuickViewFunctionalComponent: React.FC = (props: IQuickviewViewProps) => {\n const { quickView, quickViewButton, isModalOpen, isMobileDevice } = props;\n return (\n \n {!isMobileDevice && quickViewButton}\n {isModalOpen && _renderQuickViewPopup(props)}\n \n );\n};\n\nexport default QuickViewFunctionalComponent;\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { getUrlSync, IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {\r\n};\r\n\r\ninterface ICartIconState {\r\n countChanged: boolean;\r\n}\r\n\r\ninterface ICartLineData{\r\n quantity?: number;\r\n price?: number;\r\n item?: string;\r\n }\r\n\r\n/**\r\n *\r\n * CartIcon component\r\n * @extends {React.FC}\r\n */\r\n@observer\r\nclass CartIcon extends React.Component {\r\n private cartItemCount: string | undefined;\r\n\r\n constructor(props: ICartIconComponentProps) {\r\n super(props);\r\n\r\n this.state = {\r\n countChanged: false\r\n };\r\n }\r\n public render(): JSX.Element {\r\n const { cartLabel, data: { cart } } = this.props;\r\n\r\n if (!cart) {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n const cartLink = getUrlSync('cart', this.props.context.actionContext);\r\n\r\n const cartItem = `${this._getCartLineQuantities(cart.cart)}`;\r\n\r\n const label = format(cartLabel, cartItem) || `Shopping bag, ${cartItem} items`;\r\n\r\n if (!this.state.countChanged && this.cartItemCount && this.cartItemCount < cartItem) {\r\n this.setState({\r\n countChanged: true\r\n });\r\n // tslint:disable-next-line: no-floating-promises\r\n this._resetClass();\r\n }\r\n this.cartItemCount = cartItem;\r\n const hiddenCartLines = this._createHiddenCartLines(cart.cart);\r\n return (\r\n \r\n
\r\n ({cartItem})\r\n
\r\n {hiddenCartLines}\r\n
\r\n );\r\n }\r\n\r\n private _timeout(ms: number): Promise {\r\n // tslint:disable-next-line: no-string-based-set-timeout\r\n return new Promise(res => setTimeout(res, ms));\r\n }\r\n\r\n private async _resetClass(): Promise {\r\n await this._timeout(1500);\r\n this.setState({\r\n countChanged: false\r\n });\r\n return;\r\n }\r\n\r\n private _getCartLineQuantities = (cart: Cart | undefined): string => {\r\n if(!cart) {\r\n return '0';\r\n }\r\n\r\n let quantity = 0;\r\n\r\n if(cart.CartLines && cart.CartLines.length > 0) {\r\n cart.CartLines.forEach(cartLine => {\r\n quantity += cartLine.Quantity || 1;\r\n });\r\n }\r\n\r\n return quantity.toString();\r\n }\r\n\r\n private _createHiddenCartLines = (cart: Cart | undefined): any => {\r\n if (!cart || !cart.CartLines?.length) {\r\n return
;\r\n }\r\n\r\n let cartLines: ICartLineData[] = [];\r\n\r\n cart.CartLines?.forEach(line => {\r\n cartLines.push({\r\n quantity: line.Quantity,\r\n price: line.TotalAmount,\r\n item: line.ItemId\r\n });\r\n });\r\n\r\n return
;\r\n }\r\n}\r\n\r\n// @ts-ignore\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);","\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { INotifyMeProps } from './notify-me.props';\r\nimport { INotifyMeState } from './notify-me.state';\r\n\r\n/**\r\n *\r\n * Notify Me component\r\n */\r\nexport class NotifyMe extends React.Component {\r\n private _firstNameInputRef: React.RefObject;\r\n private _lastNameInputRef: React.RefObject;\r\n private _emailAddressInputRef: React.RefObject;\r\n\r\n private requiredErrorMessage: string | undefined;\r\n private eAValidationErrorMessage: string | undefined;\r\n\r\n private firstNameValue: boolean = false;\r\n private lastNameValue: boolean = false;\r\n private emailAddressValue: boolean = false;\r\n\r\n constructor(props: INotifyMeProps) {\r\n super(props);\r\n this.state = {\r\n fNError: false,\r\n lNError: false,\r\n eAError: false,\r\n eAValError: false,\r\n subscribeChecked: false,\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: ''\r\n };\r\n\r\n this._firstNameInputRef = React.createRef();\r\n this._lastNameInputRef = React.createRef();\r\n this._emailAddressInputRef = React.createRef();\r\n this._handleSend = this._handleSend.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n notifyFormText,\r\n firstNamePlaceholderText,\r\n lastNamePlaceholderText,\r\n emailAddressPlaceholderText,\r\n notifyContactMessage,\r\n notifyContactMessageLink,\r\n sendButtonText\r\n } = this.props;\r\n\r\n return (\r\n
\r\n
\r\n

\r\n {notifyFormText}\r\n

\r\n
\r\n {this.state.fNError ? this._renderAlert('contact-notifyform-firstname') : ''}\r\n \r\n
\r\n
\r\n {this.state.lNError ? this._renderAlert('contact-notifyform-lastname') : ''}\r\n \r\n
\r\n
\r\n {this.state.eAError || this.state.eAValError ? this._renderAlert('contact-notifyform-emailaddress') : ''}\r\n
\r\n
\r\n \r\n {sendButtonText}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n private isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n\r\n private handleChange = (inputText: string) => (e: React.ChangeEvent | React.ChangeEvent ) => {\r\n const value = e.target.value;\r\n switch (inputText) {\r\n case 'firstName': {\r\n this.setState({ firstName: value, reqError: false, fNError: false, lNError: false, eAError: false, eAValError: false });\r\n break;\r\n }\r\n case 'lastName': {\r\n this.setState({ lastName: value, reqError: false, fNError: false, lNError: false, eAError: false, eAValError: false });\r\n break;\r\n }\r\n case 'emailAddress': {\r\n this.setState({ emailAddress: value, reqError: false, fNError: false, lNError: false, eAError: false, eAValError: false });\r\n break;\r\n }\r\n case 'subscribe': {\r\n this.setState(prevState => ({subscribeChecked: !prevState.subscribeChecked }));\r\n break;\r\n }\r\n default: null;\r\n }\r\n }\r\n\r\n private _renderAlert(className: string): JSX.Element {\r\n const inputBoxErrors = (this.state.fNError || this.state.lNError || this.state.eAError);\r\n if (inputBoxErrors) {\r\n this.requiredErrorMessage = this.props.requiredTextErrorMessage;\r\n }\r\n if (this.state.emailAddress !== '' && this.state.eAValError) {\r\n this.eAValidationErrorMessage = this.props.eAValidationErrorMessage;\r\n }\r\n\r\n const reqError = this.state.reqError;\r\n const eAValError = this.state.eAValError;\r\n return (\r\n <>\r\n {reqError && (\r\n \r\n {\r\n this.requiredErrorMessage &&\r\n <>\r\n \r\n )}\r\n {eAValError && (\r\n \r\n {\r\n this.eAValidationErrorMessage &&\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private async _handleSend(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.firstNameValue = (this._firstNameInputRef && this._firstNameInputRef.current && this._firstNameInputRef.current.value) ? true : false;\r\n this.lastNameValue = (this._lastNameInputRef && this._lastNameInputRef.current && this._lastNameInputRef.current.value) ? true : false;\r\n this.emailAddressValue = (this._emailAddressInputRef && this._emailAddressInputRef.current && this._emailAddressInputRef.current.value) ? true : false;\r\n\r\n const fnA = (this._firstNameInputRef && this._firstNameInputRef.current && this._firstNameInputRef.current.value) ? this._firstNameInputRef.current.value : '';\r\n const lnA = (this._lastNameInputRef && this._lastNameInputRef.current && this._lastNameInputRef.current.value) ? this._lastNameInputRef.current.value : '';\r\n const eA = (this._emailAddressInputRef && this._emailAddressInputRef.current && this._emailAddressInputRef.current.value) ? this._emailAddressInputRef.current.value : '';\r\n const eAVal = this._emailAddressInputRef.current!.value;\r\n\r\n const { subscribeChecked } = this.state;\r\n\r\n if (!this.firstNameValue) {\r\n this.setState({\r\n fNError: true,\r\n reqError: true\r\n });\r\n } else if (!this.lastNameValue) {\r\n this.setState({\r\n lNError: true,\r\n reqError: true\r\n });\r\n } else if (!this.emailAddressValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n } else if (!this.isEmailValid(eAVal)) {\r\n this.setState({\r\n eAValError: true\r\n });\r\n } else {\r\n if (this.emailAddressValue && !this.state.eAValError) {\r\n this.props.notifySubmitClicked(fnA, lnA, eA, subscribeChecked);\r\n }\r\n this.setState({\r\n firstName: '',\r\n lastName: '',\r\n emailAddress: '',\r\n subscribeChecked: false\r\n });\r\n }\r\n }\r\n}\r\n","import { IBuyboxData, IBuyboxViewProps } from '@msdyn365-commerce-modules/buybox';\r\n// import * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, getPayloadObject, getTelemetryAttributes, IPopupProps, ITelemetryContent, Modal, ModalBody, ModalHeader, Popup } from '@msdyn365-commerce-modules/utilities';\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, IGridSettings, IImageSettings, TelemetryEvent } from '@msdyn365-commerce/core';\r\nimport { getCartState, ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport {\r\n AttributeValue, ProductAvailableQuantity, ProductDimension, ProductPrice, SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport React from 'react';\r\nimport { NotifyMe } from '../../../../components/citta-notify-me/notify-me';\r\nimport { submitPdpEnquiryFormAction, SubmitPdpEnquiryFormDataActionInput } from '../../../../data-actions/pdp-enquiry/submit-pdp-enquiry-form-data';\r\nimport { IBuyboxProps as IBuyboxExtentionProps } from '../../definition-extensions/buybox.ext.props.autogenerated';\r\n// import Input from 'reactstrap/lib/Input';\r\n\r\n\r\nenum SOH {\r\n stockAvailability = 'StockAvailability',\r\n stockThreshold = 'StockThreshold',\r\n estimatedDate = 'EstimatedDate',\r\n soldOut = 'Sold Out',\r\n comingSoon = 'Coming Soon',\r\n inStock = 'In Stock',\r\n notifyMe = 'NOTIFY ME',\r\n expectedinStock = 'Expected in Stock:',\r\n enquireNow = 'ENQUIRE NOW'\r\n}\r\n\r\nexport interface IAddToCartComponentProps extends IComponentProps<{ product: SimpleProduct; price?: ProductPrice; productDimensions?: ProductDimensionFull[]; productAvailableQuantity: IProductInventoryInformation[] | undefined }> {\r\n className?: string;\r\n addToCartText: string;\r\n outOfStockText: string;\r\n disabled?: boolean;\r\n quantity?: number;\r\n navigationUrl?: string;\r\n productAvailability?: ProductAvailableQuantity;\r\n getSelectedProduct?: Promise;\r\n\r\n imageSettings?: IImageSettings;\r\n gridSettings?: IGridSettings;\r\n props: IBuyboxViewProps & IBuyboxExtentionProps;\r\n isLoading?: boolean;\r\n isUpdatingDimension?: boolean;\r\n\r\n dialogStrings?: {\r\n goToCartText: string;\r\n continueShoppingText: string;\r\n headerItemOneText: string;\r\n headerItemFormatText: string;\r\n headerMessageText: string;\r\n freePriceText: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n };\r\n telemetryContent?: ITelemetryContent;\r\n\r\n onAdd?(result: ICartActionResult): void;\r\n onError?(result: IAddToCartFailureResult): void;\r\n changeUpdatingDimension?(isUpdatingDimension: boolean): void;\r\n}\r\n\r\nexport declare type ICartActionFailureReason = 'EMPTYINPUT' | 'MISSINGDIMENSION' | 'OUTOFSTOCK' | 'CARTACTIONFAILED';\r\nexport interface IAddToCartFailureResult {\r\n failureReason: ICartActionFailureReason;\r\n\r\n stockLeft?: number;\r\n cartActionResult?: ICartActionResult;\r\n missingDimensions?: ProductDimension[];\r\n}\r\n\r\ninterface IAddToCartState {\r\n isOpen: boolean;\r\n responseReceived: boolean;\r\n notifyResponseSuccess: boolean;\r\n name: string;\r\n lastName: string;\r\n emailAddress: string;\r\n phoneNumber: string;\r\n enquiryMessage: string;\r\n storePickerValue: string;\r\n storePickerText: string;\r\n nError: boolean;\r\n lNError: boolean;\r\n eAError: boolean;\r\n pHError: boolean;\r\n reqError: boolean;\r\n eAValError: boolean;\r\n enquiryMessageError: boolean;\r\n cHError: boolean;\r\n nLSError: boolean;\r\n subcribeNewsletterChecked: boolean;\r\n customizationsCheckedItems: string[];\r\n productTypePickerValue: string;\r\n disabled: boolean;\r\n modalOpen: boolean;\r\n isNotifyOpen: boolean;\r\n addToCartButtonText: string;\r\n productsAddedToCart: number[];\r\n}\r\n/**\r\n *\r\n * The AddToCartComponent renders the AddToCartComponent section.\r\n * @extends {React.Component}\r\n */\r\n@observer\r\nclass AddToCartComponent extends React.Component {\r\n private _productAttributeInStoreOnly: string | undefined;\r\n private response: boolean = false;\r\n private _nameInputRef: React.RefObject;\r\n private _lastNameInputRef: React.RefObject;\r\n private _emailAddressInputRef: React.RefObject;\r\n private _phoneNumberInputRef: React.RefObject;\r\n private _enquiryMessageInputRef: React.RefObject;\r\n private _storePickerSelectRef: React.RefObject;\r\n private _productTypePickerSelectRef: React.RefObject;\r\n private requiredErrorMessage: string | undefined;\r\n private eAValidationErrorMessage: string | undefined;\r\n\r\n private nameValue: boolean = false;\r\n private lastNameValue: boolean = false;\r\n private emailAddressValue: boolean = false;\r\n private phoneNumberValue: boolean = false;\r\n private addressMessageValue: boolean = false;\r\n\r\n private formInputValues: boolean = false;\r\n\r\n // ProductDimensionType 1:Color 3:Size refer ProductDimensionType enum in @msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g\r\n private colorProductDimensionTypeValue: number = 1;\r\n private sizeProductDimensionTypeValue: number = 3;\r\n\r\n constructor(props: IAddToCartComponentProps, state: IAddToCartState) {\r\n super(props);\r\n this.state = {\r\n isOpen: false,\r\n responseReceived: false,\r\n notifyResponseSuccess: false,\r\n name: '',\r\n lastName: '',\r\n emailAddress: '',\r\n phoneNumber: '',\r\n enquiryMessage: '',\r\n storePickerValue: '',\r\n storePickerText: 'Città BLOC',\r\n nError: false,\r\n lNError: false,\r\n eAError: false,\r\n pHError: false,\r\n reqError: false,\r\n eAValError: false,\r\n enquiryMessageError: false,\r\n cHError: false,\r\n nLSError: false,\r\n subcribeNewsletterChecked: false,\r\n customizationsCheckedItems: [],\r\n productTypePickerValue: '',\r\n disabled: false,\r\n modalOpen: false,\r\n isNotifyOpen: false,\r\n addToCartButtonText: this.props.addToCartText,//this.props.props.resources.addToCartText || 'Add to Cart', //HSO DS Changed Add to cart text from static to dynamic\r\n productsAddedToCart: []\r\n };\r\n this._productAttributeInStoreOnly = this.props.props.config.inStoreOnlyValue && this.props.props.config.inStoreOnlyValue.toUpperCase() || 'IN STORE ONLY';\r\n\r\n this._nameInputRef = React.createRef();\r\n this._lastNameInputRef = React.createRef();\r\n this._emailAddressInputRef = React.createRef();\r\n this._phoneNumberInputRef = React.createRef();\r\n this._enquiryMessageInputRef = React.createRef();\r\n this._storePickerSelectRef = React.createRef();\r\n this._productTypePickerSelectRef = React.createRef();\r\n this._closeModal = this._closeModal.bind(this);\r\n this._openModal = this._openModal.bind(this);\r\n this._handleSend = this._handleSend.bind(this);\r\n this._onClickHandler = this._onClickHandler.bind(this);\r\n this._onClick = this._onClick.bind(this);\r\n this._propogateResult = this._propogateResult.bind(this);\r\n this._propogateError = this._propogateError.bind(this);\r\n this._getLinkText = this._getLinkText.bind(this);\r\n this._addToCartError = this._addToCartError.bind(this);\r\n this._shouldShowOutOfStock = this._shouldShowOutOfStock.bind(this);\r\n this._isIntermediateState = this._isIntermediateState.bind(this);\r\n this._openNotifyModal = this._openNotifyModal.bind(this);\r\n this._closeNotifyModal = this._closeNotifyModal.bind(this);\r\n this._submitNotify = this._submitNotify.bind(this);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n // @ts-ignore: Compiler not reconizing condition check for function params\r\n reaction(\r\n () => this.props.props.data.product.result ? this.props.props.data.product.result.RecordId : null,\r\n () => {\r\n if (this.props.context && this.props.props.data.product.result) {\r\n const isProductAddedToCartBefore = this.state.productsAddedToCart.indexOf(this.props.props.data.product.result.RecordId) >= 0;\r\n if (isProductAddedToCartBefore) {\r\n this.setState({ addToCartButtonText: this.props.props.resources.addedToCartText || 'Added to Cart' });\r\n } else {\r\n this.setState({ addToCartButtonText: this.props.props.resources.addToCartText || 'Add to Cart' });\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const priceComponent = this.props.data.price ? (\r\n ) : '';\r\n\r\n const popupProps: IPopupProps = {\r\n context: this.props.context,\r\n className: 'msc-add-to-cart',\r\n id: this.props.id,\r\n typeName: this.props.typeName,\r\n data: { product: this.props.data.product, price: this.props.data.price },\r\n dialogStrings: this.props.dialogStrings,\r\n imageSettings: this.props.imageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n productQuantity: this.props.quantity !== undefined ? this.props.quantity : 1,\r\n priceComponent: priceComponent,\r\n navigationUrl: this.props.navigationUrl,\r\n modalOpen: this.state.modalOpen,\r\n setModalOpen: (isModalOpen: boolean): void => {\r\n this.setState({ modalOpen: isModalOpen });\r\n }\r\n };\r\n\r\n const renderModalPopup = ;\r\n const label = this._getLinkText(this.props);\r\n const payload = getPayloadObject(TelemetryEvent.AddToCart, this.props.telemetryContent!, label, '');\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, payload);\r\n const isInStoreOnly = this._getProductAttributes(this._productAttributeInStoreOnly);\r\n\r\n const activateNotifyModal = this.props.props.config.activateNotifyModal;\r\n return (\r\n <>\r\n {renderModalPopup}\r\n {isInStoreOnly ?\r\n \r\n {SOH.enquireNow}\r\n :\r\n \r\n {this._getLinkText(this.props)}\r\n \r\n }\r\n {this._renderEnquiremodal()}\r\n {activateNotifyModal && this._renderNotifyModal()}\r\n \r\n );\r\n }\r\n\r\n private async _onClickHandler(event: React.MouseEvent): Promise {\r\n await this._onClick(event, this.props);\r\n }\r\n\r\n private async _onClick(_event: React.MouseEvent, props: IAddToCartComponentProps): Promise {\r\n const cartError = this._addToCartError(props);\r\n let productToAdd = props.data.product;\r\n\r\n if (cartError) {\r\n this._propogateError(props, cartError);\r\n return;\r\n }\r\n\r\n if (!(props.getSelectedProduct === undefined)) {\r\n productToAdd = (await props.getSelectedProduct) || props.data.product;\r\n }\r\n\r\n const productsAddedToCart = this.state.productsAddedToCart;\r\n const productId = productToAdd && productToAdd.RecordId;\r\n\r\n const cartState = await getCartState(props.context.actionContext);\r\n\r\n\r\n //HSO DS\r\n let productAvailability = props.productAvailability?.AvailableQuantity;\r\n let stockcheck = props.context.app.config.enableStockCheck;\r\n const HSOConfigprop = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'HSOConfig'));\r\n\r\n const HSOConfigpropval = HSOConfigprop && HSOConfigprop.Value && HSOConfigprop.Value.IntegerValue;\r\n let HSOConfig = 0;\r\n if (HSOConfigpropval != undefined) {\r\n HSOConfig = HSOConfigpropval;\r\n }\r\n if (HSOConfig == 1) {\r\n\r\n const StockThresholdprop = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'StockThreshold'));\r\n\r\n const StockThresholdpropval = StockThresholdprop && StockThresholdprop.Value && StockThresholdprop.Value.IntegerValue;\r\n let StockThreshold = 0;\r\n if (StockThresholdpropval != undefined) {\r\n StockThreshold = StockThresholdpropval;\r\n }\r\n\r\n const onhandpropval = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity\r\n let onhand = 0;\r\n if (onhandpropval != undefined) {\r\n onhand = Number(onhandpropval);\r\n }\r\n\r\n const estimatedDateProperty = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'EstimatedDate'));\r\n\r\n const estimatedDateValue = estimatedDateProperty && estimatedDateProperty.Value && estimatedDateProperty.Value.StringValue;\r\n let estimatedDate = \"\";\r\n if (estimatedDateValue == undefined) {\r\n estimatedDate = \"\";\r\n } else {\r\n estimatedDate = estimatedDateValue;\r\n }\r\n\r\n if (StockThreshold != 0 && onhand < StockThreshold && estimatedDate != \"\") {\r\n productAvailability = 1;\r\n stockcheck = false;\r\n }\r\n }\r\n await cartState.addProductToCart({\r\n product: productToAdd, additionalProperties: { orderQuantityLimitsFeatureIsEnabled: true },\r\n count: props.quantity, availableQuantity: productAvailability, enableStockCheck: stockcheck\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n if (props.dialogStrings && props.context.app.config.addToCartBehavior === 'showModal') {\r\n this.setState({\r\n disabled: false,\r\n modalOpen: true\r\n });\r\n }\r\n if (productId) {\r\n productsAddedToCart.push(productId);\r\n }\r\n this.setState({\r\n addToCartButtonText: this.props.addToCartText, //this.props.props.resources.addedToCartText || 'Added to Cart', HSO DS\r\n productsAddedToCart: productsAddedToCart\r\n });\r\n }\r\n });\r\n }\r\n\r\n private _propogateResult(props: IAddToCartComponentProps, result: ICartActionResult): void {\r\n if (props.onAdd) {\r\n props.onAdd(result);\r\n }\r\n }\r\n\r\n private _propogateError(props: IAddToCartComponentProps, result: IAddToCartFailureResult): void {\r\n if (props.onError) {\r\n props.onError(result);\r\n }\r\n }\r\n\r\n private _getLinkText(props: IAddToCartComponentProps): string {\r\n if (props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties) {\r\n const stockAvailabilityProperty = props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === SOH.stockAvailability));\r\n if ((stockAvailabilityProperty && stockAvailabilityProperty.Value?.StringValue === SOH.soldOut) || stockAvailabilityProperty === undefined) {\r\n return props.outOfStockText;\r\n } else if (stockAvailabilityProperty && stockAvailabilityProperty.Value?.StringValue === SOH.comingSoon) {\r\n //HSO DS\r\n\r\n const HSOConfigprop = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'HSOConfig'));\r\n\r\n const HSOConfigpropval = HSOConfigprop && HSOConfigprop.Value && HSOConfigprop.Value.IntegerValue;\r\n let HSOConfig = 0;\r\n if (HSOConfigpropval != undefined) {\r\n HSOConfig = HSOConfigpropval;\r\n }\r\n if (HSOConfig == 1) {\r\n const StockThresholdprop = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'StockThreshold'));\r\n\r\n const StockThresholdpropval = StockThresholdprop && StockThresholdprop.Value && StockThresholdprop.Value.IntegerValue;\r\n let StockThreshold = 0;\r\n if (StockThresholdpropval != undefined) {\r\n StockThreshold = StockThresholdpropval;\r\n }\r\n\r\n const onhandpropval = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity\r\n let onhand = 0;\r\n if (onhandpropval != undefined) {\r\n onhand = Number(onhandpropval);\r\n }\r\n\r\n const estimatedDateProperty = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'EstimatedDate'));\r\n\r\n const estimatedDateValue = estimatedDateProperty && estimatedDateProperty.Value && estimatedDateProperty.Value.StringValue;\r\n let estimatedDate = \"\";\r\n if (estimatedDateValue == undefined) {\r\n estimatedDate = \"\";\r\n } else {\r\n estimatedDate = estimatedDateValue;\r\n }\r\n\r\n if (StockThreshold != 0 && onhand < StockThreshold && estimatedDate != \"\") {\r\n return this.state.addToCartButtonText;\r\n\r\n } else {\r\n return SOH.notifyMe;\r\n }\r\n } else {\r\n return SOH.notifyMe;\r\n }\r\n\r\n } else {\r\n return this.state.addToCartButtonText;\r\n }\r\n }\r\n\r\n if (!this._shouldShowOutOfStock(props, false)) {\r\n return this.state.addToCartButtonText;\r\n }\r\n\r\n return props.outOfStockText;\r\n }\r\n\r\n private _getLinkAriaLabel(props: IAddToCartComponentProps): string {\r\n if (props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties) {\r\n const stockAvailabilityProperty = props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === SOH.stockAvailability));\r\n if ((stockAvailabilityProperty && stockAvailabilityProperty.Value?.StringValue === SOH.soldOut) || stockAvailabilityProperty === undefined) {\r\n return props.outOfStockText;\r\n } else if (stockAvailabilityProperty && stockAvailabilityProperty.Value?.StringValue === SOH.comingSoon) {\r\n return this.state.addToCartButtonText;// return SOH.notifyMe; HSO DS\r\n } else {\r\n return this.state.addToCartButtonText;\r\n }\r\n }\r\n\r\n if (!this._shouldShowOutOfStock(props, false)) {\r\n return this.state.addToCartButtonText;\r\n }\r\n\r\n return props.outOfStockText;\r\n }\r\n\r\n private _addToCartError(props: IAddToCartComponentProps): IAddToCartFailureResult | undefined {\r\n if (!props.data || !props.data.product.RecordId) {\r\n // No product exists, won't be able to add to cart\r\n return { failureReason: 'EMPTYINPUT' };\r\n }\r\n\r\n if (props.data.product.Dimensions) {\r\n const missingDimensions = props.data.product.Dimensions.filter(dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n if (missingDimensions.length > 0) {\r\n // At least one dimension with no value exists on the product, won't be able to add to cart\r\n return { failureReason: 'MISSINGDIMENSION', missingDimensions: missingDimensions };\r\n }\r\n }\r\n\r\n if (this._shouldShowOutOfStock(props, true)) {\r\n const availableQuantity = (props.productAvailability && props.productAvailability.AvailableQuantity) || 0;\r\n const stockLeft = Math.max(availableQuantity, 0);\r\n\r\n return { failureReason: 'OUTOFSTOCK', stockLeft: stockLeft };\r\n }\r\n\r\n // Only allow adding to cart if not showing out of stock\r\n return undefined;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _shouldShowOutOfStock = (props: IAddToCartComponentProps, includeCurrentQuantity: boolean): boolean => {\r\n if (this.props.data.productAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties) {\r\n const stockAvailabilityProperty = this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === SOH.stockAvailability));\r\n return (stockAvailabilityProperty && stockAvailabilityProperty.Value?.StringValue === SOH.soldOut) || stockAvailabilityProperty === undefined;\r\n }\r\n\r\n if (this.props.data.productAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties) {\r\n const stockThresholdProperty = this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === SOH.stockThreshold));\r\n const stockThreshold = stockThresholdProperty && stockThresholdProperty?.Value?.IntegerValue || this.props.context.app.config.outOfStockThreshold;\r\n if (this.props.data.productAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity !== undefined &&\r\n // tslint:disable-next-line: restrict-plus-operands\r\n this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity >= stockThreshold + 1) {\r\n return false;\r\n }\r\n }\r\n\r\n if (props.context.app.config.enableStockCheck === undefined || props.context.app.config.enableStockCheck === false || props.isLoading || props.isUpdatingDimension) {\r\n // Out of stock turn off, don't bother showing out of stock\r\n return false;\r\n }\r\n\r\n if (!props.data || !props.data.product.RecordId) {\r\n // No product exists, don't bother showing out of stock\r\n return false;\r\n }\r\n\r\n if (props.data.product.Dimensions) {\r\n if (props.data.product.Dimensions.find(dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value))) {\r\n // At least one dimension with no value exists on the product, so also don't show out of stock\r\n return false;\r\n }\r\n }\r\n const includedQuantityNumber = includeCurrentQuantity && props.quantity ? props.quantity : 1;\r\n\r\n return (props.productAvailability\r\n && props.productAvailability.AvailableQuantity !== undefined\r\n && props.productAvailability.AvailableQuantity <= includedQuantityNumber || false);\r\n };\r\n\r\n private _isIntermediateState(props: IAddToCartComponentProps): boolean {\r\n if (props.data.product.Dimensions) {\r\n if (props.data.product.Dimensions.find(dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value))) {\r\n // At least one dimension with no value exists on the product, so also not in intermediate state\r\n return false;\r\n }\r\n }\r\n\r\n if (!props.isLoading && !props.isUpdatingDimension) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _renderNotifyModal(): JSX.Element {\r\n const { config, resources } = this.props.props;\r\n const { responseReceived, notifyResponseSuccess } = this.state;\r\n\r\n return (\r\n
\r\n \r\n {config.notifyModalHeader}\r\n\r\n \r\n {responseReceived && notifyResponseSuccess ?\r\n
\r\n
{config.notifyModalSuccessHeader}
\r\n\r\n
{config.notifyModalSuccessMessage}
\r\n
\r\n :\r\n \r\n }\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private _closeNotifyModal(): void {\r\n this.setState(prevState => ({\r\n isNotifyOpen: !prevState.isNotifyOpen,\r\n notifyResponseSuccess: false,\r\n responseReceived: false\r\n }));\r\n }\r\n private _openNotifyModal(): void {\r\n this.setState(prevState => ({\r\n isNotifyOpen: !prevState.isNotifyOpen,\r\n notifyResponseSuccess: false,\r\n responseReceived: false\r\n }));\r\n }\r\n\r\n private async _submitNotify(fName: string, lName: string, email: string, subscribeChecked: boolean): Promise {\r\n const { context } = this.props;\r\n\r\n // @ts-ignore\r\n const market = context.request.channel.ChannelNaturalId;\r\n\r\n const product = this.props.data.product;\r\n\r\n const pID = product.ItemId || '';\r\n // const { config } = this.props.props;\r\n // let response = await MsDyn365.commerceApiRequest(\r\n // this.props.context.request,\r\n // 'PostNotifyMe',\r\n // 'post',\r\n // {\r\n // firstName: fName,\r\n // lastName: lName,\r\n // emailAddress: email,\r\n // optIn: subscribeChecked,\r\n // itemId: pID,\r\n // country: config.notifyCountry,\r\n // emarsysGroupId: config.notifyEmarsysGroup,\r\n // emarsysSkuField: config.notifyEmarsysSkuField\r\n // }\r\n // ) as any;\r\n\r\n // if (response?.data.Result !== 'Error') {\r\n // this.setState({ responseReceived: true, notifyResponseSuccess: true });\r\n // }\r\n\r\n // dont post to AX at the moment\r\n this.formInputValues = (fName && lName && email) ? true : false;\r\n\r\n if (this.formInputValues) {\r\n let productImageUrl = product.PrimaryImageUrl;\r\n let url = window.location.href;\r\n\r\n try {\r\n const price = !isNaN(product.Price) ? product.Price.toFixed(2).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,') : product.Price.toString();\r\n const result = await submitPdpEnquiryFormAction(new SubmitPdpEnquiryFormDataActionInput(fName, lName, email, price, '', pID, 'Notify when back in stock', url, productImageUrl!, product.Name || '', 'Notify when back in stock', market || 'unknown', 0), this.props.context.actionContext);\r\n this.response = result.success;\r\n this.setState({ responseReceived: true, notifyResponseSuccess: true });\r\n } catch {\r\n console.log('Please fill the form!');\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable: max-func-body-length\r\n private _renderEnquiremodal(): JSX.Element {\r\n const { config, resources } = this.props.props;\r\n const cittaStoresList: string = this.props.context.app.config.cittaStoresList || 'Città BLOC,000010|Città Grey Lynn,000012|Città Hamilton,000013|Città Merivale,000016|Città Wellington,000017|Città Wellington Thorndon,000018|Città Newmarket,000041|Città Takapuna,000044';\r\n const cittaStores: string[] = cittaStoresList.split('|');\r\n\r\n const colors = this._getDimensionValues(this.props.data.productDimensions || [], this.colorProductDimensionTypeValue);\r\n const sizes = this._getDimensionValues(this.props.data.productDimensions || [], this.sizeProductDimensionTypeValue);\r\n\r\n //HSO DS\r\n\r\n const HSOConfigprop = this.props.data.productAvailableQuantity\r\n && this.props.data.productAvailableQuantity && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'HSOConfig'));\r\n\r\n const HSOConfigpropval = HSOConfigprop && HSOConfigprop.Value && HSOConfigprop.Value.IntegerValue;\r\n let HSOConfig = 0;\r\n if (HSOConfigpropval != undefined) {\r\n HSOConfig = HSOConfigpropval;\r\n }\r\n return (\r\n
\r\n \r\n {(HSOConfig == 1) ? 'product enquiry' : ( config.modalHeader || 'enquire in-store')}\r\n \r\n
\r\n {this.state.responseReceived && this.response\r\n ?
\r\n

{resources.responseSuccessMessage}

\r\n
: null}\r\n {this.state.responseReceived && !this.response ?
\r\n

{resources.responseErrorMessage}

\r\n
: null}\r\n {!this.state.responseReceived ?
\r\n
\r\n
\r\n
\r\n {this.state.nError ? this._renderAlert('contact-form-name') : ''}\r\n
\r\n
\r\n {this.state.lNError ? this._renderAlert('contact-form-name') : ''}\r\n
\r\n
\r\n {this.state.eAError || this.state.eAValError ? this._renderAlert('contact-form-emailaddress') : ''}\r\n
\r\n
\r\n {this.state.pHError ? this._renderAlert('contact-form-phonenumber') : ''}\r\n
\r\n {sizes && (\r\n
\r\n \r\n
\r\n {\r\n sizes.map((size, index) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })\r\n }\r\n
\r\n {this.state.cHError ? this._renderAlert('contact-form-customizations') : ''}\r\n
\r\n )}\r\n {colors && (\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n {this.state.enquiryMessageError ? this._renderAlert('enquire-form-message') : ''}\r\n
\r\n
\r\n \r\n {resources.enquireSendButtonText}\r\n \r\n\r\n {(HSOConfig == 1) ? null : Store Locations}\r\n
\r\n
\r\n : null}\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n private handleChange = (inputText: string) => (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n switch (inputText) {\r\n case 'nameInput': {\r\n this.setState({ name: value, reqError: false, nError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'lastNameInput': {\r\n this.setState({ lastName: value, reqError: false, lNError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'emailAddress': {\r\n this.setState({ emailAddress: value, reqError: false, eAError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'phoneNumber': {\r\n this.setState({ phoneNumber: value, reqError: false, pHError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'subsNwsltr': {\r\n this.setState({ subcribeNewsletterChecked: true, reqError: false, pHError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n default: null;\r\n }\r\n }\r\n\r\n private handleMessageChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n this.setState({ enquiryMessage: value, reqError: false, eAValError: false, nLSError: false });\r\n }\r\n\r\n private productTypeOnChangeSelect = (e: React.ChangeEvent) => {\r\n this.setState({ productTypePickerValue: e.target.value || '' });\r\n };\r\n\r\n private customizationOnChange = (value: string) => (e: React.ChangeEvent) => {\r\n const isChecked = e.target.checked;\r\n let customizationsCheckedItems = this.state.customizationsCheckedItems;\r\n if (isChecked) {\r\n customizationsCheckedItems.push(value);\r\n } else {\r\n customizationsCheckedItems = customizationsCheckedItems.filter(item => item !== value);\r\n }\r\n this.setState({ customizationsCheckedItems: customizationsCheckedItems, cHError: false });\r\n }\r\n\r\n private onChangeSelect = (e: React.ChangeEvent) => {\r\n const text = e.target.options[e.target.options.selectedIndex].textContent;\r\n this.setState({ storePickerValue: e.target.value || '', storePickerText: text || '' });\r\n };\r\n\r\n private _closeModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n private _openModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen,\r\n responseReceived: false\r\n }));\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private async _handleSend(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n //HSO DS\r\n\r\n const HSOConfigprop = this.props.data.productAvailableQuantity\r\n && this.props.data.productAvailableQuantity && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties\r\n && this.props.data.productAvailableQuantity[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'HSOConfig'));\r\n \r\n const HSOConfigpropval = HSOConfigprop && HSOConfigprop.Value && HSOConfigprop.Value.IntegerValue;\r\n let HSOConfig = 0;\r\n if (HSOConfigpropval != undefined) {\r\n HSOConfig = HSOConfigpropval;\r\n }\r\n this.nameValue = (this._nameInputRef && this._nameInputRef.current && this._nameInputRef.current.value) ? true : false;\r\n this.lastNameValue = (this._lastNameInputRef && this._lastNameInputRef.current && this._lastNameInputRef.current.value) ? true : false;\r\n this.emailAddressValue = (this._emailAddressInputRef && this._emailAddressInputRef.current && this._emailAddressInputRef.current.value) ? true : false;\r\n this.phoneNumberValue = (this._phoneNumberInputRef && this._phoneNumberInputRef.current && this._phoneNumberInputRef.current.value) ? true : false;\r\n this.addressMessageValue = (this._enquiryMessageInputRef && this._enquiryMessageInputRef.current && this._enquiryMessageInputRef.current.value) ? true : false;\r\n\r\n const sP = (HSOConfig == 1) ? 'Città B2B' : this.state.storePickerText;\r\n const nA = (this._nameInputRef && this._nameInputRef.current && this._nameInputRef.current.value) ? this._nameInputRef.current.value : '';\r\n const lN = (this._lastNameInputRef && this._lastNameInputRef.current && this._lastNameInputRef.current.value) ? this._lastNameInputRef.current.value : '';\r\n const eA = (this._emailAddressInputRef && this._emailAddressInputRef.current && this._emailAddressInputRef.current.value) ? this._emailAddressInputRef.current.value : '';\r\n const pN = (this._phoneNumberInputRef && this._phoneNumberInputRef.current && this._phoneNumberInputRef.current.value) ? this._phoneNumberInputRef.current.value : '';\r\n const pT = (this._productTypePickerSelectRef && this._productTypePickerSelectRef.current && this._productTypePickerSelectRef.current.value) ? this._productTypePickerSelectRef.current.value : '';\r\n const eM = (this._enquiryMessageInputRef && this._enquiryMessageInputRef.current && this._enquiryMessageInputRef.current.value) ? this._enquiryMessageInputRef.current.value : '';\r\n const cU = this.state.customizationsCheckedItems.toString();\r\n const cI = this._storePickerSelectRef.current!.value;\r\n const eAVal = this._emailAddressInputRef.current!.value;\r\n const pID = this.props.data.product.ItemId || '';\r\n const sN = this.state.subcribeNewsletterChecked ? 1 : 0;\r\n\r\n if (!this.nameValue) {\r\n this.setState({\r\n nError: true,\r\n reqError: true\r\n });\r\n } else if (!this.lastNameValue) {\r\n this.setState({\r\n lNError: true,\r\n reqError: true\r\n });\r\n } else if (!this.emailAddressValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n } else if (!this.isEmailValid(eAVal)) {\r\n this.setState({\r\n eAValError: true\r\n });\r\n } else if (!this.phoneNumberValue) {\r\n this.setState({\r\n pHError: true,\r\n reqError: true\r\n });\r\n } else if (this.state.customizationsCheckedItems.length < 1) {\r\n this.setState({\r\n cHError: true,\r\n reqError: true\r\n });\r\n } else if (!this.addressMessageValue) {\r\n this.setState({\r\n enquiryMessageError: true,\r\n reqError: true\r\n });\r\n } else {\r\n this.formInputValues = (this.nameValue && this.lastNameValue && this.emailAddressValue && this.phoneNumberValue && this.addressMessageValue) ? true : false;\r\n\r\n if (this.formInputValues && !this.state.eAValError) {\r\n try {\r\n const result = await submitPdpEnquiryFormAction(new SubmitPdpEnquiryFormDataActionInput(nA, lN, eA, pN, sP, pID, eM, cU, pT, '', 'Enquire in Store', cI, sN), this.props.context.actionContext);\r\n this.response = result.success;\r\n this.setState({ responseReceived: true });\r\n } catch {\r\n console.log('Please fill the form!');\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n\r\n private _renderAlert(className: string): JSX.Element {\r\n const inputBoxErrors = (this.state.nError || this.state.lNError || this.state.eAError || this.state.pHError || this.state.cHError || this.state.enquiryMessageError);\r\n if (inputBoxErrors) {\r\n this.requiredErrorMessage = this.props.props.resources.requiredTextErrorMessage;\r\n }\r\n if (this.state.emailAddress !== '' && this.state.eAValError) {\r\n this.eAValidationErrorMessage = this.props.props.resources.eAValidationErrorMessage;\r\n }\r\n\r\n const reqError = this.state.reqError;\r\n const eAValError = this.state.eAValError;\r\n return (\r\n <>\r\n {reqError && (\r\n \r\n {\r\n this.requiredErrorMessage &&\r\n <>\r\n \r\n )}\r\n {eAValError && (\r\n \r\n {\r\n this.eAValidationErrorMessage &&\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private _getProductAttributes = (key: string | undefined): boolean => {\r\n // @ts-ignore\r\n const prodAttributes: AttributeValue[] | undefined = this.props && this.props.data && this.props.props.data && this.props.props.data.productAttributes.result;\r\n if (prodAttributes && prodAttributes.length) {\r\n const filterAttributes = prodAttributes.filter(\r\n attribute => attribute.Name && attribute.Name.toUpperCase() === key\r\n );\r\n if (\r\n filterAttributes &&\r\n filterAttributes.length) {\r\n filterAttributes[0].Name?.toUpperCase() === key ? true : false;\r\n return filterAttributes[0].BooleanValue || false;\r\n }\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n private _getDimensionValues = (dimensions: ProductDimensionFull[], dimensionTypeValue: number): string[] => {\r\n if (dimensions && dimensionTypeValue) {\r\n const dimensionTypeValues: ProductDimensionFull[] = dimensions.filter(dimension => dimension.DimensionTypeValue === dimensionTypeValue);\r\n // tslint:disable-next-line: prefer-const\r\n let values: string[] = [];\r\n if (dimensionTypeValues) {\r\n dimensionTypeValues && dimensionTypeValues.forEach(elements => {\r\n elements.DimensionValues && elements.DimensionValues.forEach(value => {\r\n values.push(value.Value || '');\r\n });\r\n });\r\n return values;\r\n }\r\n }\r\n return [];\r\n }\r\n}\r\n\r\nexport default AddToCartComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n /**\n * Handle click on the store selector.\n * @returns : Promise void.\n */\n public handleClick = () => {\n return this._findPreferredStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\n const storeName =\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\n ? storeSelectorStateManager.preferredStore.StoreName\n : resources.headerPreferredStoreText;\n\n return (\n
\n \n {storeName}\n \n {slots.storeSelector}\n
\n );\n }\n\n return undefined;\n }\n\n private async _findPreferredStoreOnClick(props: IHeaderProps): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n modules\n } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n await storeSelectorStateManager\n .openDialog({\n id: storeSelectorId,\n showMapViewLink: true,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n });\n }\n}\n\nexport default HeaderPreferredStore;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return
{this._renderLogo(this.props)}
;\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return this._renderImage(config);\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalHeader,\n onTelemetryClick,\n Popover,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n switchCustomerLink?: React.ReactNode;\n isOBORequest?: boolean;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n currentDistributor?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n private isB2BSite: boolean = false;\n\n /**\n * The signed-in user name displayed in the header bar\n */\n @computed public get displayName(): Readonly {\n return (\n (MsDyn365.isOboRequest(this.props.context.request) ? this.workerName : this.customerName) ||\n this.props.context.request?.user?.name\n );\n }\n\n /**\n * OBO scenario. The name of worker who shops on behalf of customer.\n */\n @computed public get workerName(): Readonly {\n const worker = this.props.data.employee?.result;\n return worker?.Name;\n }\n\n @computed public get customerName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n if (MsDyn365.isOboRequest(this.props.context.request)) {\n // For OBO scenario, display full customer name because multiple customers may have the same first name.\n return customer ? customer.Name : undefined;\n } else {\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n }\n\n public constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isB2BSite = isChannelTypeB2B(this.props.context.request);\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => {\n this.props.data.cart.result;\n },\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: { user }\n },\n resources: {\n signUpCustomerNotFoundTitle,\n signUpMultipleCustomerFoundTitle,\n signInCustomerNotAuthorizedTitle,\n closeNotificationLabel\n }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(\n user,\n signUpMultipleCustomerFoundTitle,\n signUpCustomerNotFoundTitle,\n signInCustomerNotAuthorizedTitle\n );\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation, wishlists },\n context: {\n request: { user }\n },\n context,\n resources: { cartLabel, cartQtyLabel }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n const currentDistributorSlot = this._getSlot('distributorSelector');\n if (wishlists !== undefined) {\n if (\n !wishlists.result ||\n !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines ||\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\n ) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...this.state,\n logo: (\n \n ),\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\n cartIconSlot[0]\n ) : (\n \n ),\n navIcon: (\n \n ),\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n 'aria-label': this.props.resources.headerAriaLabel,\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: ,\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: this.displayName\n ? {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n }\n : undefined,\n signInLink: this._getSigninButton(user, this.props.resources),\n signOutLink: this._getSignOutButton(user, this.props.resources),\n isOBORequest: MsDyn365.isOboRequest(this.props.context.request),\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && ,\n currentDistributor: this.isB2BSite && ArrayExtensions.hasElements(currentDistributorSlot) ? currentDistributorSlot : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - Link Index.\n * @returns : Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.myAccountLinks?.[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Get the slot.\n * @param slotName - Name of the slot.\n * @returns The slot.\n */\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n /**\n * Renders the sign in button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n !this.displayName && (\n \n \n {resources.signInLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSwitchCustomerButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const isOBOAccountSelected =\n MsDyn365.isOboRequest(this.props.context.request) && this.props.context.request.cookies.getAccountSelectionCookie();\n return (\n this.displayName &&\n isOBOAccountSelected && (\n this.props.context.request.cookies.removeAccountSelectionCookie()}\n {...attributes}\n >\n
\n
{format(resources.shoppingAsText, this.customerName)}
\n
{resources.switchCustomerLinkText}
\n
\n \n )\n );\n }\n\n private getBusinessPartnerSelectionUrl(): string | undefined {\n const route = MsDyn365.getUrlSync('businessPartnerSelection', this.props.context.actionContext);\n if (!route || !MsDyn365.msdyn365Commerce.isBrowser) {\n return undefined;\n }\n\n // MsDyn365.getUrlSync persists some params in the route and remove other params.\n // Among the persisted params, we need to remove catalogid.\n const persistedParamToRemove = ['catalogid'];\n const url = new URL(route, window.location.href);\n persistedParamToRemove.forEach(param => url.searchParams.delete(param));\n return url.href;\n }\n\n private _getSigninNotification(\n user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string,\n signUpCustomerNotFoundTitle: string,\n signInCustomerNotAuthorizedTitle: string\n ): string | undefined {\n if (!user?.retailServerErrorCode) {\n return undefined;\n }\n\n const { signUpCustomerNotFound, signUpMultipleCustomerFound, signInCustomerNotAuthorized } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n const accountAuthorizationError = 'Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n } else if (user?.retailServerErrorCode === accountAuthorizationError) {\n return signInCustomerNotAuthorized !== undefined ? signInCustomerNotAuthorized : signInCustomerNotAuthorizedTitle;\n }\n return user?.retailServerErrorMessage;\n }\n\n private _getAccountInfoDropdownButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n
\n
{this.displayName}
\n {MsDyn365.isOboRequest(this.props.context.request) && this.customerName && (\n
{format(resources.shoppingAsText, this.customerName)}
\n )}\n
\n \n )\n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(event: KeyboardEvent): void {\n if (event.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { IPriceComponentResources, ProductComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getCatalogId, getUrlSync, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n DimensionAvailabilitiesForProductSearchResultInput,\n DimensionTypes,\n DimensionSwatchDisplayTypes,\n getDimensionAvailabilitiesForProductSearchResultAction,\n getPriceForProductSearchResult,\n IDimensionsApp,\n ObjectExtensions,\n PriceForProductSearchResultInput,\n ProductPriceForSelectedProductsInput,\n validateCatalogId,\n getProductPriceForSelectedProducts\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductCollectionData } from './product-collection.data';\nimport { IProductCollectionProps, layout } from './product-collection.props.autogenerated';\n\nexport interface IProductCollectionViewProps extends IProductCollectionProps {\n heading?: React.ReactNode;\n ProductCollectionContainer: IModuleProps;\n SingleSlideCarouselComponentProps: INodeProps;\n GridComponentProps: INodeProps;\n products: IProductComponentViewProps[];\n isCarousel: boolean;\n productPrices?: ProductPrice[];\n seeAllButton?: React.ReactNode;\n}\n\nexport interface IProductComponentViewProps {\n ProductContainer: INodeProps;\n productComponent: React.ReactNode;\n}\nexport interface IProductComponentState {\n products: ProductSearchResult[];\n productPrices: ProductPrice[];\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\n}\n\n/**\n * ProductCollection component.\n */\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly productPrices: ProductPrice[];\n\n constructor(props: IProductCollectionProps) {\n super(props);\n this.productPrices = [];\n this.state = {\n products: this.props.config.productCollection.products || [],\n productPrices: this.productPrices || []\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n if (this.props.config.enableAffiliationBasedPricing && this.props.context.actionContext.requestContext.user.isAuthenticated) {\n await this._getActivePrice();\n }\n }\n\n public render(): JSX.Element | null {\n const { heading, className, shouldDisplaySeeAllButton } = this.props.config;\n const { resources } = this.props;\n const recommendation = this.props.config.productCollection.recommendationListId;\n const discountIds = this.props.config.productCollection.discountIds;\n\n // Initialize state in case if the products were not found during initial module render\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data if not there.\n this.initProductState(this.props.config.productCollection);\n\n const products = this.state.products;\n const productPrices = this.state.productPrices;\n\n const isCarousel = this.props.config.layout === layout.carousel;\n const headingLabel = heading ? heading.text : '';\n const headingComponent = heading && (\n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- product check for safety.\n const updatedProducts = products?.map((item: ProductSearchResult, index: number) => {\n const getProductData = this._getProduct(\n item,\n index,\n productPrices ? productPrices.find(p => p.ProductId === item.RecordId) : undefined\n );\n return !ObjectExtensions.isNullOrUndefined(getProductData) ? getProductData : undefined;\n });\n\n const productCollectionViewProps = {\n ...this.props,\n heading: headingComponent,\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: '',\n flipperPrevLabel: `${headingLabel} ${resources.flipperPrevious}`,\n flipperNextLabel: `${headingLabel} ${resources.flipperNext}`,\n parentId: this.props.id,\n telemetryContent: this.telemetryContent\n } as IComponentNodeProps,\n ProductCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-product-collection', className)\n },\n GridComponentProps: {\n tag: 'ul' as NodeTag,\n className: 'ms-product-collection__items'\n },\n isCarousel,\n\n products:\n ArrayExtensions.hasElements(updatedProducts) &&\n updatedProducts.filter(item => {\n return item !== undefined;\n }),\n productPrices: this.productPrices,\n seeAllButton:\n (recommendation || discountIds) &&\n shouldDisplaySeeAllButton &&\n (ArrayExtensions.hasElements(updatedProducts) || this.props.config.productCollection.listType === 'promotional')\n ? this._getSeeAllButton(headingLabel, recommendation, discountIds)\n : undefined,\n resources: resources\n };\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * Get products dimension availabilities.\n * @param products - Products.\n * @returns Promise.\n */\n private readonly _getProductsDimensionsAvailabilities = async (products: ProductSearchResult[]): Promise => {\n const context = this.props.context as ICoreContext;\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n const validProducts = ArrayExtensions.validValues(products);\n if (\n ArrayExtensions.hasElements(validProducts) &&\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none)\n ) {\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\n new DimensionAvailabilitiesForProductSearchResultInput(\n validProducts,\n this.props.context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n ),\n this.props.context.actionContext\n );\n\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n this.setState({ productsDimensionAvailabilities });\n }\n }\n };\n\n /**\n * Helper method to initialize products state.\n * @param productCollection - List of products.\n */\n private readonly initProductState = async (productCollection: Msdyn365.IProductList) => {\n let products = this.state.products;\n let productPrices = this.state.productPrices;\n const productCollectionProducts = productCollection.products;\n if (!ArrayExtensions.hasElements(products) && ArrayExtensions.hasElements(productCollectionProducts)) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (\n ArrayExtensions.hasElements(products) &&\n ArrayExtensions.hasElements(productCollectionProducts) &&\n !ArrayExtensions.equals(products, productCollectionProducts)\n ) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (productCollectionProducts === undefined && ArrayExtensions.hasElements(this.state.products)) {\n products = [];\n this.setState({ products: products });\n }\n\n if (Msdyn365.msdyn365Commerce.isBrowser && !ArrayExtensions.hasElements(this.state.productsDimensionAvailabilities)) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n if (this.props.config.productCollection.listType === 'promotional') {\n productPrices = await getProductPriceForSelectedProducts(\n new ProductPriceForSelectedProductsInput(products.filter(p => !p.IsMasterProduct).map(p => p.RecordId)),\n this.props.context.actionContext\n );\n\n this.setState({ productPrices: productPrices });\n }\n };\n\n private readonly _getProduct = (\n product: ProductSearchResult,\n index: number,\n productPrice?: ProductPrice\n ): IProductComponentViewProps | null => {\n if (!product || !product.Name) {\n this.props.telemetry.trace('[product-collection] Product or product name is null');\n return null;\n }\n const telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const { imageSettings, allowBackNavigation } = this.props.config;\n const resources = this.props.resources;\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\n const quickviewSlot =\n this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\n const productComparisonButtonSlot = ArrayExtensions.hasElements(this.props.slots.productComparisonButton)\n ? this.props.slots.productComparisonButton[0]\n : null;\n\n const reviewCount = 1;\n const reviewTotalRatings = Number(product.TotalRatings);\n const reviewCountAriaLabelValue =\n reviewTotalRatings > reviewCount ? resources.ratingCountAriaLabel : resources.ratingCountAriaLabelSingleUser;\n const isPriceMinMaxEnabled = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n return {\n ProductContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-product-collection__item',\n role: 'listitem',\n key: index\n },\n productComponent: (\n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === (product.MasterProductId ?? product.RecordId)\n )}\n />\n )\n };\n };\n\n /**\n * Get the active price for products.\n */\n private readonly _getActivePrice = async (): Promise => {\n const productsList = this.state.products;\n const products = await getPriceForProductSearchResult(\n new PriceForProductSearchResultInput(productsList),\n this.props.context.actionContext\n );\n if (Msdyn365.msdyn365Commerce.isBrowser) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n this.setState({ products });\n };\n\n /**\n * Get the see all button.\n * @param headingLabel - Heading label.\n * @param recommendation - Recommendation.\n * @param discountIds - Discount Ids.\n * @returns IProductComponentSeeAllViewProps - Product component see all view props.\n */\n private readonly _getSeeAllButton = (headingLabel: string, recommendation?: string, discountIds?: string[]): React.ReactNode => {\n if (!Msdyn365.msdyn365Commerce.isBrowser) {\n return null;\n }\n\n if (!recommendation && !discountIds) {\n return null;\n }\n\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const searchPageLink = getUrlSync('search', this.props.context.actionContext);\n if (!searchPageLink) {\n return null;\n }\n\n const url = new URL(searchPageLink, window.location.href);\n\n if (discountIds) {\n // see all button for promotion page\n url.searchParams.set('discountIds', discountIds.toString());\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n } else if (recommendation) {\n // See all button for recommendation\n url.searchParams.set('recommendation', recommendation);\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n }\n\n return (\n \n {this.props.resources.seeAllButtonText}\n \n );\n };\n}\n\nexport default ProductCollection;\n","/* tslint:disable */\r\nimport { parseSearchData } from './input-data-parser';\r\nexport const wrapInResolvedAsyncResult = (input: any) => {\r\n return {\r\n status: 'SUCCESS',\r\n result: input,\r\n metadata: {}\r\n };\r\n};\r\nexport const wrapInRejectedAsyncResult = (input: any) => {\r\n return {\r\n status: 'FAILED',\r\n result: input,\r\n metadata: {}\r\n };\r\n};\r\nexport const buildQueryResultSettings = (inputData: any) => {\r\n try {\r\n const searchInputData = parseSearchData(inputData);\r\n const search = searchInputData.q;\r\n if (!search) {\r\n throw new Error('Query string ?q={searchText} is needed for search actions.');\r\n }\r\n const top = (searchInputData.maxItems && Number(searchInputData.maxItems)) || searchInputData.top;\r\n return { Paging: { Top: top, Skip: searchInputData.skip } };\r\n }\r\n catch (e) {\r\n return {};\r\n }\r\n};\r\n/**\r\n * Utility function to extract the active productId in the following priority:\r\n * First query param (productId), then UrlToken (itemId), then module config\r\n * @param inputData The Action Input data\r\n */\r\nexport const getSelectedProductIdFromActionInput = (inputData: any) => {\r\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.productId) {\r\n return inputData.requestContext.query.productId;\r\n }\r\n else if (inputData && inputData.requestContext && inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.itemId) {\r\n return inputData.requestContext.urlTokens.itemId;\r\n }\r\n else if (inputData && inputData.config && inputData.config.productId) {\r\n return inputData.config.productId;\r\n }\r\n return undefined;\r\n};\r\n/**\r\n * Generates a Image URL based on data return from retail server\r\n * @param imageUrl The image url returned by Retail Server\r\n * @param ctx The request context\r\n */\r\nexport const generateImageUrl = (imageUrl: any, apiSettings: any) => {\r\n if (imageUrl) {\r\n // Images hosted in CMS include schema\r\n if (imageUrl.startsWith('http')) {\r\n return imageUrl;\r\n }\r\n // Images hosted in Retail Server must be encoded and joined with the base image url\r\n return apiSettings.baseImageUrl + encodeURIComponent(imageUrl);\r\n }\r\n else {\r\n // d365Commerce.telemetry.warning(`Unable to generate a proper Image URL for Product: ${product.RecordId}`);\r\n return undefined;\r\n }\r\n};\r\n/**\r\n *\r\n * Generates a Image URL for a product based on data return from retail server\r\n * @param product The Product returned by Retail Server\r\n * @param ctx The request context\r\n */\r\nexport const generateProductImageUrl = (product: any, apiSettings: any) => {\r\n return generateImageUrl(product.PrimaryImageUrl, apiSettings);\r\n};\r\n/**\r\n * Creates a CartLine object from the passed data\r\n * @param product The product\r\n * @param quantity The quantity\r\n * @param catalogId The catalog\r\n */\r\nexport const buildCartLine = (product: any, quantity: any, catalogId: any) => {\r\n return {\r\n CatalogId: catalogId || 0,\r\n Description: product.Description,\r\n // TODO: Investigate this value and what it represents\r\n EntryMethodTypeValue: 3,\r\n ItemId: product.ItemId,\r\n ProductId: product.RecordId,\r\n Quantity: quantity || 1,\r\n TrackingId: '',\r\n UnitOfMeasureSymbol: product.DefaultUnitOfMeasure\r\n };\r\n};\r\n/**\r\n * Creates a CommerceListLine (also know as WishlistLine) object from the passed data\r\n * @param productId The RecordId of the Product to be added\r\n * @param customerId The account number of the customer\r\n * @param wishlistId The Id of the commerce list\r\n */\r\nexport const buildWishlistLine = (productId: any, customerId: any, wishlistId: any) => {\r\n return {\r\n CommerceListId: wishlistId,\r\n ProductId: productId,\r\n CustomerId: customerId\r\n };\r\n};\r\n/**\r\n * Utility function to prepare the product details criteria before getting full product:\r\n * @param inputData The Action Input data\r\n */\r\nexport const getProductDetailsCriteriaFromActionInput = (inputData: any) => {\r\n if (inputData && inputData.config) {\r\n return {\r\n getPrice: !inputData.config.hidePrice,\r\n getRating: !inputData.config.hideRating\r\n };\r\n }\r\n return {\r\n getPrice: true,\r\n getRating: true\r\n };\r\n};\r\n/**\r\n * Transforms search text into the expected 'search terms' format, expected by refiner APIs.\r\n * @param searchText free-form text used for searching for products or categories of products\r\n */\r\nexport const ensureSearchTextIsFormedProperly = (searchText: any) => {\r\n const prefix = searchText.startsWith(`'`) ? '' : `'`;\r\n const suffix = searchText.endsWith(`'`) ? '' : `'`;\r\n return `${prefix}${searchText}${suffix}`;\r\n};\r\nexport const ensureSafeSearchText = (searchText: any) => {\r\n return searchText.replace(/[^0-9a-zA-Z\\s]+/g, '');\r\n};\r\nexport const buildCacheKey = (base: any, apiSettings: any, locale: any) => {\r\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}${locale ? `-${locale}` : ''}`;\r\n};\r\nexport const buildCacheKeyWithUrlTokens = (base: any, requestContext: any) => {\r\n const urlTokens = requestContext.urlTokens;\r\n const defaultCacheKey = buildCacheKey(base, requestContext.apiSettings, requestContext.locale);\r\n return urlTokens\r\n ? `${defaultCacheKey}-${urlTokens.itemId}-${urlTokens.recordId}-${urlTokens.pageType}`\r\n : defaultCacheKey;\r\n};\r\nexport const generateKey = (args: any, options: any) => {\r\n // @ts-ignore\r\n const { handler, separator } = { ...{ separator: '-', handler: undefined }, ...(options || {}) };\r\n return args\r\n .map((arg: any) => {\r\n if (arg === null || arg === undefined) {\r\n if (handler) {\r\n return handler(arg);\r\n }\r\n }\r\n return arg;\r\n })\r\n .join(separator);\r\n};\r\n/**\r\n * Gets the fall back image url for a variant image.\r\n * @param itemId Item id of a product.\r\n * @param apiSettings Api setting from request context.\r\n */\r\nexport const getFallbackImageUrl = (itemId: any, apiSettings: any) => {\r\n if (!itemId) {\r\n return '';\r\n }\r\n const productUrl = `Products/${itemId}_000_001.png`;\r\n return generateImageUrl(productUrl, apiSettings);\r\n};\r\n//# sourceMappingURL=utils.js.map","/*--------------------------------------------------------------\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 { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { BypassCache } from '@msdyn365-commerce/retail-proxy';\r\nimport { getByIdAsync, getVariantsByDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { generateProductImageUrl, getSelectedProductIdFromActionInput } from './utilities/utils';\r\n\r\n/**\r\n * Get selected variant action input class.\r\n */\r\nexport class SelectedVariantInput implements IActionInput {\r\n public productId: number;\r\n\r\n public channelId: number;\r\n\r\n public matchingDimensionValues: ProductDimension[];\r\n\r\n public bypassCache? : BypassCache;\r\n \r\n\r\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[], bypassCache? : any) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.matchingDimensionValues = matchingDimensionValues || [];\r\n this.bypassCache = bypassCache;\r\n }\r\n\r\n public getCacheKey = () => 'SelectedVariant';\r\n\r\n public getCacheObjectType = () => 'SimpleProduct';\r\n\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * CreateInput method for the getSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method.\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n\r\n if (productId) {\r\n return new SelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\r\n }\r\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\r\n\r\n};\r\n\r\n/**\r\n * Action method for the getSelectedVariant data aciton.\r\n * @param input The action input class.\r\n * @param ctx The action context.\r\n */\r\nasync function getSelectedVariantAction(input: SelectedVariantInput, ctx: IActionContext): Promise {\r\n let product: SimpleProduct | null = null;\r\n\r\n const response = await getByIdAsync({ callerContext: ctx, bypassCache: input.bypassCache }, input.productId, input.channelId);\r\n\r\n const baseProduct: SimpleProduct = Array.isArray(response) ? response[0] : response;\r\n\r\n // Need to dereference this before editing it. Otherwise we might not\r\n // properly get the mobx events because if things aren't properly observable\r\n // they won't fire when you set them, and then if you don't deref the value in\r\n // the cache will match the value when you try to save it, so it won't detect any\r\n // changes there either\r\n product = { ...baseProduct };\r\n\r\n if (product) {\r\n let baseProductHadUnmatchedDimension: boolean = false;\r\n if (product.Dimensions) {\r\n product.Dimensions.map(dimension => {\r\n const matchedTargetDimension = input.matchingDimensionValues.find(\r\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\r\n );\r\n\r\n if (matchedTargetDimension) {\r\n dimension.DimensionValue = matchedTargetDimension.DimensionValue;\r\n } else {\r\n baseProductHadUnmatchedDimension = true;\r\n }\r\n });\r\n }\r\n\r\n if (!baseProductHadUnmatchedDimension && input.matchingDimensionValues.length > 0) {\r\n const variants = await getVariantsByDimensionValuesAsync(\r\n { callerContext: ctx, bypassCache: input.bypassCache, queryResultSettings: {} },\r\n baseProduct.RecordId,\r\n input.channelId,\r\n input.matchingDimensionValues\r\n );\r\n\r\n if (variants && variants.length > 0) {\r\n product = variants[0];\r\n }\r\n }\r\n\r\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\r\n\r\n if (newImageUrl) {\r\n product.PrimaryImageUrl = newImageUrl;\r\n }\r\n }\r\n\r\n return product;\r\n}\r\n\r\n/**\r\n * The complete getSelectedVariant data action.\r\n */\r\nexport const getSelectedVariantActionDataAction = createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-selected-variant-v29',\r\n action: >getSelectedVariantAction,\r\n input: createInput\r\n});\r\n\r\nexport default getSelectedVariantActionDataAction;\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\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n AddToCartBehavior,\r\n IAddToCartFailureResult,\r\n IAddToCartResources,\r\n ItemSuccessfullyAddedToCartNotification,\r\n PriceComponent\r\n} from '@msdyn365-commerce/components';\r\nimport { getUrlSync, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport { DeliveryOption, FeatureState, OrgUnitLocation, ProductAvailableQuantity, ProductDimension } from '@msdyn365-commerce/retail-proxy';\r\nimport { NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\nimport {\r\n ArrayExtensions,\r\n DeliveryMode,\r\n IProductInventoryInformation,\r\n isAggregatedInventory\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getTelemetryObject, Heading, INodeProps, IPopupProps, Popup } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { BuyboxErrorBlock } from '@msdyn365-commerce-modules/buybox';\r\nimport { IBuyboxCallbacks, IBuyboxState } from '@msdyn365-commerce-modules/buybox';\r\nimport { getConfigureErrors, getGenericError } from '@msdyn365-commerce-modules/buybox';\r\nimport { ICittaBuyboxData } from '../citta-buybox.data';\r\nimport { ICittaBuyboxProps, ICittaBuyboxResources } from '../citta-buybox.props.autogenerated';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * FindinStore failure Interface.\r\n */\r\nexport interface IFindInStoreFailureResult {\r\n missingDimensions?: ProductDimension[];\r\n}\r\n\r\n/**\r\n * BuyBoxFindinStore View Props Interface.\r\n */\r\nexport interface IBuyboxFindInStoreViewProps {\r\n storeSelector?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n description?: React.ReactNode;\r\n errors?: React.ReactNode;\r\n button?: React.ReactNode;\r\n productPickupOptionList?: React.ReactNode;\r\n\r\n modal?: React.ReactNode;\r\n\r\n ContainerProps: INodeProps;\r\n\r\n openFindInStoreDialog(): Promise;\r\n}\r\n\r\n/**\r\n * On click find store handler.\r\n * @param props -Buybox data.\r\n * @param state -Buybox state.\r\n * @param callbacks -Buybox callbacks.\r\n * @returns Find in store.\r\n */\r\nconst onClickFindInStoreHandler = (props: ICittaBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks) => async () => {\r\n await findInStoreOnClick(props, state, callbacks);\r\n};\r\n\r\n/**\r\n * Inventory settings based on the inventory policy for aggregated availability.\r\n */\r\ninterface IInventorySettingsProps {\r\n isSectionDisabled: boolean;\r\n description: string;\r\n buttonText: string;\r\n}\r\n\r\n/**\r\n * The function defines the settings values for a given inventory configuration.\r\n * @param context - The context.\r\n * @param isStockCheck - Flag to enable inventory validation.\r\n * @param productAvailability - The product inventory information.\r\n * @param buyboxResources - The buybox string resources.\r\n * @param isLoading - Is loading.\r\n * @returns Boolean.\r\n */\r\nfunction getFindInStoreInventorySettings(\r\n context: ICoreContext,\r\n isStockCheck: boolean,\r\n productAvailability: IProductInventoryInformation[] | undefined,\r\n buyboxResources: ICittaBuyboxResources,\r\n isLoading?: boolean\r\n): IInventorySettingsProps {\r\n // If shouldValidateAggregation is true then is required to check for the product inventory, based on this the messaging will change\r\n // and the find in store button will be ensbled or disabled\r\n\r\n let isSectionDisabled: boolean;\r\n let buttonText;\r\n let description: string;\r\n\r\n let pickupInventory: IProductInventoryInformation | undefined;\r\n\r\n if (!isStockCheck || isLoading) {\r\n return {\r\n isSectionDisabled: false,\r\n buttonText: buyboxResources.findInStoreLinkText,\r\n description: buyboxResources.findInStoreDescriptionText\r\n };\r\n }\r\n\r\n if (productAvailability) {\r\n pickupInventory = productAvailability.find(pickup => pickup.deliveryType === DeliveryMode.pickup);\r\n }\r\n\r\n // If aggregated is enabled, then we need to validate the inventor check for find in store.\r\n // If an individual is selected, then we will always show a find in store button.\r\n if (isAggregatedInventory(context.actionContext)) {\r\n if (productAvailability && pickupInventory?.IsProductAvailable) {\r\n isSectionDisabled = false;\r\n buttonText = buyboxResources.findInStoreLinkText;\r\n description = buyboxResources.findInStoreDescriptionText;\r\n } else {\r\n isSectionDisabled = true;\r\n buttonText = buyboxResources.findInStoreNotAvailableTextButton;\r\n description = buyboxResources.findInStoreNotAvailableDescription;\r\n }\r\n } else {\r\n isSectionDisabled = false;\r\n buttonText = buyboxResources.findInStoreLinkText;\r\n description = buyboxResources.findInStoreDescriptionText;\r\n }\r\n\r\n return {\r\n isSectionDisabled,\r\n description,\r\n buttonText\r\n };\r\n}\r\n\r\n/**\r\n * Method to check if we have atleast one common delivery code between product and channel.\r\n * @param productdeliveryOptions - Product DeliveryOption List.\r\n * @param storePickUpOptionList - Channel DeliveryOption List.\r\n * @returns Boolean flag.\r\n */\r\nconst matchDeliveryOptions = (\r\n productdeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: string[] | undefined\r\n): boolean => {\r\n const deliveryOption: string[] = [];\r\n productdeliveryOptions?.map(delivery => {\r\n const pickup = storePickUpOptionList?.find(deliveryCode => deliveryCode === delivery.Code);\r\n if (pickup) {\r\n deliveryOption.push(pickup);\r\n }\r\n return deliveryOption;\r\n });\r\n\r\n return ArrayExtensions.hasElements(deliveryOption);\r\n};\r\n\r\nexport function getBuyboxFindInStore(\r\n props: ICittaBuyboxProps,\r\n state: IBuyboxState,\r\n callbacks: IBuyboxCallbacks\r\n): IBuyboxFindInStoreViewProps | undefined {\r\n const {\r\n data,\r\n slots: { storeSelector },\r\n resources: {\r\n priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n findInStoreHeaderText,\r\n buyBoxGoToCartText,\r\n buyBoxContinueShoppingText,\r\n closeNotificationLabel,\r\n buyBoxSingleItemText,\r\n buyBoxMultiLineItemFormatText,\r\n buyBoxHeaderMessageText,\r\n descriptionTextToShowAllPickupOptions\r\n },\r\n context: {\r\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\r\n }\r\n } = props;\r\n\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const product = data?.product?.result;\r\n const price = data?.productPrice?.result;\r\n const cart = data?.cart?.result;\r\n const deliveryOptions = data?.deliveryOptions?.result;\r\n const productAvailability = data.productAvailableQuantity?.result;\r\n const retailMulitplePickupMFeatureState = data?.featureState?.result?.find(\r\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n const channelDeliveryOptionConfig = data?.channelDeliveryOptionConfig?.result;\r\n\r\n const missingDimensions = product?.Dimensions?.filter(dimension => !dimension.DimensionValue?.Value);\r\n\r\n const {\r\n errorState: { configureErrors, quantityError, otherError, errorHost },\r\n modalOpen,\r\n quantity\r\n } = state;\r\n\r\n const { isSectionDisabled, buttonText, description } = getFindInStoreInventorySettings(\r\n props.context,\r\n props.context.app.config.enableStockCheck,\r\n productAvailability,\r\n props.resources,\r\n props.data.productAvailableQuantity.status === 'LOADING' || ArrayExtensions.hasElements(missingDimensions)\r\n );\r\n\r\n if (!product || !ArrayExtensions.hasElements(storeSelector)) {\r\n return undefined;\r\n }\r\n\r\n if (!deliveryOptions || !deliveryOptions.DeliveryOptions) {\r\n return undefined;\r\n }\r\n\r\n // If no delivery options present on the product, or none of the delivery options\r\n // match the PickupDeliveryModeCode, that means the item cannot be used for BOPIS\r\n if (retailMulitplePickupMFeatureState && channelDeliveryOptionConfig) {\r\n if (!matchDeliveryOptions(deliveryOptions.DeliveryOptions, channelDeliveryOptionConfig?.PickupDeliveryModeCodes)) {\r\n return undefined;\r\n }\r\n } else if (\r\n !PickupDeliveryModeCode ||\r\n !deliveryOptions.DeliveryOptions.find((option: DeliveryOption) => option.Code === PickupDeliveryModeCode)\r\n ) {\r\n return undefined;\r\n }\r\n\r\n const dialogStrings = {\r\n goToCartText: buyBoxGoToCartText,\r\n continueShoppingText: buyBoxContinueShoppingText,\r\n closeNotificationLabel,\r\n headerItemOneText: buyBoxSingleItemText,\r\n headerItemFormatText: buyBoxMultiLineItemFormatText,\r\n headerMessageText: buyBoxHeaderMessageText,\r\n freePriceText: priceFree,\r\n originalPriceText,\r\n currentPriceText\r\n };\r\n\r\n const priceComponent = price ? (\r\n \r\n ) : (\r\n ''\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 popupProps: IPopupProps = {\r\n context: props.context,\r\n className: 'ms-buybox',\r\n id: props.id,\r\n typeName: props.typeName,\r\n data: { product: props.data.product?.result, price: props.data.productPrice?.result },\r\n dialogStrings,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: props.context.request.gridSettings,\r\n productQuantity: quantity,\r\n priceComponent,\r\n navigationUrl: getUrlSync('cart', props.context.actionContext),\r\n modalOpen,\r\n setModalOpen: callbacks.changeModalOpen\r\n };\r\n const renderModalPopup = ;\r\n\r\n return {\r\n ContainerProps: {\r\n className: 'ms-buybox__find-in-store'\r\n },\r\n\r\n storeSelector: storeSelector[0],\r\n\r\n openFindInStoreDialog: onClickFindInStoreHandler(props, state, callbacks),\r\n\r\n heading: ,\r\n\r\n description:

{description}

,\r\n productPickupOptionList:\r\n retailMulitplePickupMFeatureState && !isSectionDisabled ? (\r\n <>\r\n

{descriptionTextToShowAllPickupOptions}

\r\n
    \r\n {deliveryOptions.DeliveryOptions.map((item: DeliveryOption) => {\r\n return (\r\n
  • \r\n {item.Description}\r\n
  • \r\n );\r\n })}\r\n
\r\n \r\n ) : null,\r\n errors: (\r\n \r\n ),\r\n\r\n button: (\r\n \r\n {buttonText}\r\n \r\n ),\r\n\r\n modal: renderModalPopup\r\n };\r\n}\r\n\r\n/**\r\n * Handler for find in store button.\r\n * @param props - BuyBox data.\r\n * @param state - BuyBox state.\r\n * @param callbacks - BuyBox callbacks.\r\n * @returns - Promise.\r\n */\r\nasync function findInStoreOnClick(props: ICittaBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n cart: { result: cart },\r\n productAvailableQuantity: { result: productAvailableQuantity }\r\n },\r\n resources,\r\n context,\r\n modules\r\n } = props;\r\n\r\n const { selectedProduct, quantity } = state;\r\n\r\n let dataProduct = props.data.product.result;\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n const retailMulitplePickupMFeatureState = props.data?.featureState?.result?.find(\r\n (featureState: FeatureState) => featureState.Name === multiplePickupStoreSwitchName\r\n )?.IsEnabled;\r\n\r\n if (selectedProduct) {\r\n dataProduct = (await selectedProduct) || dataProduct;\r\n }\r\n\r\n if (!dataProduct || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const product = dataProduct;\r\n\r\n const missingDimensions =\r\n product.Dimensions &&\r\n product.Dimensions.filter((dimension: ProductDimension) => !(dimension.DimensionValue && dimension.DimensionValue.Value));\r\n\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n\r\n if (missingDimensions && missingDimensions.length > 0) {\r\n if (callbacks.updateErrorState) {\r\n callbacks.updateErrorState({\r\n errorHost: 'FINDINSTORE',\r\n configureErrors: getConfigureErrors(missingDimensions, resources)\r\n });\r\n }\r\n } else {\r\n storeSelectorStateManager\r\n .openDialog({\r\n product,\r\n id: storeSelectorId,\r\n parentElementRef: modalCloseButtonReference,\r\n deliveryOptions: retailMulitplePickupMFeatureState ? props.data.deliveryOptions.result : undefined,\r\n onLocationSelected: async (orgUnitLocation: OrgUnitLocation, deliveryMode: string) => {\r\n if (!cart) {\r\n return Promise.resolve();\r\n }\r\n\r\n const behavior = props.context?.app?.config?.addToCartBehavior;\r\n\r\n return cart\r\n .addProductToCart({ product, count: quantity, location: orgUnitLocation, deliveryMode })\r\n .then((result: ICartActionResult) => {\r\n if (result.status === 'FAILED' && result.substatus === 'MAXQUANTITY') {\r\n callbacks.changeModalOpen(false);\r\n let productAvailability: ProductAvailableQuantity | undefined;\r\n if (state.productAvailableQuantity) {\r\n productAvailability = state.productAvailableQuantity.ProductAvailableQuantity;\r\n } else if (productAvailableQuantity && ArrayExtensions.hasElements(productAvailableQuantity)) {\r\n const shippingInventory = productAvailableQuantity.find(\r\n shipping => shipping.deliveryType === DeliveryMode.pickup\r\n );\r\n productAvailability = shippingInventory?.ProductAvailableQuantity;\r\n } else {\r\n productAvailability = undefined;\r\n }\r\n const failureResult: IAddToCartFailureResult = {\r\n failureReason: 'CARTACTIONFAILED',\r\n cartActionResult: { status: result.status, substatus: result.substatus }\r\n };\r\n callbacks.updateErrorState({\r\n errorHost: 'ADDTOCART',\r\n configureErrors: {},\r\n otherError: getGenericError(\r\n failureResult,\r\n cart,\r\n resources,\r\n context,\r\n product,\r\n productAvailability,\r\n orgUnitLocation\r\n )\r\n });\r\n } else {\r\n callbacks.updateErrorState({\r\n configureErrors: {}\r\n });\r\n const navigationUrl = getUrlSync('cart', context.actionContext);\r\n if (behavior === undefined || behavior === AddToCartBehavior.goToCart) {\r\n if (result.status === 'SUCCESS' && navigationUrl) {\r\n window.location.assign(navigationUrl);\r\n }\r\n } else if (behavior === AddToCartBehavior.showModal) {\r\n callbacks.changeModalOpen(true);\r\n } else if (behavior === AddToCartBehavior.showNotification) {\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 const telemetryContent = getTelemetryObject(\r\n props.context.request.telemetryPageName!,\r\n props.friendlyName,\r\n props.telemetry\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 const notification = new ItemSuccessfullyAddedToCartNotification(\r\n props.context,\r\n dialogStrings,\r\n defaultImageSettings,\r\n props.context.request.gridSettings,\r\n product,\r\n props.data.productPrice?.result,\r\n quantity,\r\n navigationUrl,\r\n telemetryContent,\r\n props.id,\r\n props.typeName\r\n );\r\n NotificationsManager.instance().addNotification(notification);\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.exception(error);\r\n props.telemetry.debug('Unable to add product to cart');\r\n }\r\n });\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.error(error.message);\r\n props.telemetry.debug('Unable to find in store');\r\n }\r\n });\r\n }\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\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { getCatalogId, ICoreContext, msdyn365Commerce } from '@msdyn365-commerce/core-internal';\r\nimport {\r\n ProductDeliveryOptions,\r\n ProductDimensionValue,\r\n ProductDimensionValueInventoryAvailability,\r\n ProductPrice,\r\n ReleasedProductType,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { BulkPurchase } from '@msdyn365-commerce-modules/bulk-purchase';\r\nimport {\r\n ArrayExtensions,\r\n DeliveryMode,\r\n FinitePromiseQueue,\r\n FinitePromiseQueueError,\r\n getDeliveryOptionsForSelectedVariant,\r\n GetDeliveryOptionsForSelectedVariantInput,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getInventoryLevelCodeFromDimensionValue,\r\n getPriceForSelectedVariant,\r\n getProductAvailabilitiesForSelectedVariant,\r\n IDimensionsApp,\r\n InventoryLevelValues,\r\n IProductInventoryInformation,\r\n IPromiseQueue,\r\n PriceForSelectedVariantInput,\r\n ProductAvailabilitiesForSelectedVariantInput,\r\n SelectedVariantInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nimport getSelectedVariantV29 from '../../actions/get-selected-variant-v29'\r\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n getBuyboxAddToCart,\r\n getBuyBoxInventoryLabel,\r\n getBuyboxKeyInPrice,\r\n getBuyboxProductAddToOrderTemplate,\r\n getBuyboxProductAddToWishlist,\r\n getBuyboxProductComparisonButton,\r\n getBuyboxProductDescription,\r\n getBuyboxProductPrice,\r\n getBuyboxProductQuantity,\r\n getBuyboxProductRating,\r\n getBuyboxProductTitle,\r\n getBuyboxProductUnitOfMeasure,\r\n getBuyboxShopSimilarButton,\r\n getQuantityLimitsMessages,\r\n RetailDefaultOrderQuantityLimitsFeatureName\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { getBuyboxProductConfigure } from '@msdyn365-commerce-modules/buybox';\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxCommonData,\r\n IBuyboxExtentedProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IErrorState,\r\n ShopSimiliarButtonType\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { ICittaBuyboxData } from './citta-buybox.data';\r\nimport { ICittaBuyboxProps, ICittaBuyboxResources } from './citta-buybox.props.autogenerated';\r\nimport { getBuyboxFindInStore, IBuyboxFindInStoreViewProps } from './components/citta-buybox-find-in-store';\r\n\r\nexport interface IBuyboxViewProps extends ICittaBuyboxProps {\r\n state: IBuyboxState;\r\n ModuleProps: IModuleProps;\r\n ProductInfoContainerProps: INodeProps;\r\n MediaGalleryContainerProps: INodeProps;\r\n callbacks: IBuyboxCallbacks;\r\n mediaGallery?: React.ReactNode;\r\n title?: React.ReactNode;\r\n description?: React.ReactNode;\r\n rating?: React.ReactNode;\r\n price?: React.ReactNode;\r\n productComparisonButton?: React.ReactNode;\r\n bulkPurchaseLink?: React.ReactNode;\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps;\r\n addToWishlist?: IBuyboxAddToWishlistViewProps;\r\n max: number | undefined;\r\n addToCart: IBuyboxAddToCartViewProps;\r\n findInStore?: IBuyboxFindInStoreViewProps;\r\n quantity?: IBuyboxProductQuantityViewProps;\r\n configure?: IBuyboxProductConfigureViewProps;\r\n inventoryLabel?: React.ReactNode;\r\n stock?:React.ReactNode;\r\n shopSimilarLook?: IBuyboxShopSimilarLookViewProps;\r\n shopSimilarDescription?: IBuyboxShopSimilarLookViewProps;\r\n quantityLimitsMessages: React.ReactNode;\r\n telemetryContent?: ITelemetryContent;\r\n keyInPrice?: IBuyboxKeyInPriceViewProps;\r\n unitOfMeasure?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Buybox Module.\r\n */\r\nclass Buybox extends React.PureComponent, IBuyboxState> {\r\n /**\r\n * A queue of tasks of processing the changes in the dimensions.\r\n * Limit to two processes:\r\n * 1 - for the current process, which is under execution at the moment.\r\n * 2 - next process, which will process the latest version of data.\r\n * @remark Enqueueing new promises will discard the previous ones (except the one which is under processing).\r\n */\r\n private readonly dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(2);\r\n\r\n private dimensions: { [id: number]: string } = {};\r\n\r\n private readonly buyboxCallbacks: IBuyboxCallbacks = {\r\n updateQuantity: (newQuantity: number): boolean => {\r\n const errorState = { ...this.state.errorState };\r\n errorState.quantityError = undefined;\r\n errorState.otherError = undefined;\r\n\r\n this.setState({ quantity: newQuantity, errorState });\r\n return true;\r\n },\r\n updateErrorState: (newErrorState: IErrorState): void => {\r\n this.setState({ errorState: newErrorState });\r\n },\r\n updateSelectedProduct: (\r\n newSelectedProduct: Promise,\r\n newInventory: IProductInventoryInformation | undefined,\r\n newPrice: ProductPrice | undefined,\r\n newDeliveryOptions: ProductDeliveryOptions | undefined\r\n ): void => {\r\n this.setState({\r\n selectedProduct: newSelectedProduct,\r\n productAvailableQuantity: newInventory,\r\n productDeliveryOptions: newDeliveryOptions\r\n });\r\n this._updatePrice(newPrice);\r\n },\r\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\r\n this.dimensions[selectedDimensionId] = selectedDimensionValueId;\r\n return this.dimensionUpdateQueue\r\n .enqueue(async () => {\r\n return this._updateDimensions();\r\n })\r\n .catch((error: unknown) => {\r\n // Ignore discarded processes.\r\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\r\n throw error;\r\n }\r\n });\r\n },\r\n getDropdownName: (dimensionType: number, resources: ICittaBuyboxResources): string => {\r\n return this._getDropdownName(dimensionType, resources);\r\n },\r\n changeModalOpen: (isModalOpen: boolean): void => {\r\n this.setState({ modalOpen: isModalOpen });\r\n },\r\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\r\n this.setState({ isUpdatingDimension });\r\n },\r\n\r\n /**\r\n * Update isUpdatingDeliveryOptions state.\r\n *\r\n * @param isUpdatingDeliveryOptions - The status of updating delivery options.\r\n */\r\n changeUpdatingDeliveryOptions: (isUpdatingDeliveryOptions: boolean): void => {\r\n this.setState({ isUpdatingDeliveryOptions });\r\n },\r\n\r\n updateKeyInPrice: (customPrice: number): void => {\r\n // Remove custom amount error when updating the custom price\r\n const errorState = { ...this.state.errorState };\r\n errorState.customAmountError = undefined;\r\n\r\n this.setState({ isPriceKeyedIn: true, keyInPriceAmount: customPrice, errorState });\r\n this._updatePrice(this.state.productPrice, customPrice);\r\n }\r\n };\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n public constructor(props: ICittaBuyboxProps, state: IBuyboxState) {\r\n super(props);\r\n const isB2B = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n const eoqCount = isB2B ? props.data?.product?.result?.Behavior?.MultipleOfQuantity : 1;\r\n this.state = {\r\n errorState: {\r\n configureErrors: {}\r\n },\r\n quantity: eoqCount || 1,\r\n min: undefined,\r\n max: undefined,\r\n selectedProduct: undefined,\r\n productPrice: undefined,\r\n productDeliveryOptions: undefined,\r\n\r\n modalOpen: false,\r\n isUpdatingDimension: false,\r\n isUpdatingDeliveryOptions: false\r\n };\r\n this.telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n const {\r\n data: {\r\n product: { result: product },\r\n productPrice\r\n }\r\n } = this.props;\r\n\r\n productPrice.then(async result => {\r\n this._updatePrice(result);\r\n });\r\n\r\n if (product) {\r\n // Check if the product is service or not by product type\r\n if (product.ItemTypeValue === ReleasedProductType.Service) {\r\n this.setState({ isServiceItem: true });\r\n }\r\n await this._updateQuantitiesInState(product);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n slots: { mediaGallery, productComparisonButton },\r\n data: {\r\n product: { result: product }\r\n },\r\n config: { className = '' }\r\n } = this.props;\r\n\r\n const { max } = this.state;\r\n\r\n if (!product) {\r\n this.props.context.telemetry.error('Product content is empty, module wont render');\r\n return null;\r\n }\r\n\r\n const props = this.props as IBuyboxExtentedProps;\r\n const defaultMinimumKeyInPrice = 10;\r\n const defaultMaximumKeyInPrice = 100;\r\n\r\n const context = this.props.context as ICoreContext;\r\n const inventoryLevel = context.app.config.inventoryLevel;\r\n const dimensionValuesWithInventory = ArrayExtensions.flatten(\r\n ArrayExtensions.validValues(this.props.data.productDimensions.result?.map(value => value.dimensionValuesWithInventory))\r\n );\r\n const hasAvailableProducts =\r\n !ArrayExtensions.hasElements(dimensionValuesWithInventory) ||\r\n dimensionValuesWithInventory.some((value: unknown) => {\r\n const inventoryLevelCode = getInventoryLevelCodeFromDimensionValue(\r\n value as ProductDimensionValueInventoryAvailability,\r\n inventoryLevel\r\n );\r\n return inventoryLevelCode !== InventoryLevelValues.outOfStock;\r\n });\r\n\r\n const viewProps: IBuyboxViewProps = {\r\n ...(this.props as ICittaBuyboxProps),\r\n state: this.state,\r\n mediaGallery: mediaGallery && mediaGallery.length > 0 ? mediaGallery[0] : undefined,\r\n ModuleProps: {\r\n moduleProps: this.props,\r\n className: classnames('ms-buybox', className)\r\n },\r\n ProductInfoContainerProps: {\r\n className: 'ms-buybox__content'\r\n },\r\n MediaGalleryContainerProps: {\r\n className: 'ms-buybox__media-gallery'\r\n },\r\n telemetryContent: this.telemetryContent,\r\n callbacks: this.buyboxCallbacks,\r\n title: getBuyboxProductTitle(props),\r\n description: getBuyboxProductDescription(props),\r\n bulkPurchaseLink: this._renderBuyboxBulkPurchaseLink(),\r\n unitOfMeasure: getBuyboxProductUnitOfMeasure(props),\r\n configure: getBuyboxProductConfigure(props, this.state, this.buyboxCallbacks),\r\n findInStore: getBuyboxFindInStore(this.props, this.state, this.buyboxCallbacks),\r\n price: getBuyboxProductPrice(props, this.state),\r\n addToCart: getBuyboxAddToCart(\r\n props,\r\n this.state,\r\n this.buyboxCallbacks,\r\n defaultMinimumKeyInPrice,\r\n defaultMaximumKeyInPrice,\r\n undefined,\r\n hasAvailableProducts\r\n ),\r\n productComparisonButton: ArrayExtensions.hasElements(productComparisonButton)\r\n ? getBuyboxProductComparisonButton(\r\n productComparisonButton[0],\r\n product,\r\n getCatalogId(this.props.context.request),\r\n this.state\r\n )\r\n : undefined,\r\n addToOrderTemplate: getBuyboxProductAddToOrderTemplate(props, this.state, this.buyboxCallbacks),\r\n addToWishlist: getBuyboxProductAddToWishlist(props, this.state, this.buyboxCallbacks),\r\n rating: !props.context.app.config.hideRating && getBuyboxProductRating(props),\r\n quantity: product.IsGiftCard ? undefined : getBuyboxProductQuantity(props, this.state, this.buyboxCallbacks),\r\n inventoryLabel: getBuyBoxInventoryLabel(props),\r\n stock: this._getBuyBoxStock(),\r\n shopSimilarLook:\r\n this.props.config.enableShopSimilarLooks && !product.IsGiftCard\r\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Looks)\r\n : undefined,\r\n shopSimilarDescription:\r\n this.props.config.enableShopSimilarDescription && !product.IsGiftCard\r\n ? getBuyboxShopSimilarButton(props, ShopSimiliarButtonType.Description)\r\n : undefined,\r\n keyInPrice:\r\n this.props.config.enableKeyInPrice && this.state.isCustomPriceSelected\r\n ? getBuyboxKeyInPrice(props, this.state, this.buyboxCallbacks)\r\n : undefined,\r\n quantityLimitsMessages: getQuantityLimitsMessages(props, this.state),\r\n max\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n\r\n private _getBuyBoxStock(): React.ReactNode{\r\n const {\r\n data: { productAvailableQuantity: { result: productAvailableQuantity} },\r\n } = this.props;\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n if(!productAvailableQuantity || !productAvailableQuantity.length) {\r\n return undefined;\r\n }\r\n if(productAvailableQuantity &&\r\n productAvailableQuantity.length&&\r\n productAvailableQuantity[0]&&productAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity && defaultOrderQuantityLimitsFeatureConfig === 'b2b') {\r\n return (
On hand:
{ productAvailableQuantity[0].ProductAvailableQuantity.AvailableQuantity}
);\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Handles anchor click event and scrolls to the given bulk purchase module.\r\n * @param bulkPurchaseModule - Bulk purchase module.\r\n * @returns Handler.\r\n */\r\n private readonly _onBulkPurchaseLinkClick = (bulkPurchaseModule: Element) => () => {\r\n const boundingRect = bulkPurchaseModule.getBoundingClientRect();\r\n window.scrollTo(boundingRect.left, boundingRect.top);\r\n };\r\n\r\n private _renderBuyboxBulkPurchaseLink(): React.ReactNode {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\r\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\r\n return null;\r\n }\r\n\r\n if (!msdyn365Commerce.isBrowser) {\r\n return null;\r\n }\r\n\r\n const bulkPurchaseModules = Array.from(document.getElementsByClassName(BulkPurchase.className));\r\n\r\n if (!ArrayExtensions.hasElements(bulkPurchaseModules)) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {this.props.resources.bulkPurchaseLinkText}\r\n \r\n );\r\n }\r\n\r\n private _updatePrice(newPrice: ProductPrice | undefined, customPrice: number | undefined = this.state.keyInPriceAmount): void {\r\n if (this.state.isCustomPriceSelected && newPrice) {\r\n newPrice.CustomerContextualPrice = customPrice;\r\n }\r\n this.setState({ productPrice: newPrice });\r\n }\r\n\r\n \r\n private readonly _updateDimensionValue = (productDimensionFull: ProductDimensionFull, newValueId: string | undefined): ProductDimensionValue | undefined => {\r\n if (newValueId && productDimensionFull.DimensionValues) {\r\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private readonly _updateDimensions = async (): Promise => {\r\n const {\r\n data: {\r\n product: { result: product },\r\n productDimensions: { result: productDimensions }\r\n },\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: {\r\n channelId\r\n }\r\n }\r\n }\r\n } = this.props;\r\n\r\n if (!product || !productDimensions) {\r\n return;\r\n }\r\n\r\n const dimensionsToUpdate: { [id: number]: string } = { ...this.dimensions };\r\n this.setState({ isUpdatingDimension: true, isUpdatingDeliveryOptions: true });\r\n\r\n // Step 1: Clear error state to display relevant errors\r\n if (this.state.errorState.otherError || this.state.errorState.quantityError) {\r\n const clearErrorState = { ...this.state.errorState };\r\n clearErrorState.otherError = undefined;\r\n if (this.state.errorState.errorHost === 'ADDTOCART') {\r\n clearErrorState.quantityError = undefined;\r\n clearErrorState.errorHost = undefined;\r\n }\r\n this.setState({ errorState: clearErrorState });\r\n }\r\n\r\n // Step 2: Clear any errors indicating the dimension wasn't selected\r\n for (const key of Object.keys(dimensionsToUpdate)) {\r\n if (this.state.errorState.configureErrors[key]) {\r\n const errorState = { ...this.state.errorState };\r\n errorState.configureErrors[key] = undefined;\r\n\r\n this.setState({ errorState });\r\n }\r\n }\r\n\r\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\r\n // over the information in data\r\n const mappedDimensions = productDimensions.map(dimension => {\r\n return {\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue: this._updateDimensionValue(dimension, dimensionsToUpdate[dimension.DimensionTypeValue]) || dimension.DimensionValue,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n };\r\n }).filter(dimension => {\r\n return dimension && dimension.DimensionValue;\r\n });\r\n\r\n const selectedProduct = new Promise(async (resolve, reject) => {\r\n const newProduct = (await getSelectedVariantV29(\r\n new SelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId,\r\n mappedDimensions\r\n ),\r\n actionContext\r\n ));\r\n if (newProduct) {\r\n await getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(\r\n newProduct.MasterProductId ? newProduct.MasterProductId : newProduct.RecordId,\r\n channelId,\r\n mappedDimensions\r\n ),\r\n actionContext\r\n );\r\n }\r\n\r\n resolve(newProduct);\r\n });\r\n this.setState({ selectedProduct });\r\n const variantProduct = await selectedProduct;\r\n\r\n if (variantProduct) {\r\n // Step 5. Use these dimensions hydrate the inventory. Wrap this in a promise\r\n // so that places like add to cart can await it\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(\r\n new ProductAvailabilitiesForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId\r\n ),\r\n actionContext\r\n );\r\n\r\n const newShippingQuantity = newAvailableQuantity?.find(shipping => shipping.deliveryType === DeliveryMode.shipping);\r\n const isCustompriceSelected = variantProduct && variantProduct.Dimensions && variantProduct.Dimensions.find(dimension => dimension.DimensionTypeValue === 4 && dimension.DimensionValue && dimension.DimensionValue.Value === 'Custom');\r\n if (isCustompriceSelected) {\r\n this.setState({ isCustomPriceSelected: true });\r\n } else {\r\n // Remove custom amount error when unselect the custom amount\r\n const errorState = { ...this.state.errorState };\r\n errorState.customAmountError = undefined;\r\n\r\n this.setState({ isCustomPriceSelected: false, isPriceKeyedIn: false, errorState });\r\n }\r\n\r\n if (newShippingQuantity) {\r\n this.setState({ productAvailableQuantity: newShippingQuantity });\r\n } else {\r\n this.setState({ productAvailableQuantity: undefined });\r\n }\r\n\r\n // Step 6. Use these dimensions hydrate the product price.\r\n const newPrice = await getPriceForSelectedVariant(\r\n new PriceForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId\r\n ),\r\n actionContext\r\n );\r\n\r\n if (newPrice) {\r\n this._updatePrice(newPrice);\r\n }\r\n\r\n const RetailMulitplePickupMFeatureState = this.props.data.featureState.result?.find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature');\r\n\r\n // Step 7. Use these dimensions hydrate the product delivery options.\r\n const newDeliveryOptions = await getDeliveryOptionsForSelectedVariant(\r\n new GetDeliveryOptionsForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId,\r\n undefined,\r\n undefined,\r\n RetailMulitplePickupMFeatureState?.IsEnabled\r\n ),\r\n actionContext\r\n );\r\n\r\n if (newDeliveryOptions) {\r\n this.setState({ productDeliveryOptions: newDeliveryOptions });\r\n }\r\n\r\n await this._updateQuantitiesInState(variantProduct);\r\n }\r\n };\r\n\r\n\r\n private async _updateQuantitiesInState(product: SimpleProduct): Promise {\r\n const isOrderQuantityLimitsFeatureEnabled = await this._isOrderQuantityLimitsFeatureEnabled();\r\n const isB2B = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n const eoqCount = isB2B ? this.props.data?.product?.result?.Behavior?.MultipleOfQuantity : 1;\r\n if (isOrderQuantityLimitsFeatureEnabled && product) {\r\n isB2B? this.setState({\r\n quantity: eoqCount || 1,\r\n min: product.Behavior?.MinimumQuantity || 1,\r\n\r\n // If max by feature in default order settings is not defined then use max from site settings or default max 10.\r\n max:\r\n product.Behavior?.MaximumQuantity && product.Behavior?.MaximumQuantity > 0\r\n ? product.Behavior?.MaximumQuantity\r\n : this.props.context.app.config.maxQuantityForCartLineItem || 10\r\n })\r\n :\r\n this.setState({\r\n min: product.Behavior?.MinimumQuantity || 1,\r\n\r\n // If max by feature in default order settings is not defined then use max from site settings or default max 10.\r\n max:\r\n product.Behavior?.MaximumQuantity && product.Behavior?.MaximumQuantity > 0\r\n ? product.Behavior?.MaximumQuantity\r\n : this.props.context.app.config.maxQuantityForCartLineItem || 10\r\n });\r\n } else {\r\n this.setState({\r\n min: 1,\r\n max: this.props.context.app.config.maxQuantityForCartLineItem || 10\r\n });\r\n }\r\n }\r\n\r\n private readonly _getDropdownName = (dimensionType: number, resources: ICittaBuyboxResources): string => {\r\n const isGiftCard = this.props.data.product.result?.IsGiftCard;\r\n\r\n switch (dimensionType) {\r\n case 1: // ProductDimensionType.Color\r\n return resources.productDimensionTypeColor;\r\n case 2: // ProductDimensionType.Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // ProductDimensionType.Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // ProductDimensionType.Style\r\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n private async _isOrderQuantityLimitsFeatureEnabled(): Promise {\r\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\r\n return false;\r\n }\r\n\r\n const featureStatuses = await this.props.data.featureState;\r\n const isFeatureEnabledInHq = featureStatuses?.find(\r\n featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName\r\n )?.IsEnabled;\r\n if (!isFeatureEnabledInHq) {\r\n return false;\r\n }\r\n\r\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\r\n return true;\r\n }\r\n let customerInfo;\r\n try {\r\n customerInfo = await this.props.data.customerInformation;\r\n } catch (error) {\r\n /* @ts-ignore */\r\n this.props.telemetry.information(error);\r\n this.props.telemetry.debug('Unable to receive Customer Information. May be user is not authorized');\r\n return false;\r\n }\r\n\r\n return (\r\n customerInfo &&\r\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\r\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b))\r\n );\r\n }\r\n}\r\n\r\nexport default Buybox;\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 * as React from 'react';\r\nimport { Button, Modal, ModalBody, ModalHeader } from '@msdyn365-commerce-modules/utilities';\r\n\r\nimport { ICittaEnquireFormData } from './citta-enquire-form.data';\r\nimport { ICittaEnquireFormProps } from './citta-enquire-form.props.autogenerated';\r\nimport { submitPdpEnquiryFormAction, SubmitPdpEnquiryFormDataActionInput } from '../../data-actions/pdp-enquiry/submit-pdp-enquiry-form-data';\r\n\r\nexport interface ICittaEnquireFormViewProps extends ICittaEnquireFormProps {\r\n ModalItem: React.ReactNode;\r\n EnquireButton: React.ReactNode;\r\n}\r\n\r\ninterface ICittaEnquireFormState {\r\n isOpen: boolean;\r\n responseReceived: boolean;\r\n design: string;\r\n name: string;\r\n lastName: string;\r\n emailAddress: string;\r\n phoneNumber: string;\r\n storePickerValue: string;\r\n storePickerText: string;\r\n enquiryMessage: string;\r\n upholstery: string;\r\n dError: boolean;\r\n nError: boolean;\r\n lNError: boolean;\r\n eAError: boolean;\r\n pHError: boolean;\r\n pCError: boolean;\r\n reqError: boolean;\r\n eAValError: boolean;\r\n enquiryMessageError: boolean;\r\n cHError: boolean;\r\n nLSError: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * CittaEnquireForm component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass CittaEnquireForm extends React.PureComponent, ICittaEnquireFormState> {\r\n private response: boolean = false;\r\n\r\n private _designInputRef: React.RefObject;\r\n private _nameInputRef: React.RefObject;\r\n private _lastNameInputRef: React.RefObject;\r\n private _emailAddressInputRef: React.RefObject;\r\n private _phoneNumberInputRef: React.RefObject;\r\n private _enquiryMessageInputRef: React.RefObject;\r\n private _productTypePickerSelectRef: React.RefObject;\r\n private _storePickerSelectRef: React.RefObject;\r\n private _upholsteryInputRef: React.RefObject;\r\n private requiredErrorMessage: string | undefined;\r\n private eAValidationErrorMessage: string | undefined;\r\n\r\n private designValue: boolean = false;\r\n private nameValue: boolean = false;\r\n private lastNameValue: boolean = false;\r\n private emailAddressValue: boolean = false;\r\n private phoneNumberValue: boolean = false;\r\n private formInputValues: boolean = false;\r\n\r\n constructor(props: ICittaEnquireFormProps) {\r\n super(props);\r\n\r\n this.state = {\r\n isOpen: false,\r\n responseReceived: false,\r\n design: props.config.productDesign || '',\r\n name: '',\r\n lastName: '',\r\n emailAddress: '',\r\n phoneNumber: '',\r\n enquiryMessage: '',\r\n storePickerValue: '',\r\n storePickerText: '',\r\n upholstery: '',\r\n dError: false,\r\n cHError: false,\r\n lNError: false,\r\n eAError: false,\r\n pHError: false,\r\n nError: false,\r\n reqError: false,\r\n pCError: false,\r\n eAValError: false,\r\n enquiryMessageError: false,\r\n nLSError: false\r\n }\r\n\r\n this._designInputRef = React.createRef();\r\n this._nameInputRef = React.createRef();\r\n this._lastNameInputRef = React.createRef();\r\n this._emailAddressInputRef = React.createRef();\r\n this._phoneNumberInputRef = React.createRef();\r\n this._enquiryMessageInputRef = React.createRef();\r\n this._productTypePickerSelectRef = React.createRef();\r\n this._storePickerSelectRef = React.createRef();\r\n this._upholsteryInputRef = React.createRef();\r\n\r\n this._closeModal = this._closeModal.bind(this);\r\n this._openModal = this._openModal.bind(this);\r\n this._handleSend = this._handleSend.bind(this);\r\n }\r\n \r\n public render(): JSX.Element | null {\r\n const viewProps: ICittaEnquireFormViewProps = {\r\n ... this.props,\r\n ModalItem: this._renderEnquiremodal(),\r\n EnquireButton: this._renderEnquireButton()\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n\r\n private _closeModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen\r\n }));\r\n }\r\n private _openModal(): void {\r\n this.setState(prevState => ({\r\n isOpen: !prevState.isOpen,\r\n responseReceived: false\r\n }));\r\n }\r\n\r\n private _renderEnquireButton(): JSX.Element {\r\n return (\r\n \r\n )\r\n }\r\n\r\n private _renderAlert(className: string): JSX.Element {\r\n const inputBoxErrors = (this.state.nError || this.state.lNError || this.state.eAError || this.state.pHError || this.state.cHError || this.state.enquiryMessageError);\r\n if (inputBoxErrors) {\r\n this.requiredErrorMessage = this.props.resources.requiredTextErrorMessage;\r\n }\r\n if (this.state.emailAddress !== '' && this.state.eAValError) {\r\n this.eAValidationErrorMessage = this.props.resources.eAValidationErrorMessage;\r\n }\r\n\r\n const reqError = this.state.reqError;\r\n const eAValError = this.state.eAValError;\r\n return (\r\n <>\r\n {reqError && (\r\n \r\n {\r\n this.requiredErrorMessage &&\r\n <>\r\n \r\n )}\r\n {eAValError && (\r\n \r\n {\r\n this.eAValidationErrorMessage &&\r\n <>\r\n \r\n )}\r\n \r\n );\r\n }\r\n\r\n private handleChange = (inputText: string) => (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n switch (inputText) {\r\n case 'designInput': {\r\n this.setState({ design: value, reqError: false, dError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'nameInput': {\r\n this.setState({ name: value, reqError: false, nError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'lastNameInput': {\r\n this.setState({ lastName: value, reqError: false, lNError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'emailAddress': {\r\n this.setState({ emailAddress: value, reqError: false, eAError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'phoneNumber': {\r\n this.setState({ phoneNumber: value, reqError: false, pHError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n case 'upholstery': {\r\n this.setState({ upholstery: value, reqError: false, eAValError: false, nLSError: false });\r\n break;\r\n }\r\n default: null;\r\n }\r\n }\r\n\r\n private onChangeSelect = (e: React.ChangeEvent) => {\r\n const text = e.target.options[e.target.options.selectedIndex].textContent;\r\n this.setState({ storePickerValue: e.target.value || '', storePickerText: text || '' });\r\n };\r\n\r\n private isEmailValid = (email: string): boolean => {\r\n const regex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return regex.test(email);\r\n };\r\n\r\n private handleMessageChange = (e: React.ChangeEvent) => {\r\n const value = e.target.value;\r\n this.setState({ enquiryMessage: value, reqError: false, eAValError: false, nLSError: false });\r\n }\r\n\r\n private _renderEnquiremodal(): JSX.Element {\r\n const { config, resources } = this.props;\r\n const cittaStoresList: string = this.props.context.app.config.cittaStoresList || 'Città BLOC,000010|Città Grey Lynn,000012|Città Hamilton,000013|Città Merivale,000016|Città Wellington,000017|Città Wellington Thorndon,000018|Città Newmarket,000041|Città Takapuna,000044';\r\n const cittaStores: string[] = cittaStoresList.split('|');\r\n // const colors = this._getDimensionValues(this.props.data.productDimensions || [], this.colorProductDimensionTypeValue);\r\n // const sizes = this._getDimensionValues(this.props.data.productDimensions || [], this.sizeProductDimensionTypeValue);\r\n\r\n return (\r\n
\r\n \r\n {config.modalHeader || 'enquire in-store'}\r\n \r\n
\r\n {this.state.responseReceived && this.response\r\n ?
\r\n

{resources.responseSuccessMessage}

\r\n
: null}\r\n {this.state.responseReceived && !this.response ?
\r\n

{resources.responseErrorMessage}

\r\n
: null}\r\n {!this.state.responseReceived ?
\r\n
\r\n {this.state.dError ? this._renderAlert('contact-form-design') : ''}\r\n
\r\n
\r\n {this.state.nError ? this._renderAlert('contact-form-name') : ''}\r\n
\r\n
\r\n {this.state.lNError ? this._renderAlert('contact-form-name') : ''}\r\n
\r\n
\r\n {this.state.eAError || this.state.eAValError ? this._renderAlert('contact-form-emailaddress') : ''}\r\n
\r\n
\r\n {this.state.pHError ? this._renderAlert('contact-form-phonenumber') : ''}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/* {sizes && (\r\n
\r\n \r\n
\r\n {\r\n sizes.map((size, index) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })\r\n }\r\n
\r\n {this.state.cHError ? this._renderAlert('contact-form-customizations') : ''}\r\n
\r\n )}\r\n {colors && (\r\n
\r\n
\r\n
\r\n
\r\n )} */}\r\n
\r\n {this.state.enquiryMessageError ? this._renderAlert('enquire-form-message') : ''}\r\n
\r\n
\r\n \r\n {resources.enquireSendButtonText}\r\n \r\n\r\n Store Locations\r\n
\r\n
\r\n : null}\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private async _handleSend(e: React.MouseEvent | React.KeyboardEvent | React.FormEvent): Promise {\r\n this.designValue = (this._designInputRef && this._designInputRef.current && this._designInputRef.current.value) ? true : false;\r\n this.nameValue = (this._nameInputRef && this._nameInputRef.current && this._nameInputRef.current.value) ? true : false;\r\n this.lastNameValue = (this._lastNameInputRef && this._lastNameInputRef.current && this._lastNameInputRef.current.value) ? true : false;\r\n this.emailAddressValue = (this._emailAddressInputRef && this._emailAddressInputRef.current && this._emailAddressInputRef.current.value) ? true : false;\r\n this.phoneNumberValue = (this._phoneNumberInputRef && this._phoneNumberInputRef.current && this._phoneNumberInputRef.current.value) ? true : false;\r\n\r\n const de = (this._designInputRef && this._designInputRef.current && this._designInputRef.current.value) ? this._designInputRef.current.value : '';\r\n const nA = (this._nameInputRef && this._nameInputRef.current && this._nameInputRef.current.value) ? this._nameInputRef.current.value : '';\r\n const lN = (this._lastNameInputRef && this._lastNameInputRef.current && this._lastNameInputRef.current.value) ? this._lastNameInputRef.current.value : '';\r\n const eA = (this._emailAddressInputRef && this._emailAddressInputRef.current && this._emailAddressInputRef.current.value) ? this._emailAddressInputRef.current.value : '';\r\n const pN = (this._phoneNumberInputRef && this._phoneNumberInputRef.current && this._phoneNumberInputRef.current.value) ? this._phoneNumberInputRef.current.value : '';\r\n const up = (this._upholsteryInputRef && this._upholsteryInputRef.current && this._upholsteryInputRef.current.value) ? this._upholsteryInputRef.current.value : '';\r\n const sP = this.props.config.floorStock? 'Città Sofa Enquiry' : this.state.storePickerText;\r\n const cI = this.props.config.floorStock? 'Città Sofa Enquiry' : this._storePickerSelectRef.current!.value;\r\n\r\n\r\n const pT = (this._productTypePickerSelectRef && this._productTypePickerSelectRef.current && this._productTypePickerSelectRef.current.value) ? this._productTypePickerSelectRef.current.value : '';\r\n const eM = (this._enquiryMessageInputRef && this._enquiryMessageInputRef.current && this._enquiryMessageInputRef.current.value) ? this._enquiryMessageInputRef.current.value : '';\r\n // const eAVal = this._emailAddressInputRef.current!.value;\r\n // const pID = this.props.data.product.ItemId || '';\r\n // const sN = this.state.subcribeNewsletterChecked ? 1 : 0;\r\n\r\n if (!this.designValue) {\r\n this.setState({\r\n dError: true,\r\n reqError: true\r\n });\r\n } else if (!this.nameValue) {\r\n this.setState({\r\n nError: true,\r\n reqError: true\r\n });\r\n } else if (!this.lastNameValue) {\r\n this.setState({\r\n lNError: true,\r\n reqError: true\r\n });\r\n } else if (!this.emailAddressValue) {\r\n this.setState({\r\n eAError: true,\r\n reqError: true\r\n });\r\n } else if (!this.isEmailValid(eA)) {\r\n this.setState({\r\n eAValError: true\r\n });\r\n } else if (!this.phoneNumberValue) {\r\n this.setState({\r\n pHError: true,\r\n reqError: true\r\n });\r\n } else {\r\n this.formInputValues = (this.nameValue && this.lastNameValue && this.emailAddressValue && this.phoneNumberValue) ? true : false;\r\n\r\n if (this.formInputValues && !this.state.eAValError) {\r\n try {\r\n const result = await submitPdpEnquiryFormAction(new SubmitPdpEnquiryFormDataActionInput(nA, lN, eA, pN, sP, de, eM, '', pT, up, 'Enquire Custom Furniture', cI, 0), this.props.context.actionContext);\r\n this.response = result.success;\r\n\r\n //scroll to top of div\r\n\r\n this.setState({ responseReceived: true });\r\n } catch {\r\n console.log('Please fill the form!');\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CittaEnquireForm;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport interface ILogoProps {\r\n image: Msdyn365.IImageData;\r\n gridSettings?: Msdyn365.IGridSettings;\r\n link?: Msdyn365.ILinkData;\r\n className?: string;\r\n telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n}\r\n\r\n// export interface ILinkData {\r\n// // linkUrl: Msdyn365.ILinkData;\r\n// destinationUrl?: string;\r\n// // openInNewTab?: boolean;\r\n// // linkText?: string;\r\n// }\r\n\r\n/**\r\n *\r\n * Logo component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Logo extends React.PureComponent {\r\n\r\n private attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n public render():JSX.Element {\r\n return(\r\n
\r\n {this._renderLogo(this.props)}\r\n
\r\n );\r\n }\r\n\r\n private _renderLogo(config: ILogoProps):JSX.Element {\r\n if(config.link && config.link.destinationUrl) {\r\n return(\r\n \r\n {this._renderImage(config)}\r\n \r\n );\r\n }\r\n return(\r\n this._renderImage(config)\r\n );\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=132&h=28&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=160&h=48&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { ICittaHeaderResources } from '../citta-header.props.autogenerated';\r\n\r\nexport interface INavIconProps {\r\n resources: ICittaHeaderResources;\r\n isExpanded: boolean;\r\n targetId: string;\r\n telemetryContent?: ITelemetryContent;\r\n toggleNavBar(): void;\r\n}\r\n\r\n/**\r\n *\r\n * NavIcon component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\n@observer\r\nexport class NavIcon extends React.Component {\r\n\r\n private attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: INavIconProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render():JSX.Element {\r\n return (\r\n \r\n );\r\n }\r\n}","// import { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { ICittaHeaderData } from '../citta-header.data';\r\nimport { ICittaHeaderProps } from '../citta-header.props.autogenerated';\r\n\r\n/**\r\n * The header preferred store component\r\n */\r\n// @observer\r\nexport class HeaderPreferredStore extends React.PureComponent> {\r\n\r\n // public handleClick = () => { return this._findPreferreStoreOnClick(this.props); };\r\n\r\n public render(): JSX.Element | undefined {\r\n // const {\r\n // data: {\r\n // storeSelectorStateManager: { result: storeSelectorStateManager }\r\n // },\r\n // slots,\r\n // resources\r\n // } = this.props;\r\n // if (slots && slots.storeSelector && slots.storeSelector.length) {\r\n // const storeName = storeSelectorStateManager!.preferredStore && storeSelectorStateManager!.preferredStore.StoreName ?\r\n // storeSelectorStateManager!.preferredStore.StoreName :\r\n // resources.headerPreferredStoreText;\r\n\r\n // return (\r\n //
\r\n // \r\n // {slots.storeSelector}\r\n //
\r\n // );\r\n // }\r\n\r\n return undefined;\r\n }\r\n\r\n // private async _findPreferreStoreOnClick(props: ICittaHeaderProps): Promise {\r\n // const { data: { storeSelectorStateManager: { result: storeSelectorStateManager } }, modules } = props;\r\n // if (!storeSelectorStateManager) {\r\n // return;\r\n // }\r\n // let storeSelectorId: string = '';\r\n // if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\r\n // storeSelectorId = modules.storeSelector[0].id;\r\n // }\r\n // storeSelectorStateManager.openDialog({\r\n // id: storeSelectorId,\r\n // showMapViewLink: false,\r\n // onLocationSelected: orgUnitLocation => {\r\n // return Promise.resolve();\r\n // }\r\n // }).catch((error: Error) => {\r\n // if (props.telemetry) {\r\n // props.telemetry.error(error.message);\r\n // props.telemetry.debug('Unable to set preferred store');\r\n // }\r\n // return;\r\n // });\r\n // }\r\n}\r\n\r\nexport default HeaderPreferredStore;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes, Modal,\r\n ModalBody, ModalHeader, onTelemetryClick, TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { WishListIconComponent } from '@msdyn365-commerce/components';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { ICittaHeaderData } from './citta-header.data';\r\nimport { ICittaHeaderProps, ICittaHeaderResources, IMyAccountLinksData } from './citta-header.props.autogenerated';\r\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\r\nimport { CartIconComponent } from '../../themes/citta/views/components/cart-icon.component';\r\n\r\n\r\nexport interface IHeaderState {\r\n mobileMenuCollapsed: boolean;\r\n signinPopoverOpen: boolean;\r\n}\r\n\r\nexport interface IHeaderViewProps extends ICittaHeaderProps, IHeaderState {\r\n logo: React.ReactNode;\r\n wishListIconDesktop: React.ReactNode;\r\n wishListIconMobile: React.ReactNode;\r\n cartIcon: React.ReactNode;\r\n navIcon: React.ReactNode;\r\n className: string;\r\n menuBar: React.ReactNode[];\r\n search: React.ReactNode[];\r\n siteOptions: React.ReactNode[];\r\n categoryMenuBar: React.ReactNode[];\r\n customNavBar: React.ReactNode[];\r\n countryPicker: React.ReactNode[];\r\n HeaderTag: IModuleProps;\r\n HeaderContainer: INodeProps;\r\n MobileMenuContainer: INodeProps;\r\n MobileMenuHeader: React.ReactNode;\r\n MobileMenuBodyContainer: INodeProps;\r\n MobileMenuLinksContainer: INodeProps;\r\n HeaderTopBarContainer: INodeProps;\r\n HeaderTopBarRightContainer: INodeProps;\r\n Divider: INodeProps;\r\n\r\n AccountInfoDropdownParentContainer?: INodeProps;\r\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\r\n accountInfoDropdownButton?: React.ReactNode;\r\n\r\n signOutLink?: React.ReactNode;\r\n signInLink?: React.ReactNode;\r\n accountLinks?: React.ReactNode[];\r\n preferredStore?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Header component\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass Header extends React.PureComponent, IHeaderState> {\r\n private popOverRef: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private cart: ICartState | undefined;\r\n @computed public get displayName(): Readonly {\r\n const customer = this.props.data.accountInformation?.result;\r\n const isB2B = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n if(isB2B){\r\n return customer ? customer.Name || customer.FirstName : undefined;\r\n }\r\n return customer ? customer.FirstName || customer.Name : undefined;\r\n }\r\n @computed public get accountEmailAddress(): Readonly {\r\n const customer = this.props.data.accountInformation?.result;\r\n return customer ? customer.Email || customer.Email : undefined;\r\n }\r\n\r\n constructor(props: ICittaHeaderProps) {\r\n super(props);\r\n this.popOverRef = React.createRef();\r\n this._toggleNavbar = this._toggleNavbar.bind(this);\r\n this._togglePopover = this._togglePopover.bind(this);\r\n this._keydown = this._keydown.bind(this);\r\n this.state = {\r\n mobileMenuCollapsed: true,\r\n signinPopoverOpen: false\r\n };\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n window.addEventListener('keydown', this._keydown);\r\n }\r\n reaction(\r\n () => this.props.data.cart.result,\r\n () => {\r\n this.cart = this.props.data.cart.result;\r\n }\r\n );\r\n\r\n this._stickyHeaderSetup();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n window.removeEventListener('keydown', this._keydown, false);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity max-func-body-length\r\n public render(): JSX.Element | null {\r\n const {\r\n id,\r\n typeName,\r\n data: { accountInformation,\r\n storeSelectorStateManager: {result: storeSelectorStateManager}\r\n },\r\n context: {\r\n request: {\r\n user\r\n }\r\n },\r\n context,\r\n resources: {\r\n cartLabel\r\n }\r\n } = this.props; \r\n\r\n const headerClassName = classnames('ms-header', this.props.config.className);\r\n const navbarKey = 'header-nav-mobile';\r\n const customer = accountInformation && accountInformation.result;\r\n const cartIconSlot = this._getSlot('cartIcon');\r\n const menuBarSlot = this._getSlot('menuBar');\r\n const searchSlot = this._getSlot('search');\r\n const siteOptionsSlot = this._getSlot('siteOptions');\r\n const preferredStoreSlot = this._getSlot('storeSelector');\r\n\r\n const categoryMenuBarSlot = this._getSlot('categoryMenuBar');\r\n const customNavBarSlot = this._getSlot('customNavMenuBar');\r\n const countryPickerSlot = this._getSlot('countryPicker');\r\n\r\n const logoSlot = this._getSlot('logo');\r\n // @ts-ignore\r\n const logoImage = logoSlot && logoSlot.length && logoSlot[0].props.config.image || {};\r\n // @ts-ignore\r\n const logoLink = logoSlot && logoSlot.length && logoSlot[0]?.props.config.imageLink || '';\r\n\r\n const viewProps: IHeaderViewProps = {\r\n ...(this.props as ICittaHeaderProps),\r\n ...(this.state),\r\n logo: ,\r\n wishListIconDesktop: (\r\n \r\n ),\r\n wishListIconMobile: (\r\n \r\n ),\r\n cartIcon: (cartIconSlot && cartIconSlot.length > 0)\r\n ? cartIconSlot[0]\r\n : , \r\n navIcon: ,\r\n menuBar: menuBarSlot && menuBarSlot.length && menuBarSlot || [],\r\n search: searchSlot && searchSlot.length && searchSlot || [],\r\n siteOptions: siteOptionsSlot && siteOptionsSlot.length && siteOptionsSlot || [],\r\n categoryMenuBar: categoryMenuBarSlot && categoryMenuBarSlot.length && categoryMenuBarSlot || [],\r\n customNavBar: customNavBarSlot && customNavBarSlot.length && customNavBarSlot || [],\r\n className: headerClassName,\r\n countryPicker: countryPickerSlot && countryPickerSlot.length && countryPickerSlot || [],\r\n HeaderTag: {\r\n moduleProps: this.props,\r\n className: classnames(headerClassName),\r\n tag: 'header'\r\n },\r\n HeaderContainer: {\r\n className: classnames('ms-header__container')\r\n },\r\n HeaderTopBarContainer: {\r\n className: classnames('ms-header__topbar')\r\n },\r\n HeaderTopBarRightContainer: {\r\n className: classnames('ms-header__topbar-right')\r\n },\r\n Divider: {\r\n className: classnames('ms-header__divider')\r\n },\r\n MobileMenuContainer: {\r\n tag: Modal,\r\n id: navbarKey,\r\n className: 'ms-header__mobile-hamburger',\r\n isOpen: !this.state.mobileMenuCollapsed,\r\n wrapClassName: `ms-header__citta-modal citta-header-mobile ${!this.state.mobileMenuCollapsed ? 'modal-open' : ''}`,\r\n toggle: this._toggleNavbar\r\n },\r\n MobileMenuHeader: (\r\n \r\n ),\r\n MobileMenuBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-header__mobile-hamburger-menu-body',\r\n },\r\n MobileMenuLinksContainer: {\r\n className: 'ms-header__mobile-hamburger-menu-links',\r\n },\r\n AccountInfoDropdownParentContainer: {\r\n className: `ms-header__account-info ${this.state.signinPopoverOpen ? 'account-open' : ''}`\r\n },\r\n AccountInfoDropdownPopoverConentContainer: customer && this.displayName && {\r\n // tag: Popover,\r\n id: 'myprofilePopover',\r\n className: 'ms-header__account-info-content',\r\n placement: 'bottom',\r\n isOpen: this.state.signinPopoverOpen,\r\n target: this.popOverRef,\r\n toggle: this._togglePopover,\r\n } || undefined,\r\n signInLink: this._getSigninButton(customer, user, this.props.resources),\r\n signOutLink: this._getSignOutButton(customer, user, this.props.resources),\r\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(customer),\r\n accountLinks: this._getAccountLinks(customer),\r\n preferredStore: preferredStoreSlot\r\n && preferredStoreSlot.length\r\n && storeSelectorStateManager\r\n && ()\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent) => {\r\n if (this.props.config.myAccountLinks && this.props.config.myAccountLinks[linkIndex]) {\r\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\r\n }\r\n }\r\n\r\n private _stickyHeaderSetup(): void {\r\n // Set header update methods to trigger on scroll\r\n window.onscroll = () => {\r\n this._updateHeader();\r\n };\r\n this._updateHeader();\r\n }\r\n\r\n private _getSlot(slotName: string): React.ReactNode[] | null {\r\n const { slots } = this.props;\r\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\r\n }\r\n\r\n private _getSigninButton(customer: Customer | undefined, user: MsDyn365.IRequestContextUser | undefined, resources: ICittaHeaderResources): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return !customer && (\r\n \r\n {resources.signInLinkText}\r\n \r\n );\r\n }\r\n\r\n private _getSignOutButton(customer: Customer | undefined, user: MsDyn365.IRequestContextUser | undefined, resources: ICittaHeaderResources): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return customer && this.displayName && (\r\n \r\n {resources.signOutLinkText}\r\n \r\n );\r\n }\r\n\r\n private _getAccountInfoDropdownButton(customer: Customer | undefined): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return customer && this.displayName && (\r\n \r\n {this.displayName}\r\n {this.accountEmailAddress}\r\n \r\n );\r\n }\r\n\r\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\r\n const { myAccountLinks } = this.props.config;\r\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n if(!customer || ! this.displayName || !myAccountLinks || !myAccountLinks.length) {\r\n return undefined;\r\n }\r\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\r\n payLoad.contentAction.etext = cta.linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const editableLink: MsDyn365.ILinksData = {\r\n ariaLabel: cta.ariaLabel,\r\n className: 'ms-signin-info__account-link-button',\r\n linkText: cta.linkText,\r\n linkUrl: cta.linkUrl.destinationUrl,\r\n openInNewTab: cta.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes\r\n };\r\n\r\n return (\r\n \r\n );\r\n });\r\n }\r\n\r\n private _toggleNavbar(): void {\r\n this.setState({\r\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\r\n });\r\n this.state.mobileMenuCollapsed && this._setHeader(this.state.mobileMenuCollapsed);\r\n }\r\n\r\n private _togglePopover(): void {\r\n this.setState({\r\n signinPopoverOpen: !this.state.signinPopoverOpen\r\n });\r\n }\r\n\r\n private _keydown(e: KeyboardEvent): void {\r\n if (e.keyCode === KeyCodes.Escape) {\r\n this.setState({ mobileMenuCollapsed: true });\r\n this._setHeader(true);\r\n }\r\n }\r\n\r\n private _setHeader(lockHeader?: boolean): void {\r\n // Get heights of cookie and promotion banners\r\n const headerElem = document.querySelector('.ms-header');\r\n const headerAlertsContainer: HTMLElement | null = document.querySelector('.ms-promo-banner');\r\n const bannerHeights = headerAlertsContainer ? headerAlertsContainer.offsetHeight : 0;\r\n // triggers opacity change of header\r\n if (headerElem) {\r\n if (lockHeader || document.documentElement.scrollTop > bannerHeights) {\r\n headerElem.classList.add('lock-opaque');\r\n } else if (!window.document.body.classList.contains('search-open')) { \r\n headerElem.classList.remove('lock-opaque');\r\n }\r\n }\r\n }\r\n\r\n private _updateHeader(isInMobileMenu?: boolean): void {\r\n // triggers opacity change of header\r\n // Get heights of cookie and promotion banners\r\n const headerAlertsContainer: HTMLElement | null = document.querySelector('.ms-promo-banner');\r\n const bannerHeights = headerAlertsContainer ? headerAlertsContainer.offsetHeight : 0;\r\n if (this.state.mobileMenuCollapsed) {\r\n this._setHeader();\r\n }\r\n\r\n // Update sticky header position and opacity\r\n const stickyHeader: HTMLElement | null = document.querySelector('.ms-header__desktop-view');\r\n const headerLogo: HTMLElement | null = document.querySelector('.ms-header__topbar-center');\r\n const headerLeftActionItem: HTMLElement | null = document.querySelector('.ms-header__topbar-left');\r\n const headerRightActionItem: HTMLElement | null = document.querySelector('.ms-header__topbar-right');\r\n\r\n if (stickyHeader && headerLogo && headerLeftActionItem && headerRightActionItem) {\r\n // Fix center sticky header\r\n const navStickyPos = headerLogo.offsetHeight + bannerHeights;\r\n if (document.documentElement.scrollTop > navStickyPos) {\r\n stickyHeader.classList.add('fixed');\r\n } else {\r\n stickyHeader.classList.remove('fixed');\r\n }\r\n\r\n // Fix edge sticky headers\r\n if (document.documentElement.scrollTop > bannerHeights) {\r\n headerLeftActionItem.classList.add('fixed');\r\n headerRightActionItem.classList.add('fixed');\r\n } else {\r\n headerLeftActionItem.classList.remove('fixed');\r\n headerRightActionItem.classList.remove('fixed');\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Header;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface IPromoBannerCloseButton {\r\n closeButtonAriaLabel?: string;\r\n label?: string;\r\n telemetryContent?: ITelemetryContent;\r\n onClose(): void;\r\n\r\n}\r\n\r\nexport const PromoBannerCloseButton: React.FC = ({ closeButtonAriaLabel, label, telemetryContent, onClose }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PromoBannerClose);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n return (\r\n \r\n );\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../citta-promo-banner.props.autogenerated';\r\n\r\nexport interface IPromoBannerLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\nexport const PromoBannerLinks: React.FC = ({ links, requestContext, onTextChange, telemetryContent }) => {\r\n const editableLinks = _mapEditableLinks(links, telemetryContent);\r\n return(\r\n \r\n {editableLinks && editableLinks.length ?\r\n \r\n : null\r\n }\r\n \r\n );\r\n};\r\n\r\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent: ITelemetryContent): Msdyn365.ILinksData[] | null => {\r\n if(!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link,index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-promo-banner__link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport interface IPromoBannerText {\r\n text: string;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const PromoBannerText: React.FC = ({ text, onTextChange, requestContext }) => {\r\n return(\r\n \r\n );\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { Carousel } from '@msdyn365-commerce/components';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { PromoBannerCloseButton, PromoBannerLinks, PromoBannerText } from './components';\r\nimport { IBannerMessagesData, ICittaPromoBannerProps } from './citta-promo-banner.props.autogenerated';\r\n\r\nexport interface IPromoBannerState {\r\n animating: boolean;\r\n isVisible: boolean;\r\n activeIndex: number;\r\n}\r\n\r\nexport interface IPromoBannerViewProps extends ICittaPromoBannerProps<{}>, IPromoBannerState {\r\n promoBannerProps: IModuleProps;\r\n contentProps: INodeProps ;\r\n bannerMessages: IBannerMessagesData[];\r\n PromoBannerTextProps: INodeProps;\r\n PromoBannerLinksProps: INodeProps;\r\n CarouselProps: INodeProps;\r\n closeButton?: React.ReactNode;\r\n className: string;\r\n onDismiss(): void;\r\n handleText(): void;\r\n handleLinks(): void;\r\n}\r\n\r\n/**\r\n *\r\n * PromoBannerModule component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass PromoBanner extends React.PureComponent, IPromoBannerState> {\r\n public state: IPromoBannerState = {\r\n animating: false,\r\n isVisible: true,\r\n activeIndex: 0\r\n };\r\n\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n\r\n public render(): JSX.Element | null {\r\n const { bannerMessages, dismissEnabled, interval, hideFlipper, autoplay, className= '' } = this.props.config;\r\n const { closeButtonAriaLabel, closeButtonLabel } = this.props.resources;\r\n const { isVisible, activeIndex } = this.state;\r\n\r\n if (!isVisible) {\r\n this.props.context.telemetry.error('Promo banner content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const viewProps = {\r\n // Context for telemetry and raw data for C1 to do customization\r\n // Including computed data, state data and methods\r\n ...this.props,\r\n className: classnames('ms-promo-banner', className),\r\n isVisible, // state data\r\n onDismiss: this._onDismiss, // methods\r\n handleLinks: this.handleLinkClick,\r\n handleText: this.handleTextChange,\r\n\r\n promoBannerProps: { className: classnames('ms-promo-banner', className), moduleProps: this.props, role: 'banner' },\r\n PromoBannerTextProps: {\r\n tag: PromoBannerText\r\n },\r\n PromoBannerLinksProps: {\r\n tag: PromoBannerLinks,\r\n telemetryContent: this.telemetryContent\r\n },\r\n contentProps: { className: 'ms-promo-banner__content' },\r\n bannerMessages: bannerMessages,\r\n activeIndex: activeIndex,\r\n CarouselProps: {\r\n tag: Carousel,\r\n className: 'ms-promo-banner__carousel',\r\n activeIndex: activeIndex,\r\n next: this._next,\r\n previous: this._previous,\r\n onIndicatorsClickHandler: this._goToIndex,\r\n hideIndicator: hideFlipper,\r\n interval: interval,\r\n hideFlipper: hideFlipper,\r\n autoplay: autoplay\r\n },\r\n closeButton: dismissEnabled && \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => {\r\n if(this.props.config.bannerMessages && this.props.config.bannerMessages[0]) {\r\n this.props.config.bannerMessages[0].text = event.target.value;\r\n }\r\n }\r\n\r\n public handleLinkClick = () => {\r\n // console.log('mlmlm')\r\n //const links = this.props.config.bannerMessages[1].links;\r\n // console.log('links', links)\r\n }\r\n\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if(this.props.config.bannerMessages && this.props.config.bannerMessages[1]) {\r\n const links = this.props.config.bannerMessages[1].links;\r\n if(links) {\r\n links[linkIndex].linkText = event.target.value;\r\n }\r\n }\r\n };\r\n\r\n private _next = (): void => {\r\n const nextIndex = this._isLastItem() ? 0 : this.state.activeIndex + 1;\r\n this._goToIndex(nextIndex);\r\n };\r\n\r\n private _previous = (): void => {\r\n const nextIndex = this._isFirstItem() ? (this.props.config.bannerMessages ? this.props.config.bannerMessages.length - 1 : 0) : this.state.activeIndex - 1;\r\n this._goToIndex(nextIndex);\r\n };\r\n\r\n private _goToIndex = (index: number): void => {\r\n if (this.state.animating) {\r\n return;\r\n }\r\n this.setState({ activeIndex: index });\r\n };\r\n\r\n private _isFirstItem = () => this.state.activeIndex === 0;\r\n\r\n private _isLastItem = () => this.props.config.bannerMessages && this.state.activeIndex === this.props.config.bannerMessages.length - 1;\r\n\r\n private _onDismiss = (): void => {\r\n this.setState({ isVisible: false });\r\n };\r\n}\r\n\r\nexport default PromoBanner;\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\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport interface IWishlistItemDimension {\r\n key: string;\r\n className?: string;\r\n dimensionType: string;\r\n dimensionValue: string;\r\n}\r\n\r\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\r\n
\r\n {dimensionType}:\r\n {dimensionValue}\r\n
\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport {\r\n CommerceListLine,\r\n ProductPrice,\r\n ReleasedProductType,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n // convertProductDimensionTypeToDimensionTypes,\r\n getFallbackImageUrl,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IWishlistItemActionMessageState } from '../citta-wishlist-items';\r\nimport { WishlistItemDimension } from './citta-wishlist-items-dimensions';\r\n\r\nexport interface IWishlistItemProps extends CommerceListLine {\r\n product: SimpleProduct;\r\n wishlistState: IWishlistItemActionMessageState;\r\n price?: ProductPrice;\r\n context: ICoreContext>;\r\n productUrl: string;\r\n imageSettings?: IImageSettings;\r\n removeFromWishlistText: string;\r\n isInStock: boolean;\r\n addToCartText: string;\r\n outOfStockText: string;\r\n index: number;\r\n itemKey: string;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n enableImageProductLink?: boolean;\r\n inventoryInformationLabel?: string;\r\n inventoryLabelClassName?: string;\r\n telemetryContent?: ITelemetryContent;\r\n handlers: {\r\n onAddToCart(product: SimpleProduct, itemKey: string): void;\r\n onRemoveItem(productId: number): void | undefined;\r\n onDismiss(): void;\r\n };\r\n resources: {\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n freePriceText: string;\r\n };\r\n}\r\n\r\nexport interface IWishlistItemViewProps {\r\n key: string;\r\n productImage: React.ReactNode;\r\n productLink: React.ReactNode;\r\n productDimensions?: React.ReactNode[];\r\n productPrice?: React.ReactNode;\r\n addToCartButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n productStatusMessage?: React.ReactNode;\r\n productName?: React.ReactNode;\r\n productAriaLabel?: string;\r\n entireProductLink?: string;\r\n inventoryInformation?: React.ReactNode;\r\n productUnitOfMeasure?: React.ReactNode;\r\n}\r\n\r\nconst _addItemToCart = (props: IWishlistItemProps): void => {\r\n const { product, itemKey, handlers } = props;\r\n const { onAddToCart } = handlers;\r\n\r\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\r\n};\r\n\r\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\r\n const { onRemoveItem } = props.handlers;\r\n const { RecordId } = props.product;\r\n\r\n onRemoveItem && RecordId && onRemoveItem(RecordId);\r\n};\r\n\r\nconst WishListItemActions = {\r\n addToCart: _addItemToCart,\r\n removeItem: _removeItemFromWishlist\r\n};\r\n\r\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\r\n if (!msdyn365Commerce.isBrowser) {\r\n return '';\r\n }\r\n\r\n const fullUrl = new URL(props.productUrl, window.location.href);\r\n // for (const dimension of props.product.Dimensions ?? []) {\r\n // const dimensionValue = dimension.DimensionValue?.Value;\r\n // if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\r\n // const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\r\n // fullUrl.searchParams.set(dimensionName, dimensionValue!);\r\n // }\r\n // }\r\n return fullUrl.href;\r\n // return updateProductUrl(productUrl, context, swatch);\r\n};\r\n\r\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\r\n const { product, price, context, resources } = props;\r\n\r\n const { Name, Dimensions } = product;\r\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\r\n\r\n let formattedPrice = 'Free';\r\n let dimensions = null;\r\n\r\n if (price) {\r\n formattedPrice =\r\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\r\n }\r\n\r\n if (Dimensions) {\r\n dimensions = Dimensions.map(productDimension => {\r\n switch (productDimension.DimensionTypeValue) {\r\n case 1:\r\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n case 3:\r\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n case 4:\r\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\r\n default:\r\n return '';\r\n }\r\n });\r\n }\r\n\r\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\r\n};\r\n\r\n/**\r\n * Renders a link to a product based on the given props.\r\n * @param input - Wishlist item props with the info about the product.\r\n * @param productUrl - The url to the product.\r\n * @returns React component with a link to a product.\r\n */\r\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\r\n const { telemetryContent } = input;\r\n const { RecordId: recordId, Name: productName } = input.product;\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\r\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const productPageUrlWithSwatch = productUrl;\r\n return (\r\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\r\n \r\n {productName}\r\n \r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Renders a product name box.\r\n * @param productName - The text to display.\r\n * @returns React component with a name of a product.\r\n */\r\nconst renderProductName = (productName: string) => {\r\n return
{productName}
;\r\n};\r\n\r\n/**\r\n * Renders inventory information.\r\n * @param inventoryInformationLabel - The text to display.\r\n * @param inventoryLabelClassName - The component class name.\r\n * @returns React component.\r\n */\r\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\r\n const inventoryCssName = inventoryLabelClassName\r\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\r\n : 'ms-wishlist-items__inventory-label';\r\n return (\r\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\r\n {inventoryInformationLabel}\r\n )\r\n );\r\n};\r\n\r\n/**\r\n * Renders add to cart button.\r\n * @param input - Wishlist item props with the configuration.\r\n * @returns React component.\r\n */\r\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\r\n const { isInStock, addToCartText, outOfStockText } = input;\r\n\r\n // Check if the product is service or not by product type.\r\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\r\n\r\n const addItemAction = React.useCallback(() => {\r\n WishListItemActions.addToCart(input);\r\n }, [input]);\r\n\r\n return (\r\n \r\n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Renders remove from wishlist button.\r\n * @param input - Wishlist item props with the configuration.\r\n * @returns React component.\r\n */\r\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\r\n const { removeFromWishlistText } = input;\r\n\r\n const removeItemAction = React.useCallback(() => {\r\n WishListItemActions.removeItem(input);\r\n }, [input]);\r\n\r\n return \r\n )\r\n }\r\n}\r\n\r\n\r\nconst _renderFreeShippingMessage = (props: IBuyboxViewProps & IBuyboxExtentionProps, productAttributes: AttributeValue[] | undefined) => {\r\n const freightItemAttr = productAttributes && productAttributes.find(attr => attr.Name === \"Freight Item\");\r\n if ((freightItemAttr && freightItemAttr.BooleanValue) || !props.config.freeShippingMessage) {\r\n return undefined;\r\n }\r\n /* @ts-ignore */\r\n const categoryPaths = props.data.categoryPaths && props.data.categoryPaths.result && props.data.categoryPaths.result;\r\n if (categoryPaths && categoryPaths[2] && categoryPaths[2].Name === \"Furniture\") {\r\n return undefined;\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nconst _renderOriginPrice = (props:any, productPrice:any) => {\r\n const defaultOrderQuantityLimitsFeatureConfig = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const originalPrice = Math.max(productPrice && productPrice.result && productPrice.result.BasePrice || 0, productPrice && productPrice.result && productPrice.result.TradeAgreementPrice || 0, productPrice && productPrice.result && productPrice.result.AdjustedPrice || 0);\r\n if(!originalPrice) {\r\n return undefined;\r\n }\r\n if(originalPrice && defaultOrderQuantityLimitsFeatureConfig === 'b2b'){\r\n return (
RRP:
${originalPrice.toFixed(2)}
);\r\n }\r\n return undefined\r\n}\r\n\r\nconst _renderEOQ = (props:any) => {\r\n const defaultOrderQuantityLimitsFeatureConfig = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\r\n const eoq = props.data?.product?.result?.Behavior?.MultipleOfQuantity;\r\n if(!eoq) {\r\n return undefined\r\n } \r\n if(eoq && defaultOrderQuantityLimitsFeatureConfig === 'b2b'){\r\n return(\r\n
EOQ:
{eoq}
\r\n )\r\n }\r\n return undefined\r\n\r\n} \r\n\r\n\r\nconst _getBuyboxProductPrice = (props: any, productPrice: any) => {\r\n const { id, typeName, context, resources } = props;\r\n return productPrice && (React.createElement(PriceComponent, { id: id, typeName: typeName, context: context, data: { price: productPrice }, freePriceText: resources.priceFree, originalPriceText: resources.originalPriceText, currentPriceText: resources.currentPriceText }));\r\n}\r\n\r\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {textBlocks[0]}\r\n \r\n );\r\n};\r\n\r\n\r\nconst _renderCartAndWishlistDiv = (props: IBuyboxViewProps & IBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | undefined => {\r\n if (!props.addToWishlist) {\r\n return undefined;\r\n }\r\n const addToCart = getBuyboxAddToCart(props, state, callbacks);\r\n const placebackorder = getBuyboxplacebackorderAddToCart(props, state, callbacks);\r\n const addToWishList = getBuyboxProductAddToWishlist(props, state, callbacks);\r\n const estimatedDateProperty = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'EstimatedDate'));\r\n\r\n const estimatedDateValue = estimatedDateProperty && estimatedDateProperty.Value && estimatedDateProperty.Value.StringValue;\r\n\r\n let estimatedDate = \"\";\r\n if (estimatedDateValue == undefined) {\r\n estimatedDate = \"\";\r\n } else {\r\n estimatedDate = estimatedDateValue;\r\n }\r\n const HSOConfigprop = props.data.channelConfiguration.result\r\n && props.data.channelConfiguration.result.ExtensionProperties\r\n && props.data.channelConfiguration.result!.ExtensionProperties.find((property => property.Key === 'HSOConfig'));\r\n\r\n let HSOConfig = HSOConfigprop && HSOConfigprop.Value && HSOConfigprop.Value.IntegerValue;\r\n if (HSOConfig == undefined) {\r\n HSOConfig = 0;\r\n }\r\n\r\n const StockThresholdprop = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'StockThreshold'));\r\n\r\n const StockThresholdpropval = StockThresholdprop && StockThresholdprop.Value && StockThresholdprop.Value.IntegerValue;\r\n let StockThreshold = 0;\r\n if (StockThresholdpropval != undefined) {\r\n StockThreshold = StockThresholdpropval;\r\n }\r\n\r\n const onhandpropval = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.AvailableQuantity\r\n let onhand = 0;\r\n if (onhandpropval != undefined) {\r\n onhand = Number(onhandpropval);\r\n }\r\n\r\n // return (\r\n //
\r\n // {estimatedDateValue ?\r\n //
Expected in Stock: {estimatedDateValue}
: null}\r\n // {addToCart && addToCart.errorBlock}\r\n // {addToWishList?.errorBlock}\r\n //
\r\n // {addToCart && addToCart.button}\r\n // {addToWishList?.button}\r\n //
\r\n //
\r\n // );\r\n\r\n if (HSOConfig === 0) {\r\n return (\r\n
\r\n {estimatedDateValue ?\r\n
Expected in Stock: {estimatedDateValue}
: null}\r\n {addToCart && addToCart.errorBlock}\r\n {addToWishList?.errorBlock}\r\n
\r\n {addToCart && addToCart.button}\r\n {addToWishList?.button}\r\n
\r\n
\r\n );\r\n } else {\r\n\r\n if (StockThreshold == 0) {\r\n return (\r\n
\r\n {estimatedDateValue ?\r\n
Expected in Stock: {estimatedDateValue}
: null}\r\n {addToCart && addToCart.errorBlock}\r\n {addToWishList?.errorBlock}\r\n
\r\n {addToCart && addToCart.button}\r\n {addToWishList?.button}\r\n
\r\n
\r\n );\r\n\r\n } else {\r\n if (onhand >= StockThreshold) {\r\n return (\r\n
\r\n {estimatedDateValue ?\r\n
Expected in Stock: {estimatedDateValue}
: null}\r\n {addToCart && addToCart.errorBlock}\r\n {addToWishList?.errorBlock}\r\n
\r\n {addToCart && addToCart.button}\r\n {addToWishList?.button}\r\n
\r\n
\r\n );\r\n\r\n } else {\r\n if (estimatedDate == \"\") {\r\n return (\r\n
\r\n {addToCart && addToCart.errorBlock}\r\n {addToWishList?.errorBlock}\r\n
\r\n {/* */}\r\n {addToCart && addToCart.button}\r\n {addToWishList?.button}\r\n
\r\n
\r\n );\r\n }\r\n else {\r\n return (\r\n
\r\n {estimatedDateValue ?\r\n
Expected in Stock: {estimatedDateValue}
: null}\r\n
\r\n {placebackorder && placebackorder.button}\r\n
\r\n
\r\n );\r\n }\r\n }\r\n\r\n }\r\n }\r\n};\r\n\r\nconst _renderBuyboxFindInStore = (props: IBuyboxViewProps & IBuyboxProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const findInStore = getBuyboxFindInStore(props, state, callbacks);\r\n const { productPrice } = props.data;\r\n const uomSet = productPrice && productPrice.result && productPrice.result.UnitOfMeasure || '';\r\n let AvailabilitypProductTitleisSet = false;\r\n if (uomSet == 'SET4' || uomSet == 'SET6') {\r\n AvailabilitypProductTitleisSet = true;\r\n }\r\n return (\r\n findInStore ? (\r\n \r\n {findInStore.storeSelector}\r\n {findInStore.heading}\r\n {findInStore.description}\r\n {findInStore.errors}\r\n {AvailabilitypProductTitleisSet ?

Availability: Please contact your local store for product availability.

: findInStore.button}\r\n {findInStore.modal}\r\n
) : null\r\n );\r\n};\r\n\r\n\r\n\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps, props: IBuyboxViewProps & IBuyboxExtentionProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const { ContainerProps } = configure;\r\n const dropdowns = getBuyboxProductConfigure(props, state, callbacks);\r\n if (dropdowns) {\r\n return (\r\n \r\n {dropdowns.dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\n\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\n\r\n\r\nconst _renderQuantity = (quantityComponent: IBuyboxProductQuantityViewProps, callbacks: IBuyboxCallbacks, props: IBuyboxProps, state: IBuyboxState, extentionResources: IBuyboxExtentionResources): JSX.Element | null => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const {\r\n resources,\r\n context: {\r\n app: {\r\n config: {\r\n maxQuantityForCartLineItem\r\n }\r\n }\r\n }\r\n } = props;\r\n\r\n const\r\n {\r\n quantity,\r\n } = state;\r\n\r\n const isProductAvailable: boolean = props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0] &&\r\n props.data.productAvailableQuantity.result[0].IsProductAvailable || false;\r\n \r\n const HSOConfigprop = props.data.channelConfiguration.result\r\n && props.data.channelConfiguration.result.ExtensionProperties\r\n && props.data.channelConfiguration.result!.ExtensionProperties.find((property => property.Key === 'HSOConfig'));\r\n\r\n let HSOConfig = HSOConfigprop && HSOConfigprop.Value && HSOConfigprop.Value.IntegerValue;\r\n if (HSOConfig == undefined) {\r\n HSOConfig = 0;\r\n }\r\n\r\n if (isProductAvailable) {\r\n const maxQuantity = props.data.productAvailableQuantity.result &&\r\n props.data.productAvailableQuantity.result[0] &&\r\n props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.AvailableQuantity || maxQuantityForCartLineItem;\r\n\r\n const onChange = (newValue: number) => {\r\n if (callbacks.updateQuantity) {\r\n callbacks.updateQuantity(newValue);\r\n }\r\n };\r\n const isB2B = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n const eoqQuantity = isB2B ? props.data?.product?.result?.Behavior?.MultipleOfQuantity : 1;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n \r\n );\r\n }\r\n else if (HSOConfig == 1) {\r\n const estimatedDateProperty = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'EstimatedDate'));\r\n const estimatedDateValue = estimatedDateProperty && estimatedDateProperty.Value && estimatedDateProperty.Value.StringValue;\r\n let estimatedDate = \"\";\r\n if (estimatedDateValue == undefined) {\r\n estimatedDate = \"\";\r\n } else {\r\n estimatedDate = estimatedDateValue;\r\n }\r\n const StockThresholdprop = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'StockThreshold'));\r\n const StockThresholdpropval = StockThresholdprop && StockThresholdprop.Value && StockThresholdprop.Value.IntegerValue;\r\n let StockThreshold = 0;\r\n if (StockThresholdpropval != undefined) {\r\n StockThreshold = StockThresholdpropval;\r\n }\r\n const onhandpropval = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.AvailableQuantity\r\n let onhand = 0;\r\n if (onhandpropval != undefined) {\r\n onhand = Number(onhandpropval);\r\n }\r\n if (StockThreshold != 0 && onhand < StockThreshold && estimatedDate != \"\") {\r\n const maxQuantity = props.data.productAvailableQuantity.result &&\r\n props.data.productAvailableQuantity.result[0] &&\r\n props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.AvailableQuantity || maxQuantityForCartLineItem;\r\n const onChange = (newValue: number) => {\r\n if (callbacks.updateQuantity) {\r\n callbacks.updateQuantity(newValue);\r\n }\r\n };\r\n const isB2B = props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits === 'b2b';\r\n const eoqQuantity = isB2B ? props.data?.product?.result?.Behavior?.MultipleOfQuantity : 1;\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n return ;\r\n};\r\n\r\nconst _renderSku = (configure: IBuyboxProductConfigureViewProps, props: IBuyboxViewProps & IBuyboxExtentionProps): JSX.Element | null => {\r\n const { ContainerProps } = configure;\r\n const { slots } = props;\r\n if (slots) {\r\n return (\r\n \r\n {slots.productSKU}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n\r\n\r\nconst _renderShopSimilarItem = (shopSimilarItem: any) => {\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n return (React.createElement(Node, Object.assign({}, ContainerProps),\r\n errors,\r\n input));\r\n};\r\n\r\nexport default BuyboxView;\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 * as React from 'react';\r\nimport { ICittaEnquireFormViewProps } from './citta-enquire-form';\r\n\r\nexport default (props: ICittaEnquireFormViewProps) => {\r\n return (\r\n
\r\n {props.EnquireButton}\r\n {props.ModalItem}\r\n
\r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IHeaderViewProps } from './citta-header';\r\n\r\nconst headerView: React.FC = props => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n HeaderTopBarRightContainer,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n MobileMenuLinksContainer\r\n } = props;\r\n return (\r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n {props.navIcon}\r\n {props.logo}\r\n \r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {_renderReactFragment(props.siteOptions)}\r\n {_renderDesktopAccountBlock(props)}\r\n {props.cartIcon}\r\n \r\n \r\n \r\n \r\n {_renderReactFragment(props.search)}\r\n { props.MobileMenuHeader }\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n {/* {_renderReactFragment(props.search)} */}\r\n { props.accountLinks ? props.accountLinks.map(link => link) : false }\r\n {_renderMobileAccountBlock(props)}\r\n { props.siteOptions }\r\n {/* { props.signInLink } */}\r\n {/* { props.signOutLink } */}\r\n \r\n \r\n \r\n {_renderReactFragment(props.categoryMenuBar)}\r\n {_renderReactFragment(props.customNavBar)}\r\n {_renderReactFragment(props.countryPicker)}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks,\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map(link => link) : false }\r\n {signOutLink}\r\n \r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks,\r\n } = props;\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map(link => link) : false }\r\n {signOutLink}\r\n \r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IPromoBannerViewProps } from './citta-promo-banner';\r\n\r\nconst PromoBannerView: React.FC = props => {\r\n const {\r\n promoBannerProps,\r\n contentProps,\r\n closeButton,\r\n bannerMessages,\r\n PromoBannerTextProps,\r\n PromoBannerLinksProps,\r\n CarouselProps,\r\n handleLinks,\r\n handleText\r\n } = props;\r\n const slides = bannerMessages && bannerMessages.map((message, index) => {\r\n if (message.links?.length) {\r\n return ( \r\n \r\n {message.text && }\r\n {message.links && message.links.length > 0 && }\r\n \r\n );\r\n }\r\n return (\r\n \r\n {message.text && }\r\n {message.links && message.links.length > 0 && }\r\n \r\n );\r\n });\r\n if(bannerMessages.length > 0){\r\n return (\r\n \r\n \r\n {closeButton}\r\n \r\n );\r\n }\r\n return null;\r\n};\r\nexport default PromoBannerView;\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\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n ITelemetryContent,\r\n Module,\r\n Node\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IWishlistItemViewProps } from '@msdyn365-commerce-modules/wishlist';\r\nimport { IWishlistItemsViewProps } from './citta-wishlist-items';\r\n\r\nconst WishlistItemsView: React.FC = props => {\r\n const {\r\n WishlistItems,\r\n status,\r\n statusMessage,\r\n heading,\r\n Products,\r\n products,\r\n Product,\r\n ProductDetails,\r\n ProductDimensions,\r\n telemetryContent,\r\n statusNotExistsMessage\r\n } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {statusNotExistsMessage}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {Products && products && products.length > 0 && (\r\n \r\n {products &&\r\n products.map(product => {\r\n return product && _renderItem(product, Product, ProductDimensions, ProductDetails, telemetryContent);\r\n })}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst _renderItem = (\r\n product: IWishlistItemViewProps,\r\n Product?: INodeProps,\r\n ProductDimensions?: INodeProps,\r\n ProductDetails?: INodeProps,\r\n telemetryContent?: ITelemetryContent\r\n): JSX.Element | null => {\r\n const {\r\n key,\r\n productImage,\r\n productLink,\r\n productPrice,\r\n productDimensions,\r\n addToCartButton,\r\n removeButton,\r\n productStatusMessage,\r\n entireProductLink,\r\n productName,\r\n productAriaLabel,\r\n inventoryInformation,\r\n productUnitOfMeasure\r\n } = product;\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', key);\r\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n if (entireProductLink) {\r\n return (\r\n \r\n \r\n {productImage}\r\n {productName}\r\n {productDimensions && ProductDimensions && (\r\n \r\n {productDimensions.map(dimension => {\r\n return dimension;\r\n })}\r\n \r\n )}\r\n {productPrice}\r\n {productUnitOfMeasure}\r\n \r\n {inventoryInformation}\r\n {addToCartButton}\r\n {removeButton}\r\n {productStatusMessage}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {productImage}\r\n {productLink}\r\n {productDimensions && ProductDimensions && (\r\n \r\n {productDimensions.map(dimension => {\r\n return dimension;\r\n })}\r\n \r\n )}\r\n {productPrice}\r\n {addToCartButton}\r\n {removeButton}\r\n {productStatusMessage}\r\n \r\n );\r\n};\r\n\r\nexport default WishlistItemsView;\r\n","import * as React from 'react';\r\nexport interface ILaybuyPriceBreakdownProps {\r\n title: React.ReactNode;\r\n price: number;\r\n imageUrl: string;\r\n}\r\n\r\n// tslint:disable-next-line:no-empty-interface\r\ninterface ILaybuyPriceBreakdownInfoState {\r\n laybuyPriceBreakdownInstalment: number | string;\r\n showLaybuyPriceBreakdownModal: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass LaybuyPriceBreakdown extends React.Component {\r\n constructor(props: ILaybuyPriceBreakdownProps, state: ILaybuyPriceBreakdownInfoState) {\r\n super(props);\r\n this.state = {\r\n laybuyPriceBreakdownInstalment: 0,\r\n showLaybuyPriceBreakdownModal: false,\r\n };\r\n this._toggleModal = this._toggleModal.bind(this);\r\n }\r\n\r\n public async componentDidMount(): Promise {\r\n if (this.props.price) {\r\n this._calculatelaybuyPriceBreakdownInstalment();\r\n }\r\n }\r\n public componentDidUpdate(): void {\r\n this._calculatelaybuyPriceBreakdownInstalment();\r\n }\r\n public render(): JSX.Element {\r\n // const TERMS_URL = 'https://www.laybuy.com/au/consumer-terms';\r\n const AMOUNT_OF_INSTALLMENTS = 6;\r\n // const ICON_PATH = this.props.imageUrl;\r\n const hasPrice: boolean = this.state.laybuyPriceBreakdownInstalment !== 0 ? true : false;\r\n const wrapperClassName = `laybuyPriceBreakdown-info ${hasPrice ? 'laybuyPriceBreakdown-loaded' : ''}`;\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{this.props.title}
\r\n
${this.props.price}
\r\n
pay in 6 weekly payments from ${(this.props.price / 6).toFixed(2)}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
EASY SIGN-UP
\r\n
Easy Sign-up: Just select \"Laybuy\" as your form of payment at checkout. All you need is a debit or credit card to create an account.
\r\n
\r\n
\r\n
\r\n
PAY IN {AMOUNT_OF_INSTALLMENTS} INSTALMENTS
\r\n
Choose your payment day, view your schedule and select pay now to complete your order.
\r\n
\r\n
\r\n
\r\n
INSTANT APPROVAL
\r\n
Once approved you will be able to complete purchases using Laybuy.
\r\n
\r\n
\r\n
\r\n
NOTHING EXTRA TO PAY
\r\n
Laybuy doesn't charge you any interest or upfront fees.
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n private _toggleModal(): void {\r\n this.setState({\r\n showLaybuyPriceBreakdownModal: !this.state.showLaybuyPriceBreakdownModal\r\n });\r\n }\r\n private _calculatelaybuyPriceBreakdownInstalment(): void {\r\n // compare product price to min and max laybuyPriceBreakdown prices\r\n const price = this.props.price ? this.props.price : null;\r\n const instalment = price ? (price / 6).toFixed(2) : 0;\r\n if (instalment !== this.state.laybuyPriceBreakdownInstalment) {\r\n this.setState({\r\n laybuyPriceBreakdownInstalment: price ? (price / 6).toFixed(2) : 0\r\n });\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default LaybuyPriceBreakdown;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n IBuyboxCallbacks,\r\n IBuyboxData,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { reaction } from 'mobx';\r\nimport * as React from 'react';\r\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\r\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from '../../../data-actions/accordion/get-attributes-for-selected-variant';\r\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxResources as IBuyboxExtentionResources } from '../definition-extensions/buybox.ext.props.autogenerated';\r\nimport { Quantity } from '../utilities/quantity';\r\nimport { IBuyBoxData } from './buybox.data';\r\nimport AfterPayInfo from './components/afterpay_info';\r\nimport Sidebar from './components/sidebar';\r\nimport { getBuyboxFindInStore } from './components/buybox-find-in-store';\r\nimport { getBuyboxProductConfigure } from './components/buybox-product-configure';\r\nimport { getBuyboxAddToCart, getBuyboxProductAddToWishlist, getBuyboxProductDescription } from './components/buybox-small-components';\r\nimport LaybuyPriceBreakdown from './components/layBuyPriceBreakdown';\r\nimport PriceComponent from '../../../components/price-component';\r\nexport class BuyboxView extends React.PureComponent & IBuyboxExtentionProps> {\r\n public componentDidMount() {\r\n setTimeout(function() {\r\n var containerEl = document.getElementsByClassName(\"msc-ss-carousel-vert-slide\")[0];\r\n var elements = document.getElementsByClassName(\"msc-ss-carousel-vert-item\");\r\n \r\n if (elements) {\r\n for (var i = 0; i< elements.length; i++) {\r\n elements[i].addEventListener('click', (e: any) => {\r\n containerEl.scrollTo({left: e.target.parentNode.closest(\".msc-ss-carousel-vert-item\").offsetLeft - 5, behavior: 'smooth'})\r\n })\r\n\r\n }\r\n }\r\n }, 3000);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const props = this.props;\r\n\r\n // @ts-ignore: Compiler not recognizing condition check for function params\r\n reaction(\r\n () => (props.data.product.result ? props.data.product.result.RecordId : null),\r\n () => {\r\n if (props.context && props.data.product.result) {\r\n const actionInput = new AttributesForSelectedVariantInput(\r\n props.data.product.result.RecordId,\r\n // @ts-ignore\r\n +props.context.actionContext.requestContext.apiSettings.channelId,\r\n props.data.product.result\r\n );\r\n \r\n getAttributesForSelectedVariant(actionInput, props.context.actionContext).catch(error => {\r\n props.telemetry.warning('Unable to update attributes for Product');\r\n props.telemetry.error(error);\r\n });\r\n }\r\n }\r\n );\r\n const configure= getBuyboxProductConfigure(props, props.state,props.callbacks);\r\n const { ModuleProps, MediaGalleryContainerProps, ProductInfoContainerProps, quantity, title, rating, callbacks, state, resources, slots } = props;\r\n const { productPrice } = props.data;\r\n\r\n const ChannelCountryRegionISOCode = props.data.channelConfiguration && props.data.channelConfiguration.result && props.data.channelConfiguration.result.ChannelCountryRegionISOCode;\r\n const prodPrice = productPrice && productPrice.result && productPrice.result.CustomerContextualPrice || 0;\r\n const productID = productPrice && productPrice.result && productPrice.result.ItemId || '';\r\n const isEnquireNow = productID.startsWith('CUS') || productID.startsWith('FWL') || productID.startsWith('EJP');\r\n const laybuyImageUrl = props.config.laybuyImageUrl ? props.config.laybuyImageUrl : 'https://files-ap-prod.cms.commerce.dynamics.com/cms/api/tstpxgfmq/binary/MB3JAm';\r\n const afterpayImage = props.config.afterpayImage ? props.config.afterpayImage : 'https://files-ap-prod.cms.commerce.dynamics.com/cms/api/hdrzssjspt/binary/MFsJR';\r\n const afterpaydesktopImg = props.config.afterpaydesktopImg ? props.config.afterpaydesktopImg : 'https://images-ap-prod.cms.commerce.dynamics.com/cms/api/hdrzssjspt/imageFileData/MFsHS';\r\n const afterpaymobileImg = props.config.afterpaymobileImg ? props.config.afterpaymobileImg : 'https://images-ap-prod.cms.commerce.dynamics.com/cms/api/hdrzssjspt/imageFileData/MFsHV';\r\n \r\n const price = productPrice && _getBuyboxProductPrice(props, productPrice.result);\r\n const hidePayLaterOptions = props.config.hidePayLaterOptions;\r\n const hideInStoreOptions = props.config.hideInStoreOptions;\r\n if (slots.giftCard) {\r\n return (\r\n \r\n {slots.giftCard}\r\n \r\n );\r\n }\r\n\r\n const productAttributes =props.data && props.data.productAttributes && props.data.productAttributes.result;\r\n const imageOrientationProperty = productAttributes &&\r\n props.data?.productAttributes?.result?.filter(p=> p.Name?.toLowerCase() === 'image orientation');\r\n const imageOrientation = imageOrientationProperty && imageOrientationProperty[0] ? imageOrientationProperty[0].TextValue! : 'portrait';\r\n\r\n const adjustedPrice = productPrice.result?.AdjustedPrice || 0;\r\n\r\n return (\r\n \r\n \r\n
\r\n {props.mediaGallery}\r\n
\r\n
\r\n \r\n {title}\r\n
{price}
\r\n { adjustedPrice < 2000 &&\r\n ChannelCountryRegionISOCode && (\r\n (isEnquireNow || hidePayLaterOptions) ?
:\r\n \r\n {ChannelCountryRegionISOCode && !isEnquireNow &&\r\n \r\n }\r\n {!isEnquireNow && ChannelCountryRegionISOCode === 'NZ' &&\r\n \r\n }\r\n )}\r\n {ChannelCountryRegionISOCode && (
{getBuyboxProductDescription(props)}
)}\r\n \r\n {ChannelCountryRegionISOCode && _renderTextBlock(props.slots.textBlocks)}\r\n {ChannelCountryRegionISOCode && slots.productAttributeLink}\r\n {ChannelCountryRegionISOCode && rating}\r\n {ChannelCountryRegionISOCode && quantity && _renderQuantity(quantity, callbacks, props, state, resources)}\r\n {ChannelCountryRegionISOCode && configure && _renderConfigure(configure, props, state, callbacks)}\r\n {ChannelCountryRegionISOCode && configure && _renderSku(configure, props)}\r\n {hideInStoreOptions ?
: (ChannelCountryRegionISOCode === 'NZ' &&_renderBuyboxFindInStore(props, state, callbacks))}\r\n {ChannelCountryRegionISOCode && _renderCartAndWishlistDiv(props, state, callbacks)}\r\n {ChannelCountryRegionISOCode && slots.productAttributeCompantionProduct}\r\n {ChannelCountryRegionISOCode && _renderFreeShippingMessage(props, productAttributes)}\r\n {ChannelCountryRegionISOCode === 'NZ' && slots.freightCharges}\r\n {ChannelCountryRegionISOCode && slots.productEOQ}\r\n\r\n {ChannelCountryRegionISOCode && slots.accordion}\r\n {ChannelCountryRegionISOCode && slots.productPDFSpecification}\r\n {ChannelCountryRegionISOCode && slots.lightbox}\r\n {ChannelCountryRegionISOCode && slots.pageLink}\r\n {ChannelCountryRegionISOCode && props.shopSimilarLook && _renderShopSimilarItem(props.shopSimilarLook)}\r\n \r\n \r\n );\r\n }\r\n}\r\nconst _renderFreeShippingMessage = (props: IBuyboxViewProps & IBuyboxExtentionProps, productAttributes: AttributeValue[] | undefined) => { \r\n const freightItemAttr = productAttributes && productAttributes.find(attr => attr.Name === \"Freight Item\");\r\n if ((freightItemAttr && freightItemAttr.BooleanValue) || !props.config.freeShippingMessage) {\r\n return undefined;\r\n }\r\n /* @ts-ignore */\r\n const categoryPaths = props.data.categoryPaths && props.data.categoryPaths.result && props.data.categoryPaths.result;\r\n if (categoryPaths && categoryPaths[2] && categoryPaths[2].Name === \"Furniture\") {\r\n return undefined;\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nconst _getBuyboxProductPrice = (props: any, productPrice: any) => {\r\n const { id, typeName, context, resources } = props;\r\n // @ts-ignore\r\n return productPrice && (React.createElement(PriceComponent, { id: id, typeName: typeName, context: context, data: { price: productPrice }, freePriceText: resources.priceFree, originalPriceText: resources.originalPriceText, currentPriceText: resources.currentPriceText }));\r\n}\r\n\r\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {textBlocks[0]}\r\n \r\n );\r\n};\r\n\r\nconst _renderCartAndWishlistDiv = (props: IBuyboxViewProps & IBuyboxExtentionProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | undefined => {\r\n if (!props.addToWishlist) {\r\n return undefined;\r\n }\r\n const addToCart = getBuyboxAddToCart(props, state, callbacks);\r\n const addToWishList = getBuyboxProductAddToWishlist(props, state, callbacks);\r\n const estimatedDateProperty = props.data.productAvailableQuantity\r\n && props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties\r\n && props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.ExtensionProperties.find((property => property.Key === 'EstimatedDate'));\r\n\r\n const estimatedDateValue = estimatedDateProperty && estimatedDateProperty.Value && estimatedDateProperty.Value.StringValue;\r\n return (\r\n
\r\n {estimatedDateValue ?\r\n
Expected in Stock: {estimatedDateValue}
: null}\r\n {addToCart && addToCart.errorBlock}\r\n {addToWishList?.errorBlock}\r\n
\r\n {addToCart && addToCart.button}\r\n {addToWishList?.button}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderBuyboxFindInStore = (props: IBuyboxViewProps & IBuyboxExtentionProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const findInStore = getBuyboxFindInStore(props, state, callbacks);\r\n const { productPrice } = props.data;\r\n const uomSet = productPrice && productPrice.result && productPrice.result.UnitOfMeasure || '';\r\n let AvailabilitypProductTitleisSet = false;\r\n if(uomSet == 'SET4' || uomSet == 'SET6'){\r\n AvailabilitypProductTitleisSet = true;\r\n }\r\n return (\r\n findInStore ? (\r\n \r\n {findInStore.storeSelector}\r\n {findInStore.heading}\r\n {findInStore.description}\r\n {findInStore.errors}\r\n {AvailabilitypProductTitleisSet?

Availability: Please contact your local store for product availability.

: findInStore.button}\r\n {findInStore.modal}\r\n
) : null\r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps, props: IBuyboxViewProps & IBuyboxExtentionProps, state: IBuyboxState, callbacks: IBuyboxCallbacks): JSX.Element | null => {\r\n const { ContainerProps } = configure;\r\n const dropdowns = getBuyboxProductConfigure(props, state, callbacks);\r\n if (dropdowns) {\r\n return (\r\n \r\n {dropdowns.dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst _renderSku = (configure: IBuyboxProductConfigureViewProps, props: IBuyboxViewProps & IBuyboxExtentionProps ): JSX.Element | null => {\r\n const { ContainerProps } = configure;\r\n const { slots } = props;\r\n if (slots) {\r\n return (\r\n \r\n {slots.productSKU}\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderShopSimilarItem = (shopSimilarItem: any) => {\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n return (React.createElement(Node, Object.assign({}, ContainerProps),\r\n errors,\r\n input));\r\n};\r\n\r\nconst _renderQuantity = (quantityComponent: IBuyboxProductQuantityViewProps, callbacks: IBuyboxCallbacks, props: IBuyboxProps, state: IBuyboxState, extentionResources: IBuyboxExtentionResources): JSX.Element | null => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const {\r\n resources,\r\n context: {\r\n app: {\r\n config: {\r\n maxQuantityForCartLineItem\r\n }\r\n }\r\n }\r\n } = props;\r\n\r\n const\r\n {\r\n quantity,\r\n } = state;\r\n\r\n const isProductAvailable: boolean = props.data.productAvailableQuantity.result && props.data.productAvailableQuantity.result[0] &&\r\n props.data.productAvailableQuantity.result[0].IsProductAvailable || false;\r\n\r\n if (isProductAvailable) {\r\n const maxQuantity = props.data.productAvailableQuantity.result &&\r\n props.data.productAvailableQuantity.result[0] &&\r\n props.data.productAvailableQuantity.result[0].ProductAvailableQuantity.AvailableQuantity || maxQuantityForCartLineItem;\r\n\r\n const onChange = (newValue: number) => {\r\n if (callbacks.updateQuantity) {\r\n callbacks.updateQuantity(newValue);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n \r\n );\r\n }\r\n return ;\r\n};\r\n\r\nexport default BuyboxView;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\r\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { format } from '@msdyn365-commerce/retail-proxy';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { CartIconComponent } from './components/cart-icon.component';\r\n// import { ContactInfoClass } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n\r\n/**\r\n *\r\n * Header component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass HeaderView extends React.Component> {\r\n constructor(props: IHeaderViewProps & IHeaderProps<{}>) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._stickyHeaderSetup();\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer\r\n } = this.props;\r\n return (\r\n \r\n \r\n \r\n {this._renderTopBarLeft()}\r\n {this._renderTopBarCenter()}\r\n {this._renderTopBarRight()}\r\n \r\n {this._renderCollapseMenu()}\r\n \r\n {this._renderReactFragment(this.props.menuBar)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _renderTopBarLeft = (): JSX.Element | null => {\r\n return (\r\n
\r\n {this.props.navIcon}\r\n {this.props.logo}\r\n {this._renderReactFragment(this.props.search)}\r\n
\r\n );\r\n }\r\n\r\n private _renderTopBarRight = (): JSX.Element | null => {\r\n const {Divider} = this.props;\r\n return (\r\n
\r\n {this._renderReactFragment(this.props.slots.countryPicker)}\r\n {this._renderReactFragment(this.props.slots.siteOptions)}\r\n {this._renderAccountBlock(false)}\r\n {this.props.wishListIconDesktop}\r\n \r\n
{this._renderCartIcon()}
\r\n
\r\n );\r\n }\r\n\r\n private _renderTopBarCenter = (): JSX.Element | null => {\r\n return (\r\n
\r\n {this._renderReactFragment(this.props.slots.cittaLogo)}\r\n
\r\n );\r\n }\r\n\r\n private _renderCartIcon = (): JSX.Element | null => {\r\n\r\n if (this.props.data.cart.result) {\r\n const cartItem = `${this.props.data.cart.result.totalItemsInCart}`;\r\n const itemCount = cartItem && parseInt(cartItem, 10) || 0;\r\n let label = this.props.resources.cartLabelNoItems || 'Shopping bag, having no items';\r\n if (itemCount === 1) {\r\n label = this.props.resources.cartLabelWithOneItem || 'Shopping bag, having one item';\r\n } else if (itemCount > 1) {\r\n label = this.props.resources.cartLabel && format(this.props.resources.cartLabel, cartItem) || `Shopping bag, having ${itemCount} items`;\r\n }\r\n return (\r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private _renderCollapseMenu = (): JSX.Element | null => {\r\n const {Divider, MobileMenuLinksContainer, mobileMenuCollapsed} = this.props;\r\n return (\r\n \r\n \r\n {this._renderReactFragment(this.props.search)}\r\n {this._renderMobileAccountBlock(true)}\r\n { this.props.wishListIconMobile }\r\n \r\n \r\n {this._renderReactFragment(this.props.menuBar)}\r\n \r\n );\r\n }\r\n\r\n private renderCustomerName = (): React.ReactChild => {\r\n const { accountInformation } = this.props.data;\r\n const customer = accountInformation && accountInformation.result;\r\n return (\r\n <>{customer ? customer.FirstName || customer.Name : ''}\r\n );\r\n };\r\n\r\n private _renderMobileAccountBlock = (renderForMobile: boolean): JSX.Element | null => {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n signOutLink,\r\n signInLink,\r\n accountLinks} = this.props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames('ms-header__drawer', AccountInfoDropdownParentContainer.className, renderForMobile ? 'account-mobile' : 'account-desktop');\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\r\n {signOutLink}\r\n
\r\n
\r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _renderAccountBlock = (renderForMobile: boolean): JSX.Element | null => {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks,\r\n } = this.props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n { accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false }\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n this.props.context.telemetry.error('Header content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _renderReactFragment = (items: React.ReactNode[]): JSX.Element | null => {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n }\r\n\r\n private _stickyHeaderSetup(): void {\r\n // Set header update methods to trigger on scroll\r\n window.onscroll = () => {\r\n this._updateHeader();\r\n };\r\n this._updateHeader();\r\n }\r\n\r\n private _updateHeader(): void {\r\n // Get heights of cookie and promotion banners\r\n const headerAlertsContainer: HTMLElement | null = document.querySelector('.ms-promo-banner');\r\n const bannerHeights = headerAlertsContainer ? headerAlertsContainer.offsetHeight : 0;\r\n\r\n // triggers opacity change of header\r\n const headerElem = document.querySelector('.ms-header');\r\n if (headerElem) {\r\n if (document.documentElement.scrollTop > bannerHeights) {\r\n headerElem.classList.add('lock-opaque');\r\n } else {\r\n headerElem.classList.remove('lock-opaque');\r\n }\r\n }\r\n\r\n // Update sticky header position and opacity\r\n const stickyHeader: HTMLElement | null = document.querySelector('.ms-header__desktop-view');\r\n const headerLogo: HTMLElement | null = document.querySelector('.ms-header__topbar-center');\r\n const headerLeftActionItem: HTMLElement | null = document.querySelector('.ms-header__topbar-left');\r\n const headerRightActionItem: HTMLElement | null = document.querySelector('.ms-header__topbar-right');\r\n\r\n if (stickyHeader && headerLogo && headerLeftActionItem && headerRightActionItem) {\r\n // Fix center sticky header\r\n const navStickyPos = headerLogo.offsetHeight + bannerHeights;\r\n if (document.documentElement.scrollTop > navStickyPos) {\r\n stickyHeader.classList.add('fixed');\r\n } else {\r\n stickyHeader.classList.remove('fixed');\r\n }\r\n\r\n // Fix edge sticky headers\r\n if (document.documentElement.scrollTop > bannerHeights) {\r\n headerLeftActionItem.classList.add('fixed');\r\n headerRightActionItem.classList.add('fixed');\r\n } else {\r\n headerLeftActionItem.classList.remove('fixed');\r\n headerRightActionItem.classList.remove('fixed');\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default HeaderView;\r\n","import { getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { format } from '@msdyn365-commerce-modules/utilities';\r\nimport { RatingComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, ICoreContext, IGridSettings, IImageData, IImageSettings, Image, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport React from 'react';\r\nimport PriceComponent from '../../../../components/price-component';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n}\r\n\r\nconst ProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText,\r\n ratingAriaLabel,\r\n typeName,\r\n id\r\n}) => {\r\n const product = data.product;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n let imageOrientation: string = '';\r\n if (product.AttributeValues!.length > 0) {\r\n product.AttributeValues!.map(property => {\r\n if (property.Name === 'Image Orientation') {\r\n imageOrientation = property.TextValue!;\r\n }\r\n });\r\n }\r\n const productUrl = getProductPageUrlSync(product.Name || '', product.RecordId, context && context.actionContext, undefined);\r\n const productImageSettings = imageOrientation === 'Landscape' ? getLandscapeImageSettings(imageSettings) : imageSettings;\r\n\r\n // Construct telemetry attribute to render\r\n const attribute = context\r\n && context.telemetry\r\n && context.telemetry.setTelemetryAttribute\r\n && context.telemetry.setTelemetryAttribute(product.RecordId.toString(), {\r\n pid: product.RecordId,\r\n pname: product.Name,\r\n mname: id\r\n }\r\n );\r\n return (\r\n \r\n
\r\n {renderProductPlacementImage(productImageSettings, context.request.gridSettings, product.PrimaryImageUrl, product.Name)}\r\n
\r\n
\r\n

{product.Name}

\r\n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText, currentPriceText)}\r\n {renderDescription(product.Description)}\r\n {renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nfunction renderLabel(name: string = '', price: string = '', rating?: number, ratingAriaLabel?: string): string {\r\n let ratingLabel = '';\r\n\r\n if (rating) {\r\n const roundedRating = rating.toFixed(2);\r\n ratingLabel = format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n\r\n return (`${name} ${price} ${ratingLabel}`);\r\n}\r\n\r\nfunction renderDescription(description?: string): JSX.Element | null {\r\n return

{description}

;\r\n}\r\n\r\nfunction renderRating(context: ICoreContext, typeName: string, id: string, avgRating?: number, totalRatings?: number, ariaLabel?: string): JSX.Element | null {\r\n if (!avgRating) {\r\n return null;\r\n }\r\n\r\n const numRatings = totalRatings && totalRatings.toString() || undefined;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction renderPrice(\r\n context: ICoreContext,\r\n typeName: string,\r\n id: string,\r\n basePrice?: number,\r\n adjustedPrice?: number,\r\n savingsText?: string,\r\n freePriceText?: string,\r\n originalPriceText?: string,\r\n currentPriceText?: string): JSX.Element | null {\r\n const price: ProductPrice = {\r\n BasePrice: basePrice,\r\n AdjustedPrice: adjustedPrice,\r\n CustomerContextualPrice: adjustedPrice\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction renderProductPlacementImage(imageSettings?: IImageSettings, gridSettings?: IGridSettings, imageUrl?: string, altText: string = ''): JSX.Element | null {\r\n if (!imageUrl || !gridSettings || !imageSettings) {\r\n return null;\r\n }\r\n const img: IImageData = {\r\n src: imageUrl,\r\n altText: altText\r\n };\r\n const imageProps = {\r\n gridSettings: gridSettings,\r\n imageSettings: imageSettings\r\n };\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction getLandscapeImageSettings(cmsImageSettings?: IImageSettings): IImageSettings {\r\n // tslint:disable-next-line: no-unnecessary-local-variable\r\n const landscapeImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=390&h=292&q=80&m=6&f=jpg', w: 390, h: 292 },\r\n sm: { q: 'w=528&h=396&q=80&m=6&f=jpg', w: 528, h: 396 },\r\n md: { q: 'w=640&h=479&q=80&m=6&f=jpg', w: 640, h: 479 },\r\n lg: { q: 'w=584&h=437&q=80&m=6&f=jpg', w: 584, h: 437 },\r\n xl: { q: 'w=702&h=526&q=80&m=6&f=jpg', w: 702, h: 526 }\r\n },\r\n disableLazyLoad: cmsImageSettings && cmsImageSettings.disableLazyLoad,\r\n lazyload: cmsImageSettings && cmsImageSettings.lazyload\r\n };\r\n\r\n return landscapeImageSettings;\r\n}\r\n\r\n// @ts-ignore\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'Product',\r\n { component: ProductCard }\r\n);","import { IProductCollectionViewProps } from '@msdyn365-commerce-modules/product-collection';\r\nimport { INodeProps, Module, Node, NodeTag } from '@msdyn365-commerce-modules/utilities';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\nimport {ProductComponent} from './components/product-collection-component';\r\n\r\nconst ProductCollectionView: React.FC = props => {\r\n const { heading, ProductCollectionContainer, products, SingleSlideCarouselComponentProps, GridComponentProps, isCarousel } = props;\r\n if (products) {\r\n return (\r\n \r\n {heading}\r\n {\r\n isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps,props.config.productCollection.products,props) :\r\n _renderGrid(GridComponentProps, props.config.productCollection.products,props)\r\n }\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst _renderCarousel = (carouselContainer: INodeProps, items: ProductSearchResult[],PropDetails: React.PropsWithChildren): JSX.Element => {\r\n const isMobile = PropDetails.context && PropDetails.context.request && PropDetails.context.request.device.Type === 'Mobile'\r\n let mobileCarouselContainer = {\r\n tag: 'ul' as NodeTag,\r\n className: 'ms-product-collection__custom-carousel'\r\n }\r\n return (\r\n \r\n {items && items.map((item,index)=>_renderProduct(item,PropDetails,index))}\r\n \r\n );\r\n};\r\n\r\nconst _renderGrid = (gridContainer: INodeProps, items: ProductSearchResult[],PropDetails: React.PropsWithChildren): JSX.Element => {\r\n return (\r\n \r\n {items && items.map((item,index)=>_renderProduct(item,PropDetails,index))}\r\n \r\n );\r\n};\r\n\r\nconst _renderProduct = (product: ProductSearchResult,PropDetails: React.PropsWithChildren,index: number): JSX.Element => {\r\n const liClass = 'ms-product-collection__item';\r\n const orientationClass = getImageOrientation(product) === 'Landscape'? 'product-placement__item-limage' : 'product-placement__item-pimage';\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n};\r\n\r\nfunction getImageOrientation(product: ProductSearchResult): string {\r\n let imageOrientation: string ='';\r\n if (product.AttributeValues!.length > 0) {\r\n product.AttributeValues!.map(property => {\r\n if (property.Name?.toLowerCase() === 'image orientation') {\r\n imageOrientation = property.TextValue!;\r\n }\r\n });\r\n }\r\n return imageOrientation;\r\n}\r\n\r\nexport default ProductCollectionView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBulkPurchaseViewProps } from './bulk-purchase';\n\n/**\n * Bulk purchase view.\n * @param props - Bulk purchase view props.\n * @returns React node with a module.\n */\nexport const BulkPurchaseViewComponent: React.FC = props => {\n return {props.content};\n};\n\nexport default BulkPurchaseViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {props.currentDistributor}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n {props.MobileMenuHeader}\n {_renderReactFragment(props.menuBar)}\n \n {props.accountLinks ? props.accountLinks.map(link => link) : false}\n {props.siteOptions}\n {props.wishListIconMobile}\n {props.signInLink}\n {props.signOutLink}\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map(link => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return {signInLink};\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './product-collection';\nimport { IProductCollectionResources } from './product-collection.props.autogenerated';\n\nconst ProductCollectionView: React.FC = props => {\n const {\n heading,\n ProductCollectionContainer,\n products,\n SingleSlideCarouselComponentProps,\n GridComponentProps,\n isCarousel,\n seeAllButton,\n resources\n } = props;\n\n if (products) {\n return (\n \n {heading}\n {seeAllButton}\n {isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products) : _renderGrid(GridComponentProps, products)}\n \n );\n }\n\n // If no products are retrieved and the list type is promotional, still render the module to keep the entry of promotion page\n if (props.config.productCollection.listType === 'promotional') {\n return (\n \n {heading}\n {seeAllButton}\n {_renderNoProduct(resources)}\n \n );\n }\n props.context.telemetry.error('Product collection content is empty, module wont render.');\n return null;\n};\n\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderNoProduct = (resources: IProductCollectionResources): JSX.Element => {\n return (\n \n

    {resources.noProductToRenderText}

    \n
    \n );\n};\n\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\n const { ProductContainer, productComponent } = product;\n\n return {productComponent};\n};\n\nexport default ProductCollectionView;\n","import { __assign } from \"tslib\";\r\nimport { msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nvar PriceComponentActions = {};\r\nvar Price = function (props: any) {\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n return (React.createElement(\"span\", { className: classnames('msc-price', props.className) }, showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)));\r\n};\r\nvar showStrikethroughPricing = function (props: any) {\r\n var originalPrice = getOriginalPrice(props);\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n return false;\r\n};\r\nvar getOriginalPrice = function (props: any) {\r\n return Math.max(props.data.price.BasePrice || 0, props.data.price.TradeAgreementPrice || 0, props.data.price.AdjustedPrice || 0);\r\n};\r\nvar renderCurrentPrice = function (props: any) {\r\n var initialPrice = formatCurrency(props, props.data.price.CustomerContextualPrice);\r\n return (React.createElement(\"span\", { className: 'msc-price__actual', itemProp: 'price' }, initialPrice));\r\n};\r\nvar formatCurrency = function (props: any, price: any) {\r\n if (price === undefined) {\r\n return undefined;\r\n }\r\n if (price === 0 && props.freePriceText) {\r\n return props.freePriceText;\r\n }\r\n let returnPrice = `$${price}`;\r\n try {\r\n var formatter = new Intl.NumberFormat(props.context.cultureFormatter.locale, {\r\n style: 'currency',\r\n currency: props.context.cultureFormatter.currencyCode,\r\n currencyDisplay: 'narrowSymbol'\r\n });\r\n returnPrice = formatter.format(price)\r\n\r\n } catch {}\r\n return returnPrice;\r\n};\r\nvar renderCurrentPriceWithOriginalPrice = function (props: any) {\r\n var originalPrice = getOriginalPrice(props);\r\n var initialPrice = formatCurrency(props, originalPrice);\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { className: 'sr-only' },\r\n ' ',\r\n props.originalPriceText,\r\n ' ',\r\n initialPrice,\r\n ' ',\r\n props.currentPriceText,\r\n ' ',\r\n renderCurrentPrice(props)),\r\n React.createElement(\"span\", { className: 'msc-price__strikethrough', \"aria-hidden\": 'true' }, initialPrice),\r\n React.createElement(\"span\", { \"aria-hidden\": 'true' }, renderCurrentPrice(props)),\r\n props.savingsText && React.createElement(\"span\", { className: 'msc-price__savings' }, props.savingsText)));\r\n};\r\n\r\nconst PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponent(\r\n 'Product',\r\n { component: msdyn365Commerce.createComponent('Price', __assign({ component: Price }, PriceComponentActions)) }\r\n);\r\n\r\nexport default PriceComponent","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddToCartComponent,\n AddToOrderTemplateComponent,\n AddToWishlistComponent,\n IAddToCartFailureResult,\n IAddToCartResources,\n IAddToOrderTemplateDialogResources,\n IDuplicateItemsWhenAddingToOrderTemplateDialogResources,\n IItemAddedToOrderTemplateDialogResources,\n IOrderTemplateActionErrorResult,\n IOrderTemplateNameDialogResources,\n IWishlistActionErrorResult,\n PriceComponent,\n RatingComponent\n} from '@msdyn365-commerce/components';\nimport { getUrlSync, IImageSettings } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductAvailableQuantity, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, DeliveryMode, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n Heading,\n ITelemetryContent,\n Node,\n Quantity,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n IBuyboxAddToCartViewProps,\n IBuyboxAddToOrderTemplateViewProps,\n IBuyboxAddToWishlistViewProps,\n IBuyboxCallbacks,\n IBuyboxCommonData,\n IBuyboxCommonResources,\n IBuyboxErrorBlockProps,\n IBuyboxExtentedProps,\n IBuyboxKeyInPriceViewProps,\n IBuyboxProductQuantityViewProps,\n IBuyboxShopSimilarLookViewProps,\n IBuyboxState,\n IProductDetails,\n ShopSimiliarButtonType\n} from './buyboxInterface';\nimport { getConfigureErrors, getGenericError, getQuantityError } from './utilities/error-utilities';\n\nconst _getClassNamePrefix = (typeName: string): string => {\n return typeName.toLocaleLowerCase() === 'quickview' ? 'ms-quickView' : 'ms-buybox';\n};\n\nexport function getBuyBoxInventoryLabel(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { typeName } = props;\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const productAvailableQuantity = props.data.productAvailableQuantity?.result ?? productDetails?.productAvailableQuantity;\n\n const className = _getClassNamePrefix(typeName);\n if (!productAvailableQuantity || !ArrayExtensions.hasElements(productAvailableQuantity)) {\n return undefined;\n }\n const shippingInventory = productAvailableQuantity.find(shipping => shipping.deliveryType === DeliveryMode.shipping);\n\n if (shippingInventory) {\n let inventoryClassName: string;\n if (shippingInventory.StockLevelCode) {\n inventoryClassName = `${className}__inventory-label ${className}__inventory-code-${shippingInventory.StockLevelCode.toLowerCase()}`;\n } else {\n inventoryClassName = `${className}__inventory-label`;\n }\n return (\n
    \n {shippingInventory.StockLevelLabel}\n
    \n );\n }\n\n return undefined;\n}\n\nexport function getBuyboxProductTitle(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const {\n config: { titleHeadingTag = 'h1' },\n typeName\n } = props;\n const className = _getClassNamePrefix(typeName);\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product ?? undefined;\n\n return product && ;\n}\n\nexport function getBuyboxProductDescription(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { typeName } = props;\n const className = _getClassNamePrefix(typeName);\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product ?? undefined;\n\n return product &&

    {product.Description}

    ;\n}\n\n/**\n * Gets the react node for product unit of measure display.\n * @param {IBuyboxExtentedProps} props The buybox module props.\n * @param {IProductDetails} productDetails The product details to be displyed in buybox.\n * @returns {React.ReactElement} The node representing markup for unit of measure component.\n */\nexport function getBuyboxProductUnitOfMeasure(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { typeName } = props;\n const className = _getClassNamePrefix(typeName);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (\n props.context.app.config &&\n (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none')\n ) {\n return undefined;\n }\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n props.telemetry.warning('Missing defult unit of measureor theproduct');\n return undefined;\n }\n\n return (\n
    \n {product.DefaultUnitOfMeasure}\n
    \n );\n}\n\nlet telemetryContent: ITelemetryContent;\n\n/**\n * On add to cart failed function.\n * @param props -The buybox module props.\n * @param state -The buybox module state.\n * @param callbacks -The buybox module callbacks.\n * @param defaultMinimumKeyInPrice -The default minimum key in price.\n * @param defaultMaximumKeyInPrice -The default maximum key in price.\n * @param cart -The cart state.\n * @param product -The simple product.\n * @param productAvailability -The product available quantity.\n * @returns Update error state.\n */\nconst onAddToCartFailed = (\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n defaultMinimumKeyInPrice: number,\n defaultMaximumKeyInPrice: number,\n cart: ICartState,\n product: SimpleProduct,\n productAvailability: ProductAvailableQuantity | undefined\n) => (result: IAddToCartFailureResult) => {\n let quantityErrorForState: string | undefined;\n let customAmountErrorForState: string | undefined;\n let otherErrorForState: string | undefined = getGenericError(\n result,\n cart,\n props.resources,\n props.context,\n product,\n productAvailability,\n undefined\n );\n\n if (result.failureReason === 'OUTOFSTOCK') {\n quantityErrorForState = result.failureReason === 'OUTOFSTOCK' ? getQuantityError(result.stockLeft, props.resources) : undefined;\n } else if (\n result.failureReason === 'CARTACTIONFAILED' &&\n result.cartActionResult &&\n (result.cartActionResult.substatus === 'MAXQUANTITY' || result.cartActionResult.substatus === 'QUANTITYLIMITS')\n ) {\n quantityErrorForState = getGenericError(result, cart, props.resources, props.context, product, productAvailability, undefined);\n otherErrorForState = undefined; // Prevent error duplication in otherError and quantityError\n }\n\n if (result.failureReason === 'INVALIDCUSTOMAMOUNT') {\n if (state.keyInPriceAmount === undefined || state.keyInPriceAmount < (props.config.minimumKeyInPrice || defaultMinimumKeyInPrice)) {\n const formatedAmountLimit = props.context.cultureFormatter.formatCurrency(\n props.config.minimumKeyInPrice || defaultMinimumKeyInPrice\n );\n customAmountErrorForState = props.resources.invalidSmallCustomAmountText.replace('{minAmount}', formatedAmountLimit);\n } else if (state.keyInPriceAmount > (props.config.maximumKeyInPrice || defaultMaximumKeyInPrice)) {\n const formatedAmountLimit = props.context.cultureFormatter.formatCurrency(\n props.config.maximumKeyInPrice || defaultMaximumKeyInPrice\n );\n customAmountErrorForState = props.resources.invalidLargeCustomAmountText.replace('{maxAmount}', formatedAmountLimit);\n }\n }\n\n callbacks.updateErrorState({\n errorHost: 'ADDTOCART',\n quantityError: quantityErrorForState,\n configureErrors:\n result.failureReason === 'MISSINGDIMENSION'\n ? getConfigureErrors(result.missingDimensions, props.resources, product?.IsGiftCard)\n : {},\n customAmountError: customAmountErrorForState,\n otherError: otherErrorForState\n });\n};\n\n/**\n * On Item Add To Cart function.\n * @param typeName -Type name.\n * @param callbacks -Buybox Callbacks.\n * @returns Change modal open.\n */\nconst onItemAddedToCart = (typeName: string, callbacks: IBuyboxCallbacks) => (result: ICartActionResult) => {\n if (typeName === 'quickview') {\n callbacks.changeModalOpen(false);\n }\n};\n\nexport function getBuyboxAddToCart(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n defaultMinimumKeyInPrice: number,\n defaultMaximumKeyInPrice: number,\n productDetails?: IProductDetails,\n hasAvailableProducts?: boolean\n): IBuyboxAddToCartViewProps {\n const { id, typeName, context, resources } = props;\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const product = props.data.product?.result ?? productDetails?.product;\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const cart = props.data.cart?.result ?? productDetails?.cart;\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const productAvailableQuantity = props.data.productAvailableQuantity?.result ?? productDetails?.productAvailableQuantity;\n\n const {\n quantity,\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\n selectedProduct,\n isUpdatingDimension,\n isUpdatingDeliveryOptions,\n isServiceItem\n } = state;\n\n const productAvailability = state.productAvailableQuantity\n ? state.productAvailableQuantity.ProductAvailableQuantity\n : productAvailableQuantity && productAvailableQuantity.length > 0\n ? productAvailableQuantity[0].ProductAvailableQuantity\n : undefined;\n\n const dialogStrings: IAddToCartResources = {\n goToCartText: resources.buyBoxGoToCartText,\n continueShoppingText: resources.buyBoxContinueShoppingText,\n closeNotificationLabel: resources.closeNotificationLabel,\n headerItemOneText: resources.buyBoxSingleItemText,\n headerItemFormatText: resources.buyBoxMultiLineItemFormatText,\n headerMessageText: resources.buyBoxHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText,\n addedQuantityText: resources.addedQuantityText\n };\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n lg: { q: 'w=240&h=240&m=6', w: 0, h: 0 },\n xl: { q: 'w=240&h=240&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const isProductQuantityLoading = typeName !== 'quickview' && props.data.productAvailableQuantity.status === 'LOADING';\n if (isProductQuantityLoading) {\n callbacks.changeUpdatingDimension(false);\n }\n\n const isLoadingDeliveryOptions = typeName !== 'quickview' && props.data.deliveryOptions?.status === 'LOADING';\n if (isLoadingDeliveryOptions && callbacks.changeUpdatingDeliveryOptions) {\n callbacks.changeUpdatingDeliveryOptions(false);\n }\n\n telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.typeName, props.telemetry);\n\n // Check if the product delivery mode is electronic\n const emailDeliveryModeCode = props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode;\n // from quickview we are not getting deliveryoptions in props.data hence getting it from quickview state\n const deliveryOptions = typeName === 'quickview' ? state.productDeliveryOptions : props.data.deliveryOptions?.result;\n const isEmailDelivery =\n ArrayExtensions.hasElements(deliveryOptions?.DeliveryOptions) && deliveryOptions!.DeliveryOptions[0].Code === emailDeliveryModeCode;\n const className = _getClassNamePrefix(typeName);\n const isDisabled = isUpdatingDimension && typeName === 'quickview';\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n return {\n ContainerProps: {\n className: `${className}__add-to-cart-container`\n },\n button: product && (\n \n ),\n errorBlock: (\n \n )\n };\n}\n\n/**\n * Get the React.ReactElement contains price.\n * @param props - The IBuyboxExtentedProps.\n * @param state - The buybox state.\n * @returns The React.ReactElement.\n */\nexport function getBuyboxProductPrice(props: IBuyboxExtentedProps, state: IBuyboxState): React.ReactElement | undefined {\n const { id, typeName, context, resources } = props;\n\n return (\n state.productPrice && (\n featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n )?.IsEnabled\n }\n isSalesAgreementPriceFeatureEnabled={\n props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSalesAgreementPriceSupportFeature'\n )?.IsEnabled\n }\n priceResources={{\n priceRangeSeparator: resources.priceRangeSeparator,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n salesAgreementExpirationDatePrompt: resources.salesAgreementExpirationDatePrompt,\n salesAgreementCommittedQuantityPrompt: resources.salesAgreementCommittedQuantityPrompt,\n salesAgreementRemainingQuantityPrompt: resources.salesAgreementRemainingQuantityPrompt\n }}\n freePriceText={resources.priceFree}\n originalPriceText={resources.originalPriceText}\n currentPriceText={resources.currentPriceText}\n />\n )\n );\n}\n\nexport function getBuyboxProductRating(\n props: IBuyboxExtentedProps,\n productDetails?: IProductDetails\n): React.ReactElement | undefined {\n const { id, typeName, context, resources } = props;\n\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.\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const ratingsSummary = props.data.ratingsSummary?.result ?? productDetails?.ratingsSummary;\n if (!ratingsSummary || !ratingsSummary.averageRating) {\n return
    ;\n }\n const ratingComponent = (\n \n );\n\n return ratingComponent;\n}\n\nfunction generateAddToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IAddToOrderTemplateDialogResources {\n return {\n addToOrderTemplateHeader: resources.addToOrderTemplateHeader,\n\n noOrderTemplatesMessage: resources.noOrderTemplatesMessage,\n noOrderTemplatesDescription: resources.noOrderTemplatesDescription,\n\n createAnOrderTemplateButtonText: resources.createAnOrderTemplateButtonText,\n createNewOrderTemplateButtonText: resources.createNewOrderTemplateButtonText,\n cancelOrderTemplateCreationButtonText: resources.cancelOrderTemplateCreationButtonText,\n\n selectTemplatesText: resources.selectTemplatesText,\n addToTemplateButtonText: resources.addToTemplateButtonText,\n lineItemsText: resources.lineItemsText\n };\n}\n\nfunction generateOrderTemplateNameDialogResources(resources: IBuyboxCommonResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n}\n\nfunction generateItemAddedToOrderTemplateDialogResources(resources: IBuyboxCommonResources): IItemAddedToOrderTemplateDialogResources {\n return {\n viewOrderTemplateButtonText: resources.viewOrderTemplateButtonText,\n continueShoppingButtonText: resources.continueShoppingButtonText,\n itemAddedToOrderTemplateHeaderItemOneText: resources.itemAddedToOrderTemplateHeaderItemOneText,\n itemAddedToOrderTemplateHeaderItemFormatText: resources.itemAddedToOrderTemplateHeaderItemFormatText,\n itemAddedToOrderTemplateHeaderMessageText: resources.itemAddedToOrderTemplateHeaderMessageText,\n freePriceText: resources.priceFree,\n originalPriceText: resources.originalPriceText,\n currentPriceText: resources.currentPriceText\n };\n}\n\nfunction generateDuplicateItemsWhenAddingToOrderTemplateDialogResources(\n resources: IBuyboxCommonResources\n): IDuplicateItemsWhenAddingToOrderTemplateDialogResources {\n return {\n duplicatedProductsHeader: resources.duplicatedProductsHeader,\n duplicatedProductsDescription: resources.duplicatedProductsDescription,\n updateQuantityButtonText: resources.updateQuantityButtonText,\n cancelDuplicateItemsButtonText: resources.cancelDuplicateItemsButtonText\n };\n}\n\n/**\n * Add to order template failed function.\n * @param callbacks -Buybox callbacks.\n * @param resources -Buybox common resources.\n * @param product -Simple product.\n * @returns Update error state.\n */\nconst onAddToOrderTemplateFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\n result: IOrderTemplateActionErrorResult\n) => {\n callbacks.updateErrorState({\n errorHost: 'ORDER_TEMPLATE',\n configureErrors:\n result.status === 'MISSING_DIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\n });\n};\n\nexport function getBuyboxProductAddToOrderTemplate(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n isMultipleCatalogsFeatureEnabled?: boolean,\n catalogId?: number\n): IBuyboxAddToOrderTemplateViewProps | undefined {\n const {\n id,\n typeName,\n context,\n data: {\n orderTemplates: { result: orderTemplates },\n customerInformation: { result: customerInformation }\n },\n resources\n } = props;\n\n const product = props.data.product?.result;\n\n const {\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\n quantity\n } = state;\n\n // If custom amount is selected, add-to-orderTemplate is disabled\n if (state.isCustomPriceSelected) {\n return undefined;\n }\n const className = _getClassNamePrefix(typeName);\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n\n return {\n ContainerProps: {\n className: `${className}__add-to-order-template-container`\n },\n button: product && orderTemplates && (\n \n ),\n errorBlock: (\n \n )\n };\n}\n\n/**\n * Renders add to comparison button for the given product.\n * @param productComparisonButton - React element of the button.\n * @param product - Product information.\n * @param catalogId - Current catalog.\n * @param state - Buybox state.\n * @returns React element of the button.\n */\nexport function getBuyboxProductComparisonButton(\n productComparisonButton: React.ReactNode,\n product: SimpleProduct,\n catalogId: number,\n state: IBuyboxState\n): JSX.Element | undefined {\n if (state.isCustomPriceSelected) {\n return undefined;\n }\n\n validateCatalogId(catalogId);\n return React.cloneElement(productComparisonButton as React.ReactElement, { product, catalogId });\n}\n\n/**\n * Add to wishlist failed function.\n * @param callbacks -Buybox callbacks.\n * @param resources -Buybox resources.\n * @param product -Simple product.\n * @returns Update error state.\n */\nconst onAddToWishlistFailed = (callbacks: IBuyboxCallbacks, resources: IBuyboxCommonResources, product: SimpleProduct | undefined) => (\n result: IWishlistActionErrorResult\n) => {\n callbacks.updateErrorState({\n errorHost: 'WISHLIST',\n configureErrors:\n result.status === 'MISSINGDIMENSION' ? getConfigureErrors(result.missingDimensions, resources, product?.IsGiftCard) : {}\n });\n};\n\nexport function getBuyboxProductAddToWishlist(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks,\n productDetails?: IProductDetails\n): IBuyboxAddToWishlistViewProps | undefined {\n const {\n id,\n typeName,\n context,\n data: {\n wishlists: { result: wishlists }\n },\n resources\n } = props;\n\n const product = props.data.product?.result ? props.data.product.result : productDetails?.product;\n\n const {\n errorState: { configureErrors, quantityError, customAmountError, otherError, errorHost },\n selectedProduct\n } = state;\n\n // If custom amount is selected, add-to-wishlist is disabled\n if (state.isCustomPriceSelected) {\n return undefined;\n }\n\n const className = _getClassNamePrefix(typeName);\n const { enableHidePdpRepeatingErrors } = props.context.request.features;\n return {\n ContainerProps: {\n className: `${className}__add-to-wishlist-container`\n },\n button: product && (\n \n ),\n errorBlock: (\n \n )\n };\n}\n\n/**\n * On quantity change function.\n * @param callbacks -Buybox callbacks.\n * @returns Update quantity.\n */\nconst onQuantityChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number) => {\n if (callbacks.updateQuantity) {\n callbacks.updateQuantity(newValue);\n }\n};\n\nexport function getBuyboxProductQuantity(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): IBuyboxProductQuantityViewProps {\n const { resources, typeName } = props;\n\n const {\n quantity,\n min,\n max,\n errorState: { quantityError }\n } = state;\n\n const className = _getClassNamePrefix(typeName);\n\n return {\n ContainerProps: {\n className: `${className}__quantity`\n },\n LabelContainerProps: {\n tag: 'label',\n className: `${className}__product-quantity-label`,\n htmlFor: `${className}__product-quantity-input`\n },\n heading:
    {resources.productQuantityHeading}
    ,\n errors: quantityError && (\n \n \n ),\n input: (\n \n )\n };\n}\n\nexport function getBuyboxShopSimilarButton(\n props: IBuyboxExtentedProps,\n buttonType: ShopSimiliarButtonType\n): IBuyboxShopSimilarLookViewProps {\n const { resources, context, typeName } = props;\n const product = props.data.product?.result;\n\n const className = _getClassNamePrefix(typeName);\n const navigationUrl = (shopSimiliarButtonType: ShopSimiliarButtonType) => () => {\n const searchURL = getUrlSync('search', context && context.actionContext);\n const separator = searchURL!.includes('?') ? '&' : '?';\n document.location.href = `${searchURL}${separator}productId=${product &&\n product.RecordId}&recommendation=${shopSimiliarButtonType}`;\n };\n const telemetryText =\n buttonType === ShopSimiliarButtonType.Looks ? TelemetryConstant.ShopSimliarLooks : TelemetryConstant.ShopSimliarDescription;\n const payLoad = getPayloadObject('click', telemetryContent, telemetryText);\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\n const text = buttonType === ShopSimiliarButtonType.Looks ? resources.shopSimilarLooksText : resources.shopSimilarDescriptionText;\n\n return {\n ContainerProps: {\n className: `${className}__shopsimilar${buttonType}`\n },\n input: (\n \n {text}\n \n )\n };\n}\n\n/**\n * On price change function.\n * @param callbacks -Buybox callbacks.\n * @returns Update key in price.\n */\nconst onPriceChangeHandler = (callbacks: IBuyboxCallbacks) => (event: React.ChangeEvent) => {\n const value = event.currentTarget.value;\n callbacks.updateKeyInPrice(value.length > 0 ? Number(value) : Number.parseFloat(value));\n};\n\nexport function getBuyboxKeyInPrice(\n props: IBuyboxExtentedProps,\n state: IBuyboxState,\n callbacks: IBuyboxCallbacks\n): IBuyboxKeyInPriceViewProps {\n const { config, resources } = props;\n\n const {\n errorState: {}\n } = state;\n\n const className = _getClassNamePrefix(props.typeName);\n\n return {\n ContainerProps: {\n className: `${className}__key_in_price`\n },\n LabelContainerProps: {\n tag: 'label',\n className: `${className}__key_in_price-label`,\n htmlFor: `${className}__key_in_price`\n },\n heading:
    {resources.buyboxKeyInPriceLabelHeading}
    ,\n input: (\n \n )\n };\n}\n\nexport const BuyboxErrorBlock: React.FC = ({\n showError,\n configureErrors,\n quantityError,\n customAmountError,\n otherError,\n resources,\n enableHidePdpRepeatingErrors\n}) => {\n let errorMessages: (string | undefined)[] = [];\n\n // skip configuration repeating errors when flight is enabled\n if (!enableHidePdpRepeatingErrors) {\n errorMessages = Object.values(configureErrors).filter(message => message !== undefined);\n }\n\n // skip quantity repeating errors when flight is enabled\n if (quantityError && !enableHidePdpRepeatingErrors) {\n errorMessages.push(quantityError);\n }\n\n if (customAmountError) {\n errorMessages.push(customAmountError);\n }\n\n if (otherError) {\n errorMessages.push(otherError);\n }\n\n return (\n 0} color='danger' assertive aria-label={resources.buyboxErrorMessageHeader}>\n \n {errorMessages.map((message, index) => {\n return (\n
    \n {message}\n
    \n );\n })}\n
    \n );\n};\n\nexport function getQuantityLimitsMessages(\n props: IBuyboxExtentedProps,\n state: IBuyboxState\n): React.ReactElement | undefined {\n const { resources } = props;\n\n const { min, max } = state;\n\n if (!_isOrderQuantityLimitsFeatureEnabled(props) && !_isChannelLimitsFeatureEnabled(props)) {\n return undefined;\n }\n\n return (\n \n {_renderMaxLabel(props, max, resources.maxQuantityText)}\n {_renderMinLabel(props, min, resources.minQuantityText)}\n \n );\n}\n\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\nexport const EcommerceQuantityLimitConfigurationsFeatureName: string =\n 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature';\nexport const RevertToSiteBuilderOrderQuantityLimitsSettingsCRTFeatureName: string = 'RevertToSiteBuilderOrderQuantityLimitsSettings';\n\nconst _renderMaxLabel = (\n props: IBuyboxExtentedProps,\n max: number | undefined,\n maxQuantityText: string\n): React.ReactElement | undefined => {\n const { resources, typeName } = props;\n const className = _getClassNamePrefix(typeName);\n if (max && max !== 0 && max !== Number.MAX_VALUE) {\n return (\n

    \n {resources.informationIconText}\n