{"version":3,"file":"static/js/11.d1eff8f21149b13b7f41.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/nos-header/components/nos-header-preferred-store.tsx?a987","webpack://Msdyn365.Commerce.Online/./src/modules/nos-header/components/logo.tsx?8821","webpack://Msdyn365.Commerce.Online/./src/modules/nos-header/components/nav-icon.tsx?6964","webpack://Msdyn365.Commerce.Online/./src/modules/nos-header/nos-header.tsx?7740","webpack://Msdyn365.Commerce.Online/./src/modules/nos-header/nos-header.view.tsx?1fc4","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/addtocart.component.tsx?ee72","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/components/product.component.tsx?4ada","webpack://Msdyn365.Commerce.Online/./src/themes/nos/views/search-result-container.view.tsx?77b3","webpack://Msdyn365.Commerce.Online/./src/modules/active-image-utilities/active-product.tsx?69b2","webpack://Msdyn365.Commerce.Online/./src/modules/active-image-utilities/additional-content.tsx?6946","webpack://Msdyn365.Commerce.Online/./src/modules/active-image-utilities/image-mapper.tsx?dd86","webpack://Msdyn365.Commerce.Online/./src/modules/active-image/active-image.tsx?00d3","webpack://Msdyn365.Commerce.Online/./src/modules/active-image/active-image.view.tsx?a935","webpack://Msdyn365.Commerce.Online/./src/validate-cart.ts?cd50","webpack://Msdyn365.Commerce.Online/./src/Common/get-product.ts?0a21","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://Msdyn365.Commerce.Online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/logo.tsx?f27e","webpack://Msdyn365.Commerce.Online/./src/modules/header/components/nav-icon.tsx?2475","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.tsx?e91a","webpack://Msdyn365.Commerce.Online/./src/modules/header/header.view.tsx?cf0f","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/close-button.tsx?063b","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/links.tsx?2587","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/text.tsx?782b","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/promo-banner.tsx?9ee9","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/promo-banner.view.tsx?7f77","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/components/quick-order-drawer.tsx?f8b4","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/components/quick-order-form.tsx?eb54","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/components/quick-order-product.ts?7702","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/components/quick-order-table/components/quick-order-table-header-component.tsx?49e7","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/components/quick-order-table/components/quick-order-table-row-component.tsx?e487","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/components/quick-order-table/quick-order-table-component.tsx?46c1","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/quick-order.tsx?ef21","webpack://Msdyn365.Commerce.Online/./src/modules/quick-order/quick-order.view.tsx?a96d","webpack://Msdyn365.Commerce.Online/./src/actions/submit-user-review.ts?ac78","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-user-review-input.ts?3afb","webpack://Msdyn365.Commerce.Online/./src/common/review-modal.tsx?54a9","webpack://Msdyn365.Commerce.Online/./src/common/rnrInterface.ts?f761","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/component/components.tsx?f324","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.tsx?f6bc","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.view.tsx?5bff","webpack://Msdyn365.Commerce.Online/./src/actions/report-review-concern.ts?bf43","webpack://Msdyn365.Commerce.Online/./src/actions/submit-helpfulness-vote.ts?a8ab","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/report-review-concern-input.ts?b071","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/components.tsx?033b","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/report-review-modal.tsx?53d3","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/review-card.tsx?6bbd","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-helpfulness-vote-input.ts?07aa","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.tsx?37e8","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.view.tsx?0e4a","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/components/components.tsx?3575","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.tsx?9afc","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.view.tsx?b867","webpack://Msdyn365.Commerce.Online/./src/modules/video-player/components/additional-content.tsx?b368","webpack://Msdyn365.Commerce.Online/./src/modules/video-player/video-player.tsx?53e5","webpack://Msdyn365.Commerce.Online/./src/modules/video-player/video-player.view.tsx?fedb","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?15c5","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-item.tsx?d2da","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/components/wishlist-items-status-message.tsx?cdb3","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.tsx?df8b","webpack://Msdyn365.Commerce.Online/./src/modules/wishlist-items/wishlist-items.view.tsx?4d80","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product-v2.component.tsx?d155","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://Msdyn365.Commerce.Online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container-v2.view.tsx?6eaa","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { INosHeaderData } from '../nos-header.data';\r\nimport { INosHeaderProps } from '../nos-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 private readonly modalCloseButtonRef: React.RefObject = React.createRef();\r\n\r\n /**\r\n * Handle click on the store selector.\r\n * @returns : Promise void.\r\n */\r\n public handleClick = () => {\r\n return this._findPreferredStoreOnClick(this.props);\r\n };\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\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\r\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\r\n const storeName =\r\n 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 {storeName}\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 _findPreferredStoreOnClick(props: INosHeaderProps): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n modules\r\n } = props;\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n await storeSelectorStateManager\r\n .openDialog({\r\n id: storeSelectorId,\r\n showMapViewLink: true,\r\n parentElementRef: this.modalCloseButtonRef,\r\n onLocationSelected: orgUnitLocation => {\r\n return Promise.resolve();\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 set preferred store');\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default HeaderPreferredStore;\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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\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?: ILinkData;\r\n className?: string;\r\n telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n typeName?: string;\r\n}\r\n\r\nexport interface ILinkData {\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: 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 private readonly 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\r\n public render(): JSX.Element {\r\n return
{this._renderLogo(this.props)}
;\r\n }\r\n\r\n private _renderLogo(config: ILogoProps): JSX.Element {\r\n if (config.link && config.link.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {this._renderImage(config)}\r\n \r\n );\r\n }\r\n return this._renderImage(config);\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\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;\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 Msdyn365 from '@msdyn365-commerce/core';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { INosHeaderResources } from '../nos-header.props.autogenerated';\r\n\r\nexport interface INavIconProps {\r\n resources: INosHeaderResources;\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.PureComponent {\r\n private readonly 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}\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 { CartIconComponent, 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 { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n KeyCodes,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n onTelemetryClick,\r\n Popover,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { HeaderPreferredStore, Logo } from './components';\r\nimport { INosHeaderData } from './nos-header.data';\r\nimport { INosHeaderProps, INosHeaderResources, IMyAccountLinksData } from './nos-header.props.autogenerated';\r\n\r\nexport interface IHeaderState {\r\n mobileMenuCollapsed: boolean;\r\n signinPopoverOpen: boolean;\r\n hasSigninerror?: boolean;\r\n}\r\n\r\nexport interface IHeaderViewProps extends INosHeaderProps, IHeaderState {\r\n logo: React.ReactNode;\r\n wishListIconDesktop: React.ReactNode;\r\n wishListIconMobile: React.ReactNode;\r\n cartIcon: React.ReactNode;\r\n menuBar: React.ReactNode[];\r\n className: string;\r\n search: React.ReactNode[];\r\n siteOptions: 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 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 switchCustomerLink?: React.ReactNode;\r\n isOBORequest?: boolean;\r\n accountLinks?: React.ReactNode[];\r\n preferredStore?: React.ReactNode;\r\n shouldHideShowSignInSignOutLink?: boolean;\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 readonly popOverRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private cart: ICartState | undefined;\r\n\r\n /**\r\n * The signed-in user name displayed in the header bar\r\n */\r\n @computed public get displayName(): Readonly {\r\n const user = this.props.context.request.user;\r\n return user?.isOBORequest ? this.workerName : this.customerName;\r\n }\r\n\r\n /**\r\n * OBO scenario. The name of worker who shops on behalf of customer.\r\n */\r\n @computed public get workerName(): Readonly {\r\n const user = this.props.context.request.user;\r\n return user?.firstName || user?.name;\r\n }\r\n\r\n @computed public get customerName(): Readonly {\r\n const customer = this.props.data.accountInformation?.result;\r\n return customer ? customer.FirstName || customer.Name : undefined;\r\n }\r\n\r\n public constructor(props: INosHeaderProps) {\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 hasSigninerror: false\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\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 const {\r\n context: {\r\n request: { user }\r\n },\r\n resources: { signUpCustomerNotFoundTitle, signUpMultipleCustomerFoundTitle, closeNotificationLabel }\r\n } = this.props;\r\n\r\n const signinNotificationError = this._getSigninNotification(user, signUpMultipleCustomerFoundTitle, signUpCustomerNotFoundTitle);\r\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\r\n // For signup show simple error notification.\r\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\r\n }\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 public render(): JSX.Element | null {\r\n const {\r\n id,\r\n typeName,\r\n data: { accountInformation, wishlists },\r\n context: {\r\n request: { user }\r\n },\r\n context,\r\n resources: { cartLabel, cartQtyLabel }\r\n } = this.props;\r\n const { logoLink, logoImage, shouldShowWishlistCount, shouldHideShowSignInSignOutLink } = this.props.config;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\r\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\r\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'nos-header-open';\r\n const headerClassName = classnames('nos-header', this.props.config.className, headerToggleClass);\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 let wishlistCount = 0;\r\n const siteOptionsSlot = this._getSlot('siteOptions');\r\n const preferredStoreSlot = this._getSlot('storeSelector');\r\n if (wishlists !== undefined) {\r\n if (\r\n !wishlists.result ||\r\n !ArrayExtensions.hasElements(wishlists.result) ||\r\n !wishlists.result[0].CommerceListLines ||\r\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\r\n ) {\r\n wishlistCount = 0;\r\n } else {\r\n wishlistCount = wishlists.result[0].CommerceListLines.length;\r\n }\r\n }\r\n const viewProps: IHeaderViewProps = {\r\n ...(this.props as INosHeaderProps),\r\n ...this.state,\r\n shouldHideShowSignInSignOutLink,\r\n logo: (\r\n \r\n ),\r\n wishListIconDesktop: (\r\n \r\n ),\r\n wishListIconMobile: (\r\n \r\n ),\r\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\r\n cartIconSlot[0]\r\n ) : (\r\n \r\n ),\r\n\r\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\r\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\r\n className: headerClassName,\r\n HeaderTag: {\r\n moduleProps: this.props,\r\n className: classnames(headerClassName),\r\n 'aria-label': this.props.resources.headerAriaLabel,\r\n tag: 'header'\r\n },\r\n HeaderContainer: {\r\n className: classnames('nos-header__container')\r\n },\r\n HeaderTopBarContainer: {\r\n className: classnames('nos-header__topbar')\r\n },\r\n Divider: {\r\n className: classnames('nos-header__divider')\r\n },\r\n MobileMenuContainer: {\r\n tag: Modal,\r\n id: navbarKey,\r\n className: 'nos-header__mobile-hamburger',\r\n isOpen: !this.state.mobileMenuCollapsed,\r\n wrapClassName: 'nos-header__modal',\r\n toggle: this._toggleNavbar\r\n },\r\n MobileMenuHeader: ,\r\n MobileMenuBodyContainer: {\r\n tag: ModalBody,\r\n className: 'nos-header__mobile-hamburger-menu-body'\r\n },\r\n MobileMenuLinksContainer: {\r\n className: 'nos-header__mobile-hamburger-menu-links'\r\n },\r\n AccountInfoDropdownParentContainer: {\r\n className: 'nos-header__account-info'\r\n },\r\n AccountInfoDropdownPopoverConentContainer: this.displayName\r\n ? {\r\n tag: Popover,\r\n id: 'myprofilePopover',\r\n className: 'nos-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 }\r\n : undefined,\r\n signInLink: this._getSigninButton(user, this.props.resources),\r\n signOutLink: this._getSignOutButton(user, this.props.resources),\r\n isOBORequest: user?.isOBORequest,\r\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\r\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\r\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\r\n accountLinks: this._getAccountLinks(customer),\r\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle link text change.\r\n * @param linkIndex - Link Index.\r\n * @returns : Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\r\n if (this.props.config.myAccountLinks?.[linkIndex]) {\r\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Get the slot.\r\n * @param slotName - Name of the slot.\r\n * @returns The slot.\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 /**\r\n * Renders the sign in button.\r\n * @param user - Request context user.\r\n * @param resources - Resources.\r\n * @returns React Node.\r\n */\r\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: INosHeaderResources): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return (\r\n !this.displayName && (\r\n \r\n \r\n {resources.signInLinkText}\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Renders the sign out button.\r\n * @param user - Request context user.\r\n * @param resources - Resources.\r\n * @returns React Node.\r\n */\r\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: INosHeaderResources): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return (\r\n this.displayName && (\r\n \r\n \r\n {resources.signOutLinkText}\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Renders the sign out button.\r\n * @param user - Request context user.\r\n * @param resources - Resources.\r\n * @returns React Node.\r\n */\r\n private _getSwitchCustomerButton(\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n resources: INosHeaderResources\r\n ): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const isOBOAccountSelected = user?.isOBORequest && this.props.context.request.cookies.getAccountSelectionCookie();\r\n return (\r\n this.displayName &&\r\n isOBOAccountSelected && (\r\n this.props.context.request.cookies.removeAccountSelectionCookie(),\r\n additionalProperties: attributes\r\n }}\r\n />\r\n )\r\n );\r\n }\r\n\r\n private _getSigninNotification(\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n signUpMultipleCustomerFoundTitle: string,\r\n signUpCustomerNotFoundTitle: string\r\n ): string | undefined {\r\n const { signUpCustomerNotFound, signUpMultipleCustomerFound } = this.props.config;\r\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\r\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\r\n\r\n if (user?.retailServerErrorCode === notFoundError) {\r\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\r\n } else if (user?.retailServerErrorCode === multipleAccountError) {\r\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _getAccountInfoDropdownButton(\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n resources: INosHeaderResources\r\n ): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return (\r\n this.displayName && (\r\n \r\n
\r\n
{this.displayName}
\r\n {user?.isOBORequest && this.customerName &&
{format(resources.shoppingAsText, this.customerName)}
}\r\n
\r\n \r\n )\r\n );\r\n }\r\n\r\n // private _getHeaderLinks = (links?: IHeaderLinksData[], menuBarSlot?: any): React.ReactNode[] | undefined => {\r\n // return links?.map((link, index) => {\r\n // if (!link.opensMenu) {\r\n // const editableLink: MsDyn365.ILinksData = {\r\n // ariaLabel: link.ariaLabel,\r\n // className: 'nos-header__header-link',\r\n // linkText: link.linkText,\r\n // linkUrl: link.linkUrl.destinationUrl,\r\n // openInNewTab: false,\r\n // role: 'link'\r\n // };\r\n // return (\r\n // \r\n // );\r\n // } else {\r\n // // TODO: Handle Productlink with navigation menu.\r\n // return ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [];\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 || !ArrayExtensions.hasElements(myAccountLinks)) {\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: 'nos-signin-info__account-link-button',\r\n linkText: cta.linkText,\r\n linkUrl: cta.linkUrl.destinationUrl,\r\n openInNewTab: cta.openInNewTab,\r\n role: 'link',\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 }\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(event: KeyboardEvent): void {\r\n if (event.keyCode === KeyCodes.Escape) {\r\n this.setState({ mobileMenuCollapsed: true });\r\n }\r\n }\r\n}\r\n\r\nexport default Header;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from './nos-header';\r\n\r\nconst headerView: React.FC = props => {\r\n const {\r\n HeaderTag,\r\n HeaderContainer,\r\n HeaderTopBarContainer,\r\n MobileMenuContainer,\r\n MobileMenuBodyContainer,\r\n MobileMenuLinksContainer,\r\n Divider\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {props.logo}\r\n {props.preferredStore}\r\n {props.wishListIconDesktop}\r\n \r\n {_renderReactFragment(props.menuBar)}\r\n {_renderReactFragment(props.search)}\r\n {_renderReactFragment(props.siteOptions)}\r\n {props.cartIcon}\r\n {_renderDesktopAccountBlock(props)}\r\n \r\n \r\n \r\n {props.MobileMenuHeader}\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n {props.logo}\r\n {props.accountLinks ? props.accountLinks.map(link => link) : false}\r\n {props.siteOptions}\r\n {props.wishListIconMobile}\r\n {props.signInLink}\r\n {props.signOutLink}\r\n \r\n \r\n \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 shouldHideShowSignInSignOutLink\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer && shouldHideShowSignInSignOutLink !== true) {\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 } else if (signInLink) {\r\n return {signInLink};\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 > 0\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","/*--------------------------------------------------------------\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 MsDyn365, {\r\n getCatalogId,\r\n IComponent,\r\n IComponentProps,\r\n IGridSettings,\r\n IImageSettings,\r\n msdyn365Commerce,\r\n TelemetryEvent\r\n} from '@msdyn365-commerce/core';\r\nimport { getCartState, ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\r\nimport {\r\n CartLineValidationResults,\r\n CartsDataActions,\r\n format,\r\n ProductAvailableQuantity,\r\n ProductDimension,\r\n ProductPrice,\r\n ProductsDataActions,\r\n ProductSearchCriteria,\r\n ProductType,\r\n SimpleProduct\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\nimport { ArrayExtensions, generateProductImageUrl, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPopupProps,\r\n ITelemetryContent,\r\n Popup\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n PriceComponent,\r\n IItemsAddedToCartResources,\r\n ItemsAddedToCartDialogComponent,\r\n ItemSuccessfullyAddedToCartNotification,\r\n MultiItemsSuccessfullyAddedToCartNotification,\r\n OrderDetailsProduct\r\n} from '@msdyn365-commerce/components';\r\n\r\n/**\r\n * Interface for add to cart resources.\r\n */\r\nexport interface IAddToCartResources {\r\n goToCartText: string;\r\n continueShoppingText: string;\r\n closeNotificationLabel: string;\r\n headerItemOneText: string;\r\n headerItemFormatText: string;\r\n headerLinesFormatText?: string;\r\n headerMessageText: string;\r\n freePriceText: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n addedQuantityText: string;\r\n buyAgainNotificationTitle?: string;\r\n buyAgainNotificationCloseAriaLabel?: string;\r\n validationErrorMessage?: string;\r\n oneErrorText?: string;\r\n multiErrorsText?: string;\r\n}\r\n\r\n/**\r\n * Interface for add to cart components props.\r\n */\r\nexport interface IAddToCartComponentProps extends IComponentProps<{ product: SimpleProduct; price?: ProductPrice } | 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 isNavigationToCartPageDisabled?: boolean;\r\n shouldSkipSiteSettings?: boolean;\r\n addToCartArialLabel?: string;\r\n products?: {\r\n productId: number;\r\n quantity: number;\r\n catalogId?: number;\r\n }[];\r\n orderDetailsProducts?: OrderDetailsProduct[];\r\n hasAvailableProducts?: boolean;\r\n imageSettings?: IImageSettings;\r\n gridSettings?: IGridSettings;\r\n\r\n isLoading?: boolean;\r\n isUpdatingDimension?: boolean;\r\n isLoadingDeliveryOptions?: boolean;\r\n isUpdatingDeliveryOptions?: boolean;\r\n isAddServiceItemToCart?: boolean;\r\n isAddEmailDeliveryItemToCart?: boolean;\r\n isPriceKeyedIn?: boolean;\r\n customPriceAmount?: number;\r\n isOrderQuantityLimitsFeatureEnabled?: boolean;\r\n\r\n dialogStrings?: IAddToCartResources;\r\n\r\n telemetryContent?: ITelemetryContent;\r\n\r\n catalogId?: number;\r\n\r\n isCustomPriceSelected?: boolean;\r\n maximumKeyInPrice?: number;\r\n minimumKeyInPrice?: number;\r\n defaultMaximumKeyInPrice?: number;\r\n defaultMinimumKeyInPrice?: number;\r\n isProductQuantityLoading?: boolean;\r\n\r\n onAdd?(result: ICartActionResult): void;\r\n onError?(result: IAddToCartFailureResult): void;\r\n changeUpdatingDimension?(isUpdatingDimension: boolean): void;\r\n changeUpdatingDeliveryOptions?(isUpdatingDeliveryOptions: boolean): void;\r\n}\r\n\r\n/**\r\n * Cart action Failure reason type.\r\n */\r\nexport declare type ICartActionFailureReason =\r\n | 'EMPTYINPUT'\r\n | 'MISSINGDIMENSION'\r\n | 'OUTOFSTOCK'\r\n | 'CARTACTIONFAILED'\r\n | 'INVALIDCUSTOMAMOUNT';\r\n\r\n/**\r\n * Interface for add to cart failure result.\r\n */\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\n/**\r\n * This setting defines the experience when a product is added to cart. Corresponds to the configuration in Fabrikam.\r\n */\r\nexport enum AddToCartBehavior {\r\n /**\r\n * Navigate to cart page.\r\n */\r\n goToCart = 'goToCart',\r\n\r\n /**\r\n * Show item added to cart popup.\r\n */\r\n showModal = 'showModal',\r\n\r\n /**\r\n * Show mini cart popup.\r\n */\r\n showMiniCart = 'showMiniCart',\r\n\r\n /**\r\n * Show item added to cart notification.\r\n */\r\n showNotification = 'showNotification',\r\n\r\n /**\r\n * Do nothing and stay on the page.\r\n */\r\n nothing = 'nothing'\r\n}\r\n\r\nconst zero = 0;\r\nconst defaultQuantity = 1;\r\n\r\n/**\r\n * The propagate result.\r\n * @param props -- The add to cart component props.\r\n * @param result -- The cart action result.\r\n */\r\nconst propagateResult = (props: IAddToCartComponentProps, result: ICartActionResult): void => {\r\n if (props.onAdd) {\r\n props.onAdd(result);\r\n }\r\n};\r\n\r\n/**\r\n * The propagate error.\r\n * @param props -- The add to cart component props.\r\n * @param result -- The add to cart failure result.\r\n */\r\nconst propagateError = (props: IAddToCartComponentProps, result: IAddToCartFailureResult): void => {\r\n if (props.onError) {\r\n props.onError(result);\r\n }\r\n};\r\n\r\n/**\r\n * Retrieves add to cart input from the component props.\r\n * @param props - Add to cart component props.\r\n * @returns Add to cart input.\r\n */\r\nconst getAddToCartInputFromProps = async (props: IAddToCartComponentProps) => {\r\n const products = props.orderDetailsProducts?.filter(product => !ObjectExtensions.isNullOrUndefined(product.simpleProduct));\r\n const input = products?.map(product => {\r\n return {\r\n product: product.simpleProduct!,\r\n count: ObjectExtensions.isNullOrUndefined(product.salesLine.Quantity) ? defaultQuantity : product.salesLine.Quantity,\r\n catalogId: product.salesLine.CatalogId\r\n };\r\n });\r\n\r\n if (ArrayExtensions.hasElements(input)) {\r\n return input;\r\n }\r\n\r\n if (ArrayExtensions.hasElements(props.products)) {\r\n const actionContext = props.context.actionContext;\r\n const apiSettings = actionContext.requestContext.apiSettings;\r\n\r\n const searchCriteriaInput: ProductSearchCriteria = {\r\n Context: {\r\n ChannelId: apiSettings.channelId,\r\n CatalogId: props.catalogId ?? getCatalogId(props.context.actionContext.requestContext)\r\n },\r\n IncludeAttributes: false,\r\n Ids: props.products.map(product => product.productId)\r\n };\r\n\r\n const searchResult = await ProductsDataActions.searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\r\n const productSearchResultsWithImages = searchResult.map(productSearchResult => {\r\n const newProductSearchResult = { ...productSearchResult };\r\n const newImageUrl = generateProductImageUrl(newProductSearchResult, apiSettings);\r\n\r\n if (newImageUrl) {\r\n newProductSearchResult.PrimaryImageUrl = newImageUrl;\r\n }\r\n\r\n return newProductSearchResult;\r\n });\r\n\r\n return props.products.map(item => {\r\n const productData = productSearchResultsWithImages.find(product => product.RecordId === item.productId);\r\n let simpleProduct: SimpleProduct;\r\n if (productData) {\r\n simpleProduct = {\r\n ...productData,\r\n ProductTypeValue: ProductType.Variant,\r\n AdjustedPrice: productData.Price,\r\n BasePrice: productData.BasePrice ?? productData.Price\r\n };\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Cast to simple product since only record id is available.\r\n simpleProduct = {\r\n RecordId: item.productId\r\n } as SimpleProduct;\r\n }\r\n\r\n return {\r\n product: simpleProduct,\r\n count: item.quantity,\r\n catalogId: item.catalogId\r\n };\r\n });\r\n }\r\n\r\n if (props.data?.product) {\r\n return [\r\n {\r\n product: props.data.product,\r\n count: props.quantity ?? defaultQuantity,\r\n catalogId: props.catalogId\r\n }\r\n ];\r\n }\r\n\r\n return [];\r\n};\r\n\r\n/**\r\n * Add one item to cart when it is not buy again.\r\n * @param props -- The props.\r\n * @param setDisabled -- The set disable call back.\r\n * @param openModal -- The open modal call back.\r\n */\r\nconst addOneItemToCart = async (\r\n props: IAddToCartComponentProps,\r\n setDisabled: (disabled: boolean) => void,\r\n openModal: (opened: boolean) => void\r\n): Promise => {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\r\n const addToCartBehavior = props.context.app.config.addToCartBehavior;\r\n const data = props.data;\r\n\r\n const addToCartInput = await getAddToCartInputFromProps(props);\r\n const product = addToCartInput[0].product;\r\n const quantity = addToCartInput[0].count;\r\n\r\n const cartState = await getCartState(props.context.actionContext);\r\n const addToCartResult = await cartState.addProductToCart({\r\n product,\r\n count: quantity,\r\n availableQuantity: props.productAvailability?.AvailableQuantity,\r\n additionalProperties: { orderQuantityLimitsFeatureIsEnabled: props.isOrderQuantityLimitsFeatureEnabled },\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\r\n enableStockCheck: props.context.app.config.enableStockCheck,\r\n isPriceKeyedIn: props.isPriceKeyedIn,\r\n customPrice: props.customPriceAmount,\r\n isAddEmailDeliveryItemToCart: props.isAddEmailDeliveryItemToCart,\r\n shouldSkipSiteSettings: props.shouldSkipSiteSettings,\r\n catalogId: addToCartInput[0].catalogId\r\n });\r\n\r\n if (addToCartResult.status === 'SUCCESS') {\r\n if (props.dialogStrings && addToCartBehavior === AddToCartBehavior.showModal) {\r\n setDisabled(false);\r\n openModal(true);\r\n } else if (props.dialogStrings && addToCartBehavior === AddToCartBehavior.showNotification) {\r\n setDisabled(false);\r\n const notification = new ItemSuccessfullyAddedToCartNotification(\r\n props.context,\r\n props.dialogStrings,\r\n props.imageSettings,\r\n props.gridSettings,\r\n product,\r\n data?.price,\r\n quantity,\r\n props.navigationUrl,\r\n props.telemetryContent!,\r\n props.id,\r\n props.typeName\r\n );\r\n NotificationsManager.instance().addNotification(notification);\r\n } else if (\r\n MsDyn365.isBrowser &&\r\n props.navigationUrl &&\r\n !props.isNavigationToCartPageDisabled &&\r\n (addToCartBehavior === undefined || addToCartBehavior === AddToCartBehavior.goToCart)\r\n ) {\r\n window.location.assign(props.navigationUrl);\r\n } else {\r\n setDisabled(false);\r\n }\r\n propagateResult(props, addToCartResult);\r\n } else {\r\n NotificationsManager.instance().addNotification(\r\n new ErrorNotification(\r\n addToCartResult.errorDetails?.LocalizedMessage ?? 'Add to cart failed',\r\n props.dialogStrings?.closeNotificationLabel ?? ''\r\n )\r\n );\r\n\r\n propagateError(props, { failureReason: 'CARTACTIONFAILED', cartActionResult: addToCartResult });\r\n setDisabled(false);\r\n }\r\n};\r\n\r\n/**\r\n * Callback to handle success of adding to cart.\r\n * @param props - Add to cart component props.\r\n * @param setDisabled - Callback to update disabled state of the component.\r\n * @param setItemsAddedToCartDialogOpen - Callback to update disabled state of the component.\r\n * @param setErrorMessage - Callback to update error message state of the component.\r\n * @param cartState - Current cart state.\r\n * @param addToCartInput - Input used for adding to cart.\r\n * @param addToCartResult - Result of adding to cart.\r\n */\r\nconst handleAddItemsToCartSuccess = async (\r\n props: IAddToCartComponentProps,\r\n setDisabled: (disabled: boolean) => void,\r\n setItemsAddedToCartDialogOpen: (opened: boolean) => void,\r\n setErrorMessage: (message: string) => void,\r\n cartState: ICartState,\r\n addToCartInput: {\r\n product: SimpleProduct;\r\n count: number;\r\n }[],\r\n addToCartResult: ICartActionResult\r\n) => {\r\n // Validate cart for line errors.\r\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\r\n { callerContext: props.context.actionContext, bypassCache: 'none' },\r\n cartState.cart.Id,\r\n cartState.cart.Version\r\n );\r\n const errorCount = (validationResult.ValidationFailuresByCartLines ?? []).length;\r\n const singleErrorCount = 1;\r\n const errorText = errorCount === singleErrorCount ? props.dialogStrings?.oneErrorText : props.dialogStrings?.multiErrorsText;\r\n const errorMessage =\r\n errorCount > zero ? format(props.dialogStrings?.validationErrorMessage ?? '', errorCount.toString(), errorText) : '';\r\n\r\n setErrorMessage(errorMessage);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- read config file.\r\n const addToCartBehavior = props.context.app.config.addToCartBehavior;\r\n\r\n if (props.dialogStrings && addToCartBehavior === AddToCartBehavior.showModal) {\r\n setDisabled(false);\r\n setItemsAddedToCartDialogOpen(true);\r\n } else if (props.dialogStrings && addToCartBehavior === AddToCartBehavior.showNotification) {\r\n setDisabled(false);\r\n const itemsAddedResource: IItemsAddedToCartResources = {\r\n viewCartButtonText: props.dialogStrings.goToCartText,\r\n closeButtonLabel: props.dialogStrings.closeNotificationLabel,\r\n itemsAddedToCartHeaderText: props.dialogStrings.headerMessageText,\r\n itemsAddedToCartFormatText: props.dialogStrings.headerItemFormatText,\r\n linesAddedToCartFormatText: props.dialogStrings.headerLinesFormatText ?? '{0}',\r\n itemsAddedValidationErrorMessage: errorMessage\r\n };\r\n\r\n const notification = new MultiItemsSuccessfullyAddedToCartNotification(\r\n props.context,\r\n itemsAddedResource,\r\n props.imageSettings,\r\n props.gridSettings,\r\n addToCartInput,\r\n props.navigationUrl,\r\n props.telemetryContent!,\r\n props.id,\r\n props.typeName\r\n );\r\n NotificationsManager.instance().addNotification(notification);\r\n } else if (\r\n MsDyn365.isBrowser &&\r\n props.navigationUrl &&\r\n !props.isNavigationToCartPageDisabled &&\r\n (addToCartBehavior === undefined || addToCartBehavior === AddToCartBehavior.goToCart)\r\n ) {\r\n window.location.assign(props.navigationUrl);\r\n } else {\r\n setDisabled(false);\r\n }\r\n propagateResult(props, addToCartResult);\r\n};\r\n\r\n/**\r\n * Add one or multi item to cart from buy again.\r\n * @param props -- The props.\r\n * @param setDisabled -- The set disable call back.\r\n * @param setItemsAddedToCartDialogOpen -- The open modal call back.\r\n * @param setErrorMessage -- The set error message call back.\r\n */\r\nconst addItemsToCart = async (\r\n props: IAddToCartComponentProps,\r\n setDisabled: (disabled: boolean) => void,\r\n setItemsAddedToCartDialogOpen: (opened: boolean) => void,\r\n setErrorMessage: (message: string) => void\r\n): Promise => {\r\n const addToCartInput = await getAddToCartInputFromProps(props);\r\n\r\n if (!ArrayExtensions.hasElements(addToCartInput)) {\r\n return;\r\n }\r\n\r\n const cartState = await getCartState(props.context.actionContext);\r\n const addToCartResult = await cartState.addProductsToCart(addToCartInput);\r\n\r\n if (addToCartResult.status === 'SUCCESS') {\r\n await handleAddItemsToCartSuccess(\r\n props,\r\n setDisabled,\r\n setItemsAddedToCartDialogOpen,\r\n setErrorMessage,\r\n cartState,\r\n addToCartInput,\r\n addToCartResult\r\n );\r\n } else {\r\n if (props.dialogStrings?.buyAgainNotificationTitle) {\r\n // For buy again show simple error notification.\r\n NotificationsManager.instance().addNotification(\r\n new ErrorNotification(\r\n props.dialogStrings.buyAgainNotificationTitle,\r\n props.dialogStrings.buyAgainNotificationCloseAriaLabel ?? ''\r\n )\r\n );\r\n } else {\r\n NotificationsManager.instance().addNotification(\r\n new ErrorNotification(\r\n addToCartResult.errorDetails?.LocalizedMessage ?? 'Add to cart failed',\r\n props.dialogStrings?.closeNotificationLabel ?? ''\r\n )\r\n );\r\n }\r\n\r\n propagateError(props, { failureReason: 'CARTACTIONFAILED', cartActionResult: addToCartResult });\r\n setDisabled(false);\r\n }\r\n};\r\n\r\n/**\r\n * Interface for add to cart component.\r\n */\r\nexport interface IAddtoCartComponent extends IComponent {\r\n onClick(): (event: React.MouseEvent, props: IAddToCartComponentProps) => void;\r\n}\r\n\r\n/**\r\n * On click function.\r\n * @param _event - The mouse event.\r\n * @param props - The props.\r\n * @param setDisabled - Flag to define whether the element is disabled.\r\n * @param openModal - Flag to specify if it should open in a modal window.\r\n * @param setItemsAddedToCartDialogOpen - Sets items added to cart while dialog is open.\r\n * @param setErrorMessage - Error message.\r\n */\r\nconst onClick = async (\r\n _event: React.MouseEvent,\r\n props: IAddToCartComponentProps,\r\n setDisabled: (disabled: boolean) => void,\r\n openModal: (opened: boolean) => void,\r\n setItemsAddedToCartDialogOpen: (opened: boolean) => void,\r\n setErrorMessage: (message: string) => void\r\n): Promise => {\r\n if (!ArrayExtensions.hasElements(props.products)) {\r\n const cartError = addToCartError(props);\r\n\r\n if (cartError) {\r\n propagateError(props, cartError);\r\n return;\r\n }\r\n\r\n setDisabled(true);\r\n }\r\n\r\n const hasOrderDetailsProducts =\r\n ArrayExtensions.hasElements(props.orderDetailsProducts) && props.orderDetailsProducts.length > defaultQuantity;\r\n const hasProducts = ArrayExtensions.hasElements(props.products) && props.products.length > defaultQuantity;\r\n\r\n const hasMultipleProducts = hasOrderDetailsProducts || hasProducts;\r\n\r\n if (props.shouldSkipSiteSettings && hasMultipleProducts) {\r\n await addItemsToCart(props, setDisabled, setItemsAddedToCartDialogOpen, setErrorMessage);\r\n } else {\r\n await addOneItemToCart(props, setDisabled, openModal);\r\n }\r\n};\r\n\r\n/**\r\n * Add to cart component action constant.\r\n */\r\nconst AddToCartComponentActions = {\r\n onClick\r\n};\r\n\r\n/**\r\n * Add to cart component.\r\n * @param props - The props.\r\n * @returns - The add to cart component.\r\n */\r\nexport const AddToCartFunctionalComponent: React.FC = (props: IAddToCartComponentProps) => {\r\n const [disabled, setDisabled] = useState(false);\r\n const [modalOpen, setModalOpen] = useState(false);\r\n const [isItemsAddedToCartDialogOpen, setItemsAddedToCartDialogOpen] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [addToCartInput, setAddToCartInput] = useState<\r\n {\r\n product: SimpleProduct;\r\n count: number;\r\n }[]\r\n >([]);\r\n\r\n const onClickHandler = async (event: React.MouseEvent) => {\r\n await AddToCartComponentActions.onClick(event, props, setDisabled, setModalOpen, setItemsAddedToCartDialogOpen, setErrorMessage);\r\n };\r\n\r\n /**\r\n * Close dialog.\r\n */\r\n const closeItemsAddedToCartDialog = React.useCallback(() => {\r\n setItemsAddedToCartDialogOpen(false);\r\n }, []);\r\n\r\n const priceComponent = props.data?.price ? (\r\n \r\n ) : (\r\n ''\r\n );\r\n\r\n const popupProps: IPopupProps = {\r\n context: props.context,\r\n className: 'msc-add-to-cart',\r\n id: props.id,\r\n typeName: props.typeName,\r\n data: { product: props.data?.product, price: props.data?.price },\r\n dialogStrings: props.dialogStrings,\r\n imageSettings: props.imageSettings,\r\n gridSettings: props.context.request.gridSettings,\r\n productQuantity: props.quantity !== undefined ? props.quantity : defaultQuantity,\r\n priceComponent,\r\n navigationUrl: props.navigationUrl,\r\n modalOpen,\r\n setModalOpen,\r\n telemetryContent: props.telemetryContent\r\n };\r\n\r\n const itemsAddedResource: IItemsAddedToCartResources = {\r\n viewCartButtonText: props.dialogStrings?.goToCartText ?? '',\r\n closeButtonLabel: props.dialogStrings?.closeNotificationLabel ?? 'Close',\r\n itemsAddedToCartHeaderText: props.dialogStrings?.headerMessageText ?? '',\r\n itemsAddedToCartFormatText: props.dialogStrings?.headerItemFormatText ?? '',\r\n linesAddedToCartFormatText: props.dialogStrings?.headerLinesFormatText ?? '{0}',\r\n itemsAddedValidationErrorMessage: errorMessage\r\n };\r\n\r\n const renderModalPopup = ;\r\n const label = getLinkText(props);\r\n const payload = getPayloadObject(TelemetryEvent.AddToCart, props.telemetryContent!, label, '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payload);\r\n const buttonClassName = props.shouldSkipSiteSettings ? '' : 'msc-add-to-cart ';\r\n\r\n React.useEffect(() => {\r\n /**\r\n * Retrieves add to cart input and updates the state.\r\n */\r\n const retrieveAddToCartInput = async () => {\r\n const retrievedInput = await getAddToCartInputFromProps(props);\r\n setAddToCartInput(retrievedInput);\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Call async method as per the documentation of react useEffect.\r\n retrieveAddToCartInput();\r\n }, [props, setAddToCartInput]);\r\n\r\n return (\r\n <>\r\n {renderModalPopup}\r\n {props.context.request.user.isAuthenticated && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\n// Set default props\r\nAddToCartFunctionalComponent.defaultProps = {\r\n quantity: defaultQuantity\r\n};\r\n\r\n/**\r\n * Resolves whether product is in stock.\r\n * @param props - The add to cart component props.\r\n * @returns Gets the link text.\r\n */\r\nconst getLinkText = (props: IAddToCartComponentProps): string => {\r\n return shouldShowOutOfStock(props, false) && props.outOfStockText ? props.outOfStockText : props.addToCartText;\r\n};\r\n\r\n/**\r\n * Resolves whether product is in stock.\r\n * @param props - The add to cart component props.\r\n * @returns The add to cart failure result.\r\n */\r\nconst addToCartError = (props: IAddToCartComponentProps): IAddToCartFailureResult | undefined => {\r\n const {\r\n data,\r\n productAvailability,\r\n isCustomPriceSelected,\r\n customPriceAmount,\r\n maximumKeyInPrice,\r\n minimumKeyInPrice,\r\n defaultMaximumKeyInPrice = 100,\r\n defaultMinimumKeyInPrice = 10\r\n } = props;\r\n\r\n if (!data || !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 (data.product.Dimensions) {\r\n const missingDimensions = data.product.Dimensions.filter(\r\n dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value)\r\n );\r\n\r\n if (ArrayExtensions.hasElements(missingDimensions)) {\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 };\r\n }\r\n }\r\n\r\n if (shouldShowOutOfStock(props, true)) {\r\n const defaultAvailableQuantity = 0; // Showing as out of stock if no available products found.\r\n const availableQuantity = productAvailability?.AvailableQuantity ?? defaultAvailableQuantity;\r\n const stockLeft = Math.max(availableQuantity, defaultAvailableQuantity);\r\n\r\n return { failureReason: 'OUTOFSTOCK', stockLeft };\r\n }\r\n\r\n // When Custom price is selected, if there is no keyed-in price or keyed-in price is out of limit, should return error.\r\n if (\r\n isCustomPriceSelected &&\r\n (!customPriceAmount ||\r\n customPriceAmount > (maximumKeyInPrice || defaultMaximumKeyInPrice) ||\r\n customPriceAmount < (minimumKeyInPrice || defaultMinimumKeyInPrice))\r\n ) {\r\n return { failureReason: 'INVALIDCUSTOMAMOUNT' };\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/**\r\n * Resolves whether product is in stock.\r\n * @param props - The add to cart component props.\r\n * @param includeCurrentQuantity - Flag to specify whether current quantity should be included.\r\n * @returns The dialog element.\r\n */\r\nconst shouldShowOutOfStock = (props: IAddToCartComponentProps, includeCurrentQuantity: boolean): boolean => {\r\n if (props.context.app.config.enableStockCheck === undefined || props.context.app.config.enableStockCheck === false) {\r\n return false;\r\n }\r\n\r\n // When skip site settings do not need show out of stock on adding to cart\r\n if (props.shouldSkipSiteSettings) {\r\n return false;\r\n }\r\n\r\n if (\r\n props.isLoading ||\r\n props.isProductQuantityLoading ||\r\n props.isUpdatingDimension ||\r\n props.isLoadingDeliveryOptions ||\r\n props.isUpdatingDeliveryOptions ||\r\n props.isAddServiceItemToCart\r\n ) {\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 const hasAvailableProducts = props.hasAvailableProducts ?? true;\r\n if (!hasAvailableProducts) {\r\n return true;\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\r\n const includedQuantityNumber = includeCurrentQuantity && props.quantity ? props.quantity : defaultQuantity;\r\n\r\n return !(\r\n props.productAvailability &&\r\n props.productAvailability.AvailableQuantity !== undefined &&\r\n props.productAvailability.AvailableQuantity >= includedQuantityNumber\r\n );\r\n};\r\n\r\nconst 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 && !props.isLoadingDeliveryOptions && !props.isUpdatingDeliveryOptions) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\n// @ts-expect-error\r\n// prettier-ignore\r\nexport const AddToCartComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride('AddToCart', { component: AddToCartFunctionalComponent, ...AddToCartComponentActions });\r\n\r\nexport default AddToCartComponent;\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 { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n IPriceComponentResources,\r\n ISwatchItem,\r\n ProductComponentSwatchComponent,\r\n RatingComponent\r\n} from '@msdyn365-commerce/components';\r\nimport {\r\n getCatalogId,\r\n IAny,\r\n IComponent,\r\n IComponentProps,\r\n ICoreContext,\r\n IGeneric,\r\n IGridSettings,\r\n IImageData,\r\n IImageSettings,\r\n Image,\r\n msdyn365Commerce\r\n} from '@msdyn365-commerce/core';\r\nimport { AttributeSwatch, AttributeValue, ProductDimension, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n ArrayExtensions,\r\n convertDimensionTypeToProductDimensionType,\r\n Dictionary,\r\n DimensionTypes,\r\n generateImageUrl,\r\n getProductPageUrlSync,\r\n IDimensionsApp,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\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 ratingCountAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n quickViewButton?: React.ReactNode;\r\n productComparisonButton?: React.ReactNode;\r\n isEnabledProductDescription?: boolean;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n inventoryLabel?: string;\r\n dimensionAvailabilities?: IProductsDimensionsAvailabilities[];\r\n swatchItemAriaLabel?: string;\r\n}\r\n\r\nexport interface IProductComponent extends IComponent {}\r\n\r\nconst PriceComponentActions = {};\r\n\r\n/**\r\n * Gets the product page url from the default swatch selected.\r\n * @param productData - Product card to be rendered.\r\n * @returns The default color swatch selected if any.\r\n */\r\nfunction getDefaultColorSwatchSelected(productData?: ProductSearchResult): AttributeSwatch | null {\r\n if (!productData || !productData.AttributeValues) {\r\n return null;\r\n }\r\n\r\n const colorAttribute = productData.AttributeValues.find(\r\n attributeValue => attributeValue.KeyName?.toLocaleLowerCase() === DimensionTypes.color\r\n );\r\n if (!colorAttribute) {\r\n return null;\r\n }\r\n\r\n const defaultSwatch = colorAttribute.Swatches?.find(item => item.IsDefault === true) ?? colorAttribute.Swatches?.[0];\r\n return defaultSwatch ?? null;\r\n}\r\n\r\n/**\r\n * Gets the product image from the default swatch selected.\r\n * @param coreContext - Context of the module using the component.\r\n * @param productData - Product card to be rendered.\r\n * @returns The product card image url.\r\n */\r\nfunction getProductImageUrlFromDefaultColorSwatch(coreContext: ICoreContext, productData?: ProductSearchResult): string | undefined {\r\n const siteContext = coreContext as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n if (dimensionToPreSelectInProductCard === DimensionTypes.none) {\r\n return productData?.PrimaryImageUrl;\r\n }\r\n const defaultSwatch = getDefaultColorSwatchSelected(productData);\r\n return defaultSwatch && ArrayExtensions.hasElements(defaultSwatch.ProductImageUrls)\r\n ? generateImageUrl(defaultSwatch.ProductImageUrls[0], coreContext.request.apiSettings)\r\n : productData?.PrimaryImageUrl;\r\n}\r\n\r\n/**\r\n * Updates the product url link to product details page.\r\n * @param productDetailsPageUrl - Product page url.\r\n * @param coreContext - Context of the module using the component.\r\n * @param queryString - Querystring to be added to the URL.\r\n * @returns The update product page url.\r\n */\r\nfunction updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\r\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\r\n if (sourceUrl.search) {\r\n sourceUrl.search += `&${queryString}`;\r\n } else {\r\n sourceUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(sourceUrl.href);\r\n return updatedUrl.pathname + sourceUrl.search;\r\n}\r\n\r\n/**\r\n * Gets the react node for product unit of measure display.\r\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\nfunction renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\r\n if (!unitOfMeasure) {\r\n return null;\r\n }\r\n return (\r\n
\r\n {unitOfMeasure}\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Gets the react node for product availability.\r\n * @param inventoryAvailabilityLabel - The product information.\r\n * @returns The node representing markup for product availability.\r\n */\r\nfunction renderProductAvailability(inventoryAvailabilityLabel: string | undefined): JSX.Element | null {\r\n if (!inventoryAvailabilityLabel || inventoryAvailabilityLabel === '') {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {inventoryAvailabilityLabel}\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Renders product comparison button similar to the quick view button.\r\n * @param productComparisonButton - React element of the button.\r\n * @param product - Current product info.\r\n * @param catalogId - Current catalog.\r\n * @returns React element for the specific product.\r\n */\r\nfunction renderProductComparisonButton(\r\n productComparisonButton: React.ReactNode,\r\n product: ProductSearchResult,\r\n catalogId: number\r\n): JSX.Element | undefined {\r\n return React.cloneElement(productComparisonButton as React.ReactElement, { product, catalogId });\r\n}\r\n\r\n/**\r\n * Gets the product page url from the default swatch selected.\r\n * @param coreContext - Context of the module using the component.\r\n * @param productUrl - Product page url for the product card.\r\n * @param productData - Product card to be rendered.\r\n * @returns The product card image url.\r\n */\r\nfunction getProductPageUrlFromDefaultSwatch(\r\n coreContext: ICoreContext,\r\n productUrl: string,\r\n productData?: ProductSearchResult\r\n): string | undefined {\r\n const siteContext = coreContext as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n if (dimensionToPreSelectInProductCard === DimensionTypes.none) {\r\n return productUrl;\r\n }\r\n\r\n const defaultSwatch = getDefaultColorSwatchSelected(productData);\r\n if (!defaultSwatch || !defaultSwatch.SwatchValue) {\r\n return productUrl;\r\n }\r\n\r\n const queryString = `color=${defaultSwatch.SwatchValue}`;\r\n return updateProductUrl(productUrl, coreContext, queryString);\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 ratingCountAriaLabel,\r\n allowBack,\r\n typeName,\r\n id,\r\n telemetryContent,\r\n quickViewButton,\r\n productComparisonButton,\r\n isEnabledProductDescription,\r\n isPriceMinMaxEnabled,\r\n priceResources,\r\n inventoryLabel,\r\n dimensionAvailabilities,\r\n swatchItemAriaLabel\r\n}) => {\r\n const product = data.product;\r\n\r\n let productUrl = getProductPageUrlSync(product?.Name ?? '', product?.RecordId ?? Number.MIN_VALUE, context.actionContext, undefined);\r\n if (allowBack) {\r\n productUrl = updateProductUrl(productUrl, context, 'back=true');\r\n }\r\n const productImageUrlFromSwatch = getProductImageUrlFromDefaultColorSwatch(context, product) ?? product?.PrimaryImageUrl;\r\n const productPageUrlFromSwatch = getProductPageUrlFromDefaultSwatch(context, productUrl, product) ?? productUrl;\r\n const [productPageUrl, setProductPageUrl] = useState(productPageUrlFromSwatch);\r\n const [productImageUrl, setProductImageUrl] = useState(productImageUrlFromSwatch);\r\n React.useEffect(() => {\r\n setProductPageUrl(productPageUrlFromSwatch);\r\n setProductImageUrl(productImageUrlFromSwatch);\r\n }, [productUrl, productPageUrlFromSwatch, productImageUrlFromSwatch]);\r\n const [selectedSwatchItems] = useState(new Dictionary());\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access -- app context is generic\r\n const enableStockCheck = context.app.config.enableStockCheck;\r\n\r\n /**\r\n * Updates the product page and Image url based on swatch selected.\r\n * @param coreContext - Context of the caller.\r\n * @param swatchItem - Dimension swatch selected.\r\n */\r\n const updatePageAndImageUrl = React.useCallback(\r\n (coreContext: ICoreContext, swatchItem: ISwatchItem) => {\r\n const dimensionType = swatchItem.dimensionType;\r\n selectedSwatchItems.setValue(dimensionType, swatchItem);\r\n if (StringExtensions.isNullOrWhitespace(swatchItem.value)) {\r\n return;\r\n }\r\n const queryString = `${dimensionType}=${swatchItem.value}`;\r\n let productPageUrlWithSwatch = '';\r\n if (productPageUrl.includes(dimensionType)) {\r\n const newUrl = new URL(productPageUrl, coreContext.request.apiSettings.baseUrl);\r\n newUrl.searchParams.delete(dimensionType);\r\n productPageUrlWithSwatch = updateProductUrl(newUrl.toString(), context, queryString);\r\n } else {\r\n productPageUrlWithSwatch = updateProductUrl(productPageUrl, context, queryString);\r\n }\r\n setProductPageUrl(productPageUrlWithSwatch);\r\n if (dimensionType === DimensionTypes.color) {\r\n const swatchProductImageUrl = ArrayExtensions.hasElements(swatchItem.productImageUrls)\r\n ? swatchItem.productImageUrls[0]\r\n : undefined;\r\n const newImageUrl = generateImageUrl(swatchProductImageUrl, coreContext.request.apiSettings);\r\n setProductImageUrl(newImageUrl);\r\n }\r\n },\r\n [selectedSwatchItems, context, productPageUrl]\r\n );\r\n\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Checks if rendering the particular dimensions is allowed for product card.\r\n * @param dimensionType - Dimension to be displayed.\r\n * @returns Updates the state with new product page url.\r\n */\r\n function shouldDisplayDimension(dimensionType: string): boolean {\r\n const dimensionsContext = context as ICoreContext;\r\n const dimensionsToDisplayOnProductCard = dimensionsContext.app.config.dimensionsInProductCard;\r\n return (\r\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\r\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\r\n dimensionsToDisplayOnProductCard.includes(dimensionType.toLocaleLowerCase() as DimensionTypes)\r\n );\r\n }\r\n\r\n /**\r\n * Gets the react node for product dimension as swatch.\r\n * @param attributeValues - Attribute value property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n function renderProductDimensions(attributeValues?: AttributeValue[]): JSX.Element | null {\r\n if (!attributeValues) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {attributeValues.map((item: AttributeValue) => {\r\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\r\n if (!shouldDisplayDimension(dimensionTypeValue)) {\r\n return null;\r\n }\r\n\r\n const siteContext = context as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n const dimensionType = dimensionTypeValue as DimensionTypes;\r\n const swatches =\r\n item.Swatches?.map(swatchItem => {\r\n return {\r\n itemId: `${item.RecordId ?? ''}-${dimensionTypeValue}-${swatchItem.SwatchValue ?? ''}`,\r\n value: swatchItem.SwatchValue ?? '',\r\n dimensionType,\r\n colorHexCode: swatchItem.SwatchColorHexCode,\r\n imageUrl: swatchItem.SwatchImageUrl,\r\n productImageUrls: swatchItem.ProductImageUrls,\r\n isDefault: swatchItem.IsDefault,\r\n swatchItemAriaLabel: swatchItemAriaLabel ? format(swatchItemAriaLabel, dimensionType) : '',\r\n isDisabled:\r\n enableStockCheck &&\r\n dimensionAvailabilities?.find(\r\n dimensionAvailability => dimensionAvailability.value === (swatchItem.SwatchValue ?? '')\r\n )?.isDisabled\r\n };\r\n }) ?? [];\r\n if (\r\n dimensionToPreSelectInProductCard !== DimensionTypes.none &&\r\n ArrayExtensions.hasElements(swatches) &&\r\n !swatches.some(swatch => swatch.isDefault) &&\r\n dimensionType === DimensionTypes.color\r\n ) {\r\n swatches[0].isDefault = true;\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n function renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\r\n if (quickview === null) {\r\n return undefined;\r\n }\r\n const selectedDimensions: ProductDimension[] = selectedSwatchItems.getValues().map(swatches => {\r\n return {\r\n DimensionTypeValue: convertDimensionTypeToProductDimensionType(swatches.dimensionType),\r\n DimensionValue: {\r\n RecordId: 0,\r\n Value: swatches.value\r\n }\r\n };\r\n });\r\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item, selectedDimensions });\r\n }\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\r\n const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\r\n\r\n return (\r\n <>\r\n {isEnabledProductDescription ? (\r\n \r\n
\r\n
\r\n {renderProductPlacementImage(\r\n imageSettings,\r\n context.request.gridSettings,\r\n productImageUrl,\r\n product.PrimaryImageUrl,\r\n product.Name,\r\n context\r\n )}\r\n
\r\n
\r\n
{product.Name}
\r\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\r\n {renderDescription(product.Description)}\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n
\r\n {renderProductPlacementImage(\r\n imageSettings,\r\n context.request.gridSettings,\r\n productImageUrl,\r\n product.PrimaryImageUrl,\r\n product.Name,\r\n context\r\n )}\r\n
\r\n
\r\n
{product.Name}
\r\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\r\n
\r\n \r\n )}\r\n {renderProductDimensions(product.AttributeValues)}\r\n {!context.app.config.hideRating &&\r\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel, ratingCountAriaLabel)}\r\n {renderProductAvailability(inventoryLabel)}\r\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\r\n {productComparisonButton && renderProductComparisonButton(productComparisonButton, product, getCatalogId(context.request))}\r\n \r\n );\r\n};\r\n\r\nfunction renderLabel(\r\n name?: string,\r\n price?: string,\r\n rating?: number,\r\n ratingAriaLabelText?: string,\r\n reviewCount?: number,\r\n ratingCountAriaLabelText?: string\r\n): string {\r\n const reviewCountArialableText = getReviewAriaLabel(reviewCount, ratingCountAriaLabelText ?? '');\r\n return `${name ?? ''} ${price ?? ''} ${getRatingAriaLabel(rating, ratingAriaLabelText)}${\r\n reviewCountArialableText ? ` ${reviewCountArialableText}` : ''\r\n }`;\r\n}\r\n\r\nfunction renderDescription(description?: string): JSX.Element | null {\r\n return

{description}

;\r\n}\r\n\r\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\r\n if (rating && ratingAriaLabel) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabel || '', roundedRating, '5');\r\n }\r\n return '';\r\n}\r\n\r\nfunction getReviewAriaLabel(reviewCount?: number, ratingCountAriaLabelText?: string): string {\r\n if (reviewCount && ratingCountAriaLabelText) {\r\n return format(ratingCountAriaLabelText || '', reviewCount);\r\n }\r\n return '';\r\n}\r\n\r\nfunction renderRating(\r\n coreContext: ICoreContext,\r\n moduleTypeName: string,\r\n moduleId: string,\r\n avgRating?: number,\r\n totalRatings?: number,\r\n ariaLabel?: string,\r\n ratingCountAriaLabel?: string\r\n): JSX.Element | null {\r\n if (!avgRating) {\r\n return null;\r\n }\r\n\r\n const numberRatings = totalRatings?.toString() || undefined;\r\n const ratingAriaLabelText = getRatingAriaLabel(avgRating, ariaLabel);\r\n const ratingCountAriaLabelText = getReviewAriaLabel(Number(numberRatings), ratingCountAriaLabel);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction renderProductPlacementImage(\r\n imageSettings?: IImageSettings,\r\n gridSettings?: IGridSettings,\r\n imageUrl?: string,\r\n fallbackImageUrl?: string,\r\n altText?: string,\r\n context?: ICoreContext>\r\n): JSX.Element | null {\r\n if (!imageUrl || !gridSettings || !imageSettings) {\r\n return null;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Site level config can be of any type.\r\n const contextConfig = context?.app.config?.placeholderImageName;\r\n const emptyPlaceHolderImage = contextConfig as string;\r\n let fallbackImageSource = fallbackImageUrl;\r\n if (emptyPlaceHolderImage && fallbackImageUrl) {\r\n fallbackImageSource = `${fallbackImageUrl},${emptyPlaceHolderImage}`;\r\n }\r\n const img: IImageData = {\r\n src: imageUrl,\r\n altText: altText ? altText : '',\r\n fallBackSrc: fallbackImageSource\r\n };\r\n const imageProps = {\r\n gridSettings,\r\n imageSettings\r\n };\r\n imageProps.imageSettings.cropFocalRegion = true;\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\r\n IProductComponent\r\n>('Product', { component: ProductCard, ...PriceComponentActions });\r\n\r\nexport default ProductComponent;\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 { IPriceComponentResources } from '@msdyn365-commerce/components';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n ICategoryHierarchyViewProps,\r\n IRefineMenuViewProps,\r\n ISearchResultContainerViewProps,\r\n ISearchResultModalViewProps,\r\n ISortByViewProps,\r\n ITitleViewProps\r\n} from '@msdyn365-commerce-modules/search-result-container';\r\nimport { Button, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { MouseEventHandler, useEffect, useState } from 'react';\r\n\r\nimport {\r\n ISearchResultContainerProps,\r\n ISearchResultContainerResources\r\n} from '../definition-extensions/search-result-container.ext.props.autogenerated';\r\nimport { ProductComponent } from './components/product.component';\r\n\r\n/**\r\n * DescriptionInterval.\r\n */\r\nenum DescriptionInterval {\r\n productDescriptionInterval = 14,\r\n productDescriptionIntervalRemainder0 = 0,\r\n productDescriptionIntervalRemainder9 = 9\r\n}\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductCards = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\r\n return (\r\n \r\n {props.errorMessage}\r\n {props.products}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Returns the product inventory label.\r\n * @param channelInventoryConfigurationId - The channel configuration Id.\r\n * @param product - The product.\r\n * @returns The inventory label.\r\n */\r\nfunction getInventoryLabel(channelInventoryConfigurationId: number | undefined, product: ProductSearchResult): string | undefined {\r\n if (!channelInventoryConfigurationId || !ArrayExtensions.hasElements(product.AttributeValues)) {\r\n return undefined;\r\n }\r\n const inventoryAttribute = product.AttributeValues.find(attribute => attribute.RecordId === channelInventoryConfigurationId);\r\n if (inventoryAttribute) {\r\n return inventoryAttribute.TextValue;\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param props - The view props.\r\n * @param product - The product item data.\r\n * @param index - The index of each product item.\r\n * @param isEnabledProductDescription - The flag for showing Product desription tile.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProductCardsDescription = (\r\n props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>,\r\n product: ProductSearchResult,\r\n index: number,\r\n isEnabledProductDescription?: boolean\r\n): JSX.Element | null => {\r\n const { config, context, resources } = props;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const breadCrumbType = props.context.app.config.breadcrumbType;\r\n const isAllowBack = props.config.allowBackNavigation && (breadCrumbType === 'back' || breadCrumbType === 'categoryAndBack');\r\n const classname = isEnabledProductDescription\r\n ? 'ms-product-search-result__item product__description'\r\n : 'ms-product-search-result__item';\r\n const quickviewslot = ArrayExtensions.hasElements(props.slots.quickview) ? props.slots.quickview[0] : undefined;\r\n const channelInventoryConfigurationId = props.data.products.result?.channelInventoryConfigurationId;\r\n const isPriceMinMaxFeatureState = props.data.featureState.result?.find(\r\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\r\n );\r\n const priceResources: IPriceComponentResources = {\r\n priceRangeSeparator: resources.priceRangeSeparator\r\n };\r\n\r\n const productComparisonButton = ArrayExtensions.hasElements(props.slots.productComparisonButton)\r\n ? props.slots.productComparisonButton[0]\r\n : null;\r\n\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n};\r\n\r\n/**\r\n * Render Clear button for mobile viewport.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderProducts = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\r\n const products = props.data.listPageState.result?.activeProducts;\r\n if (!products || !ArrayExtensions.hasElements(products)) {\r\n return null;\r\n }\r\n const productDescriptionInterval: number = DescriptionInterval.productDescriptionInterval;\r\n const productDescriptionIntervalRemainder0: number = DescriptionInterval.productDescriptionIntervalRemainder0;\r\n const productDescriptionIntervalRemainder9: number = DescriptionInterval.productDescriptionIntervalRemainder9;\r\n return (\r\n \r\n {props.errorMessage}\r\n
      \r\n {products.map((product: ProductSearchResult, index: number) =>\r\n index % productDescriptionInterval === productDescriptionIntervalRemainder0 ||\r\n index % productDescriptionInterval === productDescriptionIntervalRemainder9\r\n ? renderProductCardsDescription(props, product, index, true)\r\n : renderProductCardsDescription(props, product, index, false)\r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Title Count.\r\n * @param props - The title view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderTitleCount = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return {title.titleCount};\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Render Category Hierarchy.\r\n * @param props - The category hierarchy view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\r\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\r\n if (categoryHierarchyList) {\r\n return (\r\n \r\n {categoryHierarchyList.map((category, index) => (\r\n \r\n {category}\r\n {categoryHierarchyList[index + 1] && categoryHierarchySeparator}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Function to make filter sticky.\r\n * @param isMobile - The boolean prop.\r\n * @param isStickyHeader - The boolean prop.\r\n */\r\nexport const configureStickyFilter = (isMobile: boolean, isStickyHeader: boolean): void => {\r\n // Get heights of cookie and promotion banners\r\n const defaultValue = 0;\r\n const defaultOffset = 28;\r\n const headerContainer: HTMLElement | null = document.querySelector('.ms-header');\r\n\r\n const headerHeight: number | undefined = headerContainer?.offsetHeight;\r\n const containerHeight: number = headerHeight ?? defaultOffset;\r\n const bannerHeights = isStickyHeader ? defaultValue : containerHeight;\r\n const headerElement = document.querySelector('header .lock-opaque');\r\n const defaultContainer = document.querySelector('header .default-container');\r\n const refinerElement = isMobile ? document.querySelector('.msc-sort-filter-wrapper') : document.querySelector('.ms-refiner-heading');\r\n if (refinerElement && headerElement && defaultContainer) {\r\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\r\n refinerElement.classList.add('lock-Filter');\r\n refinerElement.setAttribute('style', `top: ${defaultContainer.clientHeight}px`);\r\n } else {\r\n refinerElement.classList.remove('lock-Filter');\r\n }\r\n } else if (refinerElement) {\r\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\r\n refinerElement.classList.add('lock-top');\r\n } else {\r\n refinerElement.classList.remove('lock-top');\r\n refinerElement.classList.remove('lock-Filter');\r\n refinerElement.removeAttribute('style');\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Function to setup filter sticky.\r\n * @param isMobile - The boolean prop.\r\n * @param isStickyHeader - The boolean prop.\r\n */\r\nfunction stickyFilterSetup(isMobile: boolean, isStickyHeader: boolean): void {\r\n window.addEventListener('scroll', () => {\r\n configureStickyFilter(isMobile, isStickyHeader);\r\n });\r\n configureStickyFilter(isMobile, isStickyHeader);\r\n}\r\n\r\n/**\r\n * Function to make filter sticky.\r\n * @param refinerRefernce - Ref prop for filter.\r\n * @param toggle - Toggle function for filter menu.\r\n */\r\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event) => void) {\r\n React.useEffect(() => {\r\n /**\r\n * Function to make filter sticky.\r\n * @param event - Event prop for filter.\r\n */\r\n function handleClickOutside(event: Event) {\r\n const element = document.querySelector('.ms-refine-filter__toggle_collapsed');\r\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node) && !element) {\r\n toggle(event);\r\n }\r\n }\r\n if (MsDyn365.isBrowser) {\r\n document.addEventListener('click', handleClickOutside);\r\n }\r\n return () => {\r\n if (MsDyn365.isBrowser) {\r\n document.removeEventListener('click', handleClickOutside);\r\n }\r\n };\r\n }, [refinerRefernce, toggle]);\r\n}\r\n\r\n/**\r\n * Render the category page items.\r\n * @param props - The view props.\r\n * @returns The search Result container module view.\r\n */\r\nconst SearchResultContainerView: React.FC> = props => {\r\n const {\r\n SearchResultContainer,\r\n pagination,\r\n ProductSectionContainer,\r\n choiceSummary,\r\n isMobile,\r\n modalToggle,\r\n searchResultModal,\r\n TitleViewProps,\r\n refineMenu,\r\n categoryHierarchy,\r\n sortByOptions,\r\n CategoryNavContainer,\r\n RefineAndProductSectionContainer,\r\n FeatureSearchContainer,\r\n similarLookProduct,\r\n errorMessage,\r\n resources\r\n } = props;\r\n useEffect(() => {\r\n if (props.config.useStickyFilter && MsDyn365.isBrowser) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app context is generic\r\n stickyFilterSetup(props.isMobile, props.context.app.config.enableStickyHeader as boolean);\r\n }\r\n }, [props]);\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const toggle = () => {\r\n setIsExpanded(!isExpanded);\r\n };\r\n const wrapperRefiner = React.useRef(null);\r\n useOutsideClick(wrapperRefiner, toggle);\r\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\r\n if (isMobile) {\r\n return (\r\n \r\n {similarLookProduct ? null : (\r\n \r\n {renderCategoryHierarchy(categoryHierarchy)}\r\n {renderTitle(TitleViewProps)}\r\n {renderTitleCount(TitleViewProps)}\r\n \r\n )}\r\n {choiceSummary}\r\n {modalToggle}\r\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\r\n {similarLookProduct}\r\n {errorMessage}\r\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\r\n {pagination}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {similarLookProduct ? null : (\r\n \r\n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\r\n {TitleViewProps && renderTitle(TitleViewProps)}\r\n {TitleViewProps && renderTitleCount(TitleViewProps)}\r\n \r\n )}\r\n {similarLookProduct}\r\n \r\n \r\n \r\n \r\n {resources.filterText}\r\n \r\n
    {choiceSummary}
    \r\n
    \r\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\r\n
    \r\n
    \r\n {refineMenu && isExpanded && renderRefiner(refineMenu)}\r\n \r\n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\r\n \r\n
    \r\n\r\n \r\n {errorMessage}\r\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\r\n {pagination}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Render Search result Modal.\r\n * @param modalProps - The Search Result Modal view props.\r\n * @param refineMenu - The Refine Menu view props.\r\n * @param sortByDropDown - The Sort by view props.\r\n * @param isRecoSearchPage - The recomandation search page flag.\r\n * @returns The JSX Element.\r\n */\r\nconst createSearchResultModal = (\r\n modalProps: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element => {\r\n return React.cloneElement(\r\n modalProps.modal,\r\n {},\r\n modalProps.modalHeader,\r\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\r\n modalProps.modalFooter\r\n );\r\n};\r\n\r\n/**\r\n * Render Refiner Mobile.\r\n * @param props - The Refine Menu view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n {submenu}\r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Render Search result Body.\r\n * @param props - The Search Result Modal view props.\r\n * @param refineMenu - The Refine Menu view props.\r\n * @param sortByDropDown - The Sort by view props.\r\n * @param isRecoSearchPage - The recomandation search page flag.\r\n * @returns The JSX Element.\r\n */\r\nconst createModalBody = (\r\n props: ISearchResultModalViewProps,\r\n refineMenu: IRefineMenuViewProps,\r\n sortByDropDown: ISortByViewProps,\r\n isRecoSearchPage?: string\r\n): JSX.Element | null => {\r\n if (sortByDropDown) {\r\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Render Refiner.\r\n * @param props - The Refine Menu view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\r\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {refiners.map((submenu, index) => (\r\n {submenu}\r\n ))}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Render Refiner Footer.\r\n * @param props - The Refine Menu view props.\r\n * @param handler - The Refine menu toggle function.\r\n * @param resources - Resources to get the done text and aria label.\r\n * @returns The JSX Element.\r\n */\r\nconst renderRefinerFooter = (\r\n props: IRefineMenuViewProps,\r\n handler: MouseEventHandler,\r\n resources: ISearchResultContainerResources\r\n): JSX.Element | null => {\r\n const { refiners } = props;\r\n if (refiners) {\r\n return (\r\n \r\n \r\n {resources.doneText}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Render sort by drop down.\r\n * @param props - The sort by view props.\r\n * @param isRecoSearchPage - The recomandation search page flag.\r\n * @returns The JSX Element.\r\n */\r\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\r\n const { SortingContainer, sortByDropDown } = props;\r\n if (sortByDropDown && !isRecoSearchPage) {\r\n return {sortByDropDown};\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Render Title.\r\n * @param props - The title view props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\r\n const { title, TitleContainer } = props;\r\n if (title) {\r\n return (\r\n \r\n \r\n {title.titlePrefix}\r\n {title.titleText}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default SearchResultContainerView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\nimport {\n IComponent,\n IComponentProps,\n ICoreContext,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * IActiveProductProps interface.\n */\nexport interface IActiveProductProps extends IComponentProps<{ product?: ProductSearchResult }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n}\n\n/**\n * IActiveProduct interface.\n */\nexport interface IActiveProduct extends IComponent {}\n\n/**\n * RenderDescription function.\n * @param description - Product description string.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderDescription(description?: string): JSX.Element | null {\n return

    {description}

    ;\n}\n\n/**\n * GetRatingAriaLabel function.\n * @param rating - Product rating number.\n * @param ratingAriaLabel - Product rating aria label.\n * @returns - Returns string.\n */\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n const numberTwo: number = 2;\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(numberTwo);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\n/**\n * RenderRating function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param ratingId - The rating id.\n * @param avgRating - The average rating.\n * @param totalRatings - The total ratings.\n * @param ariaLabel - The rating aria label.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderRating(\n context: ICoreContext,\n typeName: string,\n ratingId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() ?? undefined;\n const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\n\n return (\n \n );\n}\n\n/**\n * RenderPrice function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param productId - The product id.\n * @param basePrice - The base price of the product.\n * @param adjustedPrice - The adjusted price of the product.\n * @param savingsText - The savings text of the product.\n * @param freePriceText - The free price text.\n * @param originalPriceText - The original price text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n productId: string,\n basePrice?: number,\n adjustedPrice?: number,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string\n): JSX.Element | null {\n const price: ProductPrice = {\n BasePrice: basePrice,\n AdjustedPrice: adjustedPrice,\n CustomerContextualPrice: adjustedPrice\n };\n\n return (\n \n );\n}\n\n/**\n * RenderProductPlacementImage function.\n * @param requestContext - RequestContext.\n * @param imageSettings - The product image settings.\n * @param gridSettings - The viewport gird settings.\n * @param imageUrl - The product image url.\n * @param altText - The product image alt text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderProductPlacementImage(\n requestContext: IRequestContext,\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n altText?: string\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n const imgData: IImageData = {\n src: imageUrl,\n altText: altText ? altText : ''\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return ;\n}\n\n/**\n * ActiveProduct constant.\n * @param props - The active product props.\n * @param props.data - The product search result data.\n * @param props.context - The core context.\n * @param props.imageSettings - The prodcut image settings.\n * @param props.savingsText - The product savings text.\n * @param props.freePriceText - The free price text.\n * @param props.originalPriceText - The original price text.\n * @param props.ratingAriaLabel - The product rating aria label.\n * @param props.typeName - The type name of the module.\n * @param props.id - The id of the product.\n * @returns - Returns JSX.Element | null.\n */\nexport const ActiveProductComponent: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n ratingAriaLabel,\n typeName,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Do not need naming convention check for library prameters\n id\n}) => {\n const product = data.product;\n if (!product) {\n return null;\n }\n\n return (\n <>\n
    \n
    \n {renderProductPlacementImage(\n context.actionContext.requestContext,\n imageSettings,\n context.request.gridSettings,\n product.PrimaryImageUrl,\n product.Name\n )}\n
    \n
    \n

    {product.Name}

    \n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText)}\n {renderDescription(product.Description)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\n
    \n
    \n \n );\n};\n\nexport default ActiveProductComponent;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * ILinksData: Interface for\n * Additional content.\n */\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n isOpenInNewTab?: boolean;\n}\n\n/**\n * IAdditionalContentData: Interface for\n * Active content.\n */\ninterface IAdditionalContentData {\n heading?: string;\n subtext?: string;\n links?: ILinksData[];\n}\n\n/**\n * IActiveImageAdditionalContentProps: Interface for\n * Active Image Additional Content Component props.\n */\nexport interface IActiveImageAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IActiveImageAdditionalContentViewProps: Interface for\n * Active Image Additional Content view props.\n */\nexport interface IActiveImageAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Active Image Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Active Image Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Active Image Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IActiveImageAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'msc-active-image__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.isOpenInNewTab,\n role: 'button'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Active Image additonal content item props.\n * @param props - Active Image Additional content component props.\n * @returns IActiveImageAdditionalContentItemViewProps.\n */\nconst assembleNode = (item: IAdditionalContentData, props: IActiveImageAdditionalContentProps): IActiveImageAdditionalContentViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n additionalContentNode: { className: 'msc-active-image__details__additional-content' },\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentContainer: { className: 'msc-active-image__details__additional-content__container' },\n additionalContentItemLinks: { className: 'msc-active-image__details__additional__content__cta' }\n };\n};\n\n/**\n * ActiveImageAdditionalContent component.\n * @param props - Active Image Additional content component props.\n * @returns Active Image Additional content view props.\n */\nexport const activeImageAdditionalContent = (\n props: IActiveImageAdditionalContentProps\n): IActiveImageAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n return assembleNode(additionalContent, props);\n};\n\nexport default activeImageAdditionalContent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IRgbColor\n * @description - The IRgbColor interface contract.\n */\nexport interface IRgbColor {\n rValue: number;\n gValue: number;\n bValue: number;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IArea {\n areaId: string;\n coords: number[];\n href?: string;\n center?: number[];\n primaryImageUrl?: string;\n productUrl: string;\n productSearchResult?: ProductSearchResult;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IAreaMap {\n name: string;\n areas: IArea[];\n}\n\n/**\n * @enum CanvasCalculations\n * @description - The canvas calculations enum.\n */\nexport enum CanvasCalculations {\n defaultWidth = 0,\n defaultHeight = 0,\n defaultPositionX = 0,\n defaultPositionY = 0,\n defaultScale = 1,\n halfDivisor = 2,\n doubleMultiplier = 2,\n buttonHeight = 30,\n buttonPadding = 30,\n paddingAdjustment = 3,\n expandAnimationStartWidth = 10,\n expandAnimationEndWidth = 40,\n collapseAnimationStartWidth = 40,\n collapseAnimationEndWidth = 8,\n expandRadius = 12,\n collapseRadius = 8,\n rotation = 1.57,\n startAngle = 0,\n endAngle = 7,\n clearMargin = 50,\n clearHeight = 100,\n clearWidth = 100,\n textFadeInStartValue = 0,\n textFadeOutStartValue = 0.5,\n textFadeInterval = 0.01\n}\n\n/**\n * @enum CanvasStyles\n * @description - The canvas styles enum.\n */\nexport enum CanvasStyles {\n color = '#FFFFFF',\n buttonTextClor = '#000000'\n}\n\n/**\n * @enum\n * @description - The canvas styles enum.\n */\nexport interface IImageMapperResources {\n buttonText?: string;\n altText?: string;\n}\n\n/**\n * @interface IImageMapperProps\n * @description - The IImageMapperProps interface contract.\n */\nexport interface IImageMapperProps {\n imageData: IImageData;\n areaMap: IAreaMap;\n viewPort: string;\n requestContext: IRequestContext;\n color?: string;\n buttonTextClor?: string;\n width?: number;\n imgWidth?: number;\n activeImageRefs: React.RefObject;\n imageMapperResources?: IImageMapperResources;\n onLoad?(): void;\n onClick?(area: IArea, index: number, event: AreaEvent): void;\n onFocus?(area: IArea, index: number, event: AreaEvent): void;\n onMouseEnter?(area: IArea, index: number, event: AreaEvent): void;\n onMouseLeave?(area: IArea, index: number, event: AreaEvent): void;\n}\n\n/**\n * ImageMapper.\n */\nexport class ImageMapper extends React.Component {\n private readonly _backgroundImage: React.RefObject;\n\n private readonly _container: React.RefObject;\n\n private readonly _canvas: React.RefObject;\n\n private _isDesktopViewPort: boolean = false;\n\n private _context: CanvasRenderingContext2D | null | undefined = null;\n\n public constructor(props: IImageMapperProps) {\n super(props);\n this._backgroundImage = React.createRef();\n this._container = React.createRef();\n this._canvas = React.createRef();\n }\n\n /**\n * ComponentDidMount method.\n */\n public componentDidMount(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n this.renderAreas();\n this._context = null;\n }\n\n /**\n * ComponentDidUpdate method.\n */\n public componentDidUpdate(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n }\n\n /**\n * ShouldComponentUpdate method.\n * @param nextProps - Next props.\n * @returns Returns boolean.\n */\n public shouldComponentUpdate(nextProps: IImageMapperProps): boolean {\n let shouldRender = false;\n if (nextProps !== this.props) {\n shouldRender = true;\n }\n return shouldRender;\n }\n\n /**\n * GetActiveImageWidth method - Gets the active image width.\n * @returns Returns number | undefined.\n */\n public getActiveImageWidth = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return undefined;\n };\n\n /**\n * GetActiveImageHeight method - Gets the active image height.\n * @returns Returns number | undefined.\n */\n public getActiveImageHeight = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return undefined;\n };\n\n /**\n * ConvertHexToRgb method - This method takes color in HEX format and returns IRgbColor color object.\n * @param hexColor -The color hex value.\n * @returns -Returns IRgbColor object.\n */\n public convertHexToRgb = (hexColor: string): IRgbColor => {\n // RegEx used to execute the conversion of the hex color to rgb value.\n const regEx = new RegExp('^#?([a-f\\\\d]{2})([a-f\\\\d]{2})([a-f\\\\d]{2})$', 'u');\n\n // RegEx.exec method executes a search for a match in a specified string. Returns a result array, or null.\n const result = regEx.exec(hexColor);\n const defaultValue = 0;\n return result\n ? {\n rValue: Number.parseInt(result[1], 16),\n gValue: Number.parseInt(result[2], 16),\n bValue: Number.parseInt(result[3], 16)\n }\n : {\n rValue: defaultValue,\n gValue: defaultValue,\n bValue: defaultValue\n };\n };\n\n /**\n * ApplyFadingTransition method - Applys fading transition to button text.\n * @param text -The button text.\n * @param coords -The coordinates.\n * @param rgbColor -The RGB color object.\n * @param alpha -The alpha value of the button text.\n */\n public applyFadingTransition = (text: string, coords: number[], rgbColor: IRgbColor, alpha: number): void => {\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n context.fillStyle = `rgba(${rgbColor.rValue}, ${rgbColor.gValue}, ${rgbColor.bValue}, ${alpha} )`;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * Draw button method - Draws button and contains fixed hight, padding values.\n * @param text -The button text.\n * @param coords -The coordinates.\n */\n public drawButton = (text: string, coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonHeight = CanvasCalculations.buttonHeight;\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n const buttonPositionX = coords[0] - buttonWidth / halfDivisor;\n const buttonPositionY = coords[1] - buttonHeight / halfDivisor;\n const arcsize = buttonHeight / halfDivisor;\n\n context.beginPath();\n context.moveTo(buttonPositionX + arcsize, buttonPositionY);\n context.lineTo(buttonPositionX + buttonWidth - arcsize, buttonPositionY);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY,\n buttonPositionX + buttonWidth,\n buttonPositionY + arcsize,\n arcsize\n );\n context.lineTo(buttonPositionX + buttonWidth, buttonPositionY + buttonHeight - arcsize);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY + buttonHeight,\n buttonPositionX + buttonWidth - arcsize,\n buttonPositionY + buttonHeight,\n arcsize\n );\n context.lineTo(buttonPositionX + arcsize, buttonPositionY + buttonHeight);\n context.arcTo(buttonPositionX, buttonPositionY + buttonHeight, buttonPositionX, buttonPositionY - arcsize, arcsize);\n context.lineTo(buttonPositionX, buttonPositionY + arcsize);\n context.arcTo(buttonPositionX, buttonPositionY, buttonPositionX + arcsize, buttonPositionY, arcsize);\n context.lineTo(buttonPositionX + arcsize, buttonPositionY);\n context.stroke();\n context.closePath();\n context.fillStyle = color;\n context.fill();\n context.fillStyle = buttonTextClor;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * ExpandAnimation method - Shows expand animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public expandAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.expandAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.expandAnimationEndWidth;\n const radius = CanvasCalculations.expandRadius;\n const rotation = CanvasCalculations.rotation;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeInValue = CanvasCalculations.textFadeInStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Reders expand animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n context.fillStyle = color;\n if (buttonText) {\n if (animationStartWidth < animationEndWidth) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeInValue);\n textFadeInValue += CanvasCalculations.textFadeInterval;\n animationStartWidth++;\n } else {\n this.drawButton(buttonText, [pointPositionX, pointPositionY]);\n }\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * CollapseAnimation method - Shows collapse animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public collapseAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.collapseAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.collapseAnimationEndWidth;\n const rotation = CanvasCalculations.rotation;\n const clearMargin = CanvasCalculations.clearMargin;\n const clearHeight = CanvasCalculations.clearHeight;\n const clearWidth = CanvasCalculations.clearWidth;\n const radius = CanvasCalculations.collapseRadius;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeOutValue = CanvasCalculations.textFadeOutStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Renders collapse animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.clearRect(pointPositionX - clearMargin, pointPositionY - clearMargin, clearWidth, clearHeight);\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n if (animationEndWidth < animationStartWidth && buttonText) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeOutValue);\n textFadeOutValue -= CanvasCalculations.textFadeInterval;\n animationStartWidth--;\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * DrawCircle method - Renders active points.\n * @param coords -Coordinates.\n */\n public drawCircle = (coords: number[]): void => {\n const { color = CanvasStyles.color, viewPort } = this.props;\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n const startAngle: number = CanvasCalculations.startAngle;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n const radius = viewPort === 'xs' || viewPort === 'sm' ? coords[2] * doubleMultiplier : coords[2];\n if (!context) {\n return;\n }\n context.fillStyle = color;\n context.beginPath();\n context.strokeStyle = color;\n context.arc(coords[0], coords[1], radius, startAngle, Math.PI * doubleMultiplier);\n context.closePath();\n context.stroke();\n context.fill();\n };\n\n /**\n * ScaleCoords method - To scale the active point coordinates based on the window size.\n * @param coords -Coordinates.\n * @returns -Returns number[].\n */\n public scaleCoords = (coords: number[]): number[] => {\n const { imgWidth } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultScale: number = CanvasCalculations.defaultScale;\n\n // Calculate scale based on current 'width' and the original 'imgWidth'\n const width = this.getActiveImageWidth();\n const scale = width && imgWidth && imgWidth > defaultWidth ? width / imgWidth : defaultScale;\n return coords.map(coord => coord * scale);\n };\n\n /**\n * RenderPrefilledAreas method - To render active points in case of events.\n */\n public renderPrefilledAreas = (): void => {\n const { areaMap } = this.props;\n areaMap.areas.map(area => {\n this.drawCircle(this.scaleCoords(area.coords));\n return null;\n });\n };\n\n /**\n * ComputeCenter method - To re-calculate the center of active point based on window size.\n * @param area -IArea.\n * @returns -Returns number[].\n */\n public computeCenter = (area: IArea): number[] => {\n const scaledCoords = this.scaleCoords(area.coords);\n return [scaledCoords[0], scaledCoords[1]];\n };\n\n /**\n * HandleHoverOn method - To handle mouse hover on event.\n * @param area -IArea.\n */\n public handleHoverOn = (area: IArea): void => {\n if (area.center && this._canvas.current) {\n this.drawCircle(this.scaleCoords(area.coords));\n this.expandAnimation(area.center);\n }\n };\n\n /**\n * HandleHoverOff method - To handle mouse hover off event.\n * @param area -IArea.\n */\n public handleHoverOff = (area: IArea): void => {\n if (this._canvas.current) {\n const context = this._canvas.current.getContext('2d') ?? this._context;\n const canvasPositionX: number = CanvasCalculations.defaultPositionX;\n const canvasPositionY: number = CanvasCalculations.defaultPositionY;\n\n if (!context) {\n return;\n }\n context.clearRect(canvasPositionX, canvasPositionY, this._canvas.current.width, this._canvas.current.height);\n this.renderPrefilledAreas();\n if (area.center) {\n this.collapseAnimation(area.center);\n }\n }\n };\n\n /**\n * Click method - Mouse click event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public click = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onClick } = this.props;\n if (onClick) {\n event.preventDefault();\n onClick(area, index, event);\n }\n };\n\n /**\n * HoverOn method - Mouse hover on event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOn = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseEnter } = this.props;\n this.handleHoverOn(area);\n if (onMouseEnter) {\n onMouseEnter(area, index, event);\n }\n };\n\n /**\n * HoverOff method - Mouse hover off event.\n * @param area - IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOff = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseLeave } = this.props;\n\n this.handleHoverOff(area);\n\n if (onMouseLeave) {\n onMouseLeave(area, index, event);\n }\n };\n\n /**\n * RenderAreas method - Renders active points at given coordinates.\n * @returns -Returns JSX.Element[].\n */\n public renderAreas = (): JSX.Element[] => {\n const { areaMap, viewPort } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText ? this.props.imageMapperResources.buttonText : '';\n const altText = this.props.imageMapperResources?.altText ? this.props.imageMapperResources.altText : '';\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n\n return areaMap.areas.map((area, index) => {\n const scaledCoords = this.scaleCoords(area.coords);\n const xsRadius = area.coords[2] * doubleMultiplier;\n if (viewPort === 'xs') {\n scaledCoords[2] = xsRadius;\n }\n const center = this.computeCenter(area);\n const extendedArea = { ...area, scaledCoords, center };\n const areaKey = `area-${index}`;\n const altTextWithProductName = altText\n .replace('{buttonText}', buttonText ? buttonText : '')\n .replace('{productName}', area.productSearchResult?.Name ? area.productSearchResult.Name : '');\n return (\n \n );\n });\n };\n\n /**\n * InitCanvas method - To render the canvas.\n */\n public initCanvas = (): void => {\n if (!this._canvas.current || !this._backgroundImage.current || !this._container.current) {\n return;\n }\n\n const { color, onLoad } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultHeight: number = CanvasCalculations.defaultHeight;\n\n const canvasWidth = this.getActiveImageWidth() ?? defaultWidth;\n const canvasHeight = this.getActiveImageHeight() ?? defaultHeight;\n\n this._canvas.current.width = canvasWidth;\n this._canvas.current.height = canvasHeight;\n this._container.current.style.width = `${canvasWidth}px`;\n\n const context = this._canvas.current.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.fillStyle = color ?? '';\n\n if (onLoad) {\n onLoad();\n }\n\n this.renderPrefilledAreas();\n };\n\n /**\n * Render method - To render the image mapper component with active image, canvas and active points.\n * @returns -Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const { imageData, areaMap, requestContext } = this.props;\n\n return (\n
    \n \n \n \n {this.renderAreas()}\n \n
    \n );\n }\n}\n\nexport default ImageMapper;\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 { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n activeImageAdditionalContent,\n ActiveProductComponent,\n IActiveImageAdditionalContentViewProps,\n IArea,\n IAreaMap,\n IImageMapperProps,\n ImageMapper\n} from '../active-image-utilities';\nimport { IActiveImageData } from './active-image.data';\nimport { IActiveImageProps } from './active-image.props.autogenerated';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IActiveImageViewProps\n * @classdesc - The IActiveImageViewProps interface contract.\n */\nexport interface IActiveImageViewProps extends IActiveImageProps<{}>, IImageMapperProps {\n activePointContainer: IModuleProps;\n activePointDetailsContainer: INodeProps;\n imageMapper: React.ReactNode;\n overlay: React.ReactNode;\n productCard: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IActiveImageAdditionalContentViewProps;\n productCardleftPosition: number;\n productCardtopPosition: number;\n handleAdditionalText?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalParagraph?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalLinkText?(event: MsDyn365.ContentEditableEvent): void;\n}\n\n/**\n * @interface IActiveImageLinksData\n * @classdesc - The IActiveImageLinksData interface contract.\n */\nexport interface IActiveImageLinksData {\n linkText?: string;\n linkUrl: MsDyn365.ILinkData;\n ariaLabel?: string;\n willOpenInNewTab?: boolean;\n}\n\n/**\n * @interface IActiveImageState\n * @classdesc - The IActiveImageState interface contract.\n */\ninterface IActiveImageState {\n clientWidth: number;\n area: IArea | null;\n viewport: string;\n overlayClass: string;\n}\n\n/**\n * @enum ActiveImageConstants\n * @description - The active image constants enum.\n */\nexport enum ActiveImageConstants {\n timeoutInterval = 200,\n enterKey = 'Enter',\n escKey = 'Escape'\n}\n\n/**\n *\n * ActiveImage class.\n * @extends {React.PureComponent & IImageMapperProps, IActiveImageState>}\n */\nexport class ActiveImage extends React.PureComponent & IImageMapperProps, IActiveImageState> {\n private readonly _telemetryContent: ITelemetryContent;\n\n private _isDesktopViewPort: boolean;\n\n private readonly _defaultProductCardWidth: number = 315;\n\n private readonly _defaultProdutCardHight: number = 490;\n\n private readonly _activePoints: IArea[] = [];\n\n private readonly _activeImageRefs: React.RefObject;\n\n private readonly _activeImageClass: string;\n\n private readonly _productCardDivRef: React.RefObject;\n\n public constructor(props: IActiveImageProps & IImageMapperProps) {\n super(props);\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this._activeImageClass = `msc-active-image-${this.getActiveImageId()}`;\n this.state = {\n clientWidth: 0,\n area: null,\n viewport,\n overlayClass: ''\n };\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n this._activeImageRefs = React.createRef();\n this._productCardDivRef = React.createRef();\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this.updateClientWidth);\n document.addEventListener('keydown', this.keyDown, false);\n document.addEventListener('mousedown', this._handleOutsideClick);\n }\n setTimeout(() => {\n this.updateClientWidth();\n }, ActiveImageConstants.timeoutInterval);\n\n if (MsDyn365.msdyn365Commerce.isBrowser && this._activeImageRefs.current) {\n const images: HTMLCollectionOf = this._activeImageRefs.current.getElementsByClassName(\n 'msc-thumbnail_image msc-active-image-img'\n );\n if (ArrayExtensions.hasElements(Array.from(images))) {\n images[0].removeAttribute('usemap');\n }\n }\n }\n\n /**\n * AddActivePoints method - To handle add Active Points.\n * @param area - IArea.\n * @param product - ProductSearchResult.\n * @param coords - Coords.\n * @param productUrl - String.\n */\n public addActivePoints = (area: IArea | undefined, product: ProductSearchResult, coords: number[], productUrl: string): void => {\n if (!area) {\n this._activePoints.push({\n areaId: product.RecordId.toString(),\n coords,\n primaryImageUrl: product.PrimaryImageUrl ?? '',\n productUrl,\n productSearchResult: product\n });\n }\n };\n\n /**\n * ComponentWillUnmount method.\n */\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this.updateClientWidth);\n document.removeEventListener('keydown', (this.keyDown as unknown) as EventListener, false);\n document.removeEventListener('mousedown', this._handleOutsideClick, false);\n }\n }\n\n /**\n * UpdateClientWidth method to update client width in state.\n */\n public updateClientWidth = (): void => {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this.setState({ clientWidth: this.getActiveImageWidth(), viewport });\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n };\n\n /**\n * Render method.\n * @returns - Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const viewProps: IActiveImageViewProps = {\n ...(this.props as IImageMapperProps & IActiveImageProps<{}>),\n activePointContainer: {\n moduleProps: this.props,\n className: classnames('msc-active-image', this._activeImageClass, this.props.config.className)\n },\n activePointDetailsContainer: {\n tag: 'div',\n className: classnames('msc-active-image-wrapper', this._activeImageClass, this.props.config.className),\n ref: this._activeImageRefs\n },\n imgWidth: this.props.config.canvasWidth,\n imageMapper: this.renderImageMapper(),\n overlay: this.renderOverlay(),\n productCard: this.renderProductCard(),\n productCardleftPosition: this.getProductCardPositionX(),\n productCardtopPosition: this.getProductCardPositionY(),\n title: this.renderActiveImageDetailsHeading(),\n text: this.renderActiveImageDetailsParagraph(),\n links: this.renderActiveImageDetailsLinks(),\n detailsContainer: { className: 'msc-active-image__details' },\n detailsContainerCta: { className: 'msc-active-image__details__cta' },\n additionalContent: activeImageAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkText: this.handleAdditionalTextChange\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * RenderImageMapper method - To render image mapper.\n * @returns - Returns React.ReactNode | null.\n */\n public renderImageMapper = (): React.ReactNode | null => {\n const { config, context } = this.props;\n const defaultPosition: number = 0;\n const defaultLength: number = 0;\n const productResults = this.props.data.products.result;\n if (config.activePoints && productResults) {\n for (const product of productResults) {\n for (const configProduct of config.activePoints) {\n if (product.ItemId === configProduct.itemId) {\n const productUrl = getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined);\n const coords = [\n configProduct.xPosition ?? defaultPosition,\n configProduct.yPosition ?? defaultPosition,\n configProduct.radius ?? defaultPosition\n ];\n const area = this._activePoints.find(activePoint => JSON.stringify(activePoint.coords) === JSON.stringify(coords));\n this.addActivePoints(area, product, coords, productUrl);\n }\n }\n }\n }\n const mappedArea: IAreaMap = {\n name: `map-${this._activeImageClass}`,\n areas: this._activePoints.length > defaultLength ? this._activePoints : []\n };\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n return (\n \n );\n };\n\n /**\n * EnterArea method - To handle mouse enter event.\n * @param area - Active point area.\n * @param index - Active point index.\n * @param event - Active point AreaEvent.\n */\n public enterArea = (area: IArea, index: number, event: AreaEvent): void => {\n this.setState({ area, overlayClass: 'msc-active-image-overlay' });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(area, index, event);\n }\n if (event.type.toLocaleLowerCase() === 'click' && this._isDesktopViewPort) {\n window.open(area.productUrl, '_self');\n }\n };\n\n /**\n * LeaveArea method - To handle mouse leave event.\n */\n public leaveArea = (): void => {\n if (this._isDesktopViewPort) {\n this.resetState();\n }\n };\n\n /**\n * ResetState method - To reset the state for area and overlayclass.\n */\n public resetState = (): void => {\n this.setState({ area: null, overlayClass: '' });\n };\n\n /**\n * RenderProductComponent method - To render the product card with product information.\n * @returns - Returns React.ReactNode.\n */\n public renderProductComponent = (): React.ReactNode => {\n if (this.state.area?.productSearchResult) {\n const baseImageUrl: string = this.props.context.request.apiSettings.baseImageUrl;\n const imageUrl: string = this.state.area.primaryImageUrl ?? '';\n const primaryImageUrl: string = `${baseImageUrl}${imageUrl}`;\n const product: ProductSearchResult = this.state.area.productSearchResult;\n product.PrimaryImageUrl = primaryImageUrl;\n\n return (\n \n );\n }\n return React.Fragment;\n };\n\n /**\n * RenderProductCard method - To render product cards.\n * @returns - Returns React.ReactNode.\n */\n public renderProductCard = (): React.ReactNode => {\n const { area } = this.state;\n\n return (\n <>\n {area?.center && (\n
    \n
    \n {!this._isDesktopViewPort &&
    \n
    \n )}\n \n );\n };\n\n /**\n * RenderOverlay method - To render overlay for non desktop viewports.\n * @returns - Returns React.ReactNode.\n */\n public renderOverlay = (): React.ReactNode => {\n return <>{!this._isDesktopViewPort &&
    };\n };\n\n /**\n * GetProductCardPositionX method - Provides product card x position to the left or right of active point based on available space.\n * For xs, sm and md viewports it provides x position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionX = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsWidth = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.w\n : defaultImageSettings.viewports.lg?.w;\n const defaultPositionX: number = 0;\n const halfDivisor: number = 2;\n const productCardWidth: number = productImageSettingsWidth ? productImageSettingsWidth : this._defaultProductCardWidth;\n const { area, clientWidth, viewport } = this.state;\n const pointPositionX = area?.center?.[0] ?? clientWidth / halfDivisor;\n const leftAllignPosition = pointPositionX - productCardWidth - productCardWidth / halfDivisor;\n const rightAllignPosition = pointPositionX + productCardWidth / halfDivisor;\n let position: number = (clientWidth - productCardWidth) / halfDivisor;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n if (leftAllignPosition < defaultPositionX) {\n position = rightAllignPosition;\n } else {\n position = leftAllignPosition;\n }\n }\n return position;\n };\n\n /**\n * GetProductCardPositionY method - Provides product card y position in center with respect to active point.\n * For xs, sm and md viewports it provides y position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionY = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsHeight = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.h\n : defaultImageSettings.viewports.lg?.h;\n const halfDivisor: number = 2;\n const { area, viewport } = this.state;\n const produtCardHight: number = productImageSettingsHeight ? productImageSettingsHeight : this._defaultProdutCardHight;\n const pointPositionY = (this.getActiveImageHeight() - produtCardHight) / halfDivisor;\n let position: number = pointPositionY;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n position = (area?.center?.[1] ?? this.getActiveImageHeight() / halfDivisor) - produtCardHight / halfDivisor;\n }\n return position;\n };\n\n /**\n * GetDefaultImageSettings method.\n * @returns MsDyn365.IImageSettings.\n */\n public getDefaultImageSettings = (): MsDyn365.IImageSettings => {\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n lg: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n xl: { q: 'w=275&h=275&m=6', w: 275, h: 275 }\n },\n lazyload: true\n };\n\n return defaultImageSettings;\n };\n\n /**\n * KeyDown method - To handle keydown event.\n * @param event - KeyboardEvent.\n */\n public keyDown = (event: KeyboardEvent): void => {\n if (event.key === ActiveImageConstants.enterKey) {\n const target: HTMLElement = event.target as HTMLElement;\n if (target.nodeName === 'AREA') {\n const area: HTMLAreaElement = target as HTMLAreaElement;\n if (area.href) {\n window.open(area.href, '_self');\n }\n }\n }\n if (event.key === ActiveImageConstants.escKey) {\n this.resetState();\n }\n };\n\n /**\n * GetActiveImageWidth method - To get active image width.\n * @returns Returns number.\n */\n public getActiveImageWidth = (): number => {\n const defaultWidth: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return defaultWidth;\n };\n\n /**\n * GetActiveImageHeight method - To get active image height.\n * @returns Returns number.\n */\n public getActiveImageHeight = (): number => {\n const defaultHeight: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return defaultHeight;\n };\n\n /**\n * HandleLinkTextChange method - To handle link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleTextChange method - To handle text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * HandleParagraphChange method - To handle paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * HandleAdditionalTextChange method - To handle additional text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalLinkTextChange method - To handle additional link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalParagraphChange method - To handle additional paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * RenderActiveImageDetailsLinks method - To render active image details links.\n * @returns - React node.\n */\n public renderActiveImageDetailsLinks = (): React.ReactNode[] | undefined => {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this._telemetryContent, '');\n\n return links?.map((linkData: IActiveImageLinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'msc-active-image__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.willOpenInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n };\n\n /**\n * RenderActiveImageDetailsHeading method - To render active image details heading.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsHeading = (): React.ReactNode | undefined => {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n };\n\n /**\n * RenderActiveImageDetailsParagraph method - To render active image details paragraph.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsParagraph = (): React.ReactNode | undefined => {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n };\n\n /**\n * GetActiveImageId - To get active image id from src.\n * @returns - String.\n */\n public getActiveImageId = (): string => {\n const { activeImage } = this.props.config;\n let activeImageId: string = '';\n if (activeImage?.src) {\n const activeImageSource = activeImage.src.split('/');\n const decrementOne: number = 1;\n const activeImageIdPart = activeImageSource[activeImageSource.length - decrementOne].split('?');\n activeImageId = activeImageIdPart[0] ?? '';\n }\n return activeImageId;\n };\n\n /**\n * Handle outside click method - To handle outside click of the active image product.\n * @param event - Mouse event.\n */\n private readonly _handleOutsideClick = (event: MouseEvent) => {\n if (this._productCardDivRef.current?.contains(event.target as Node)) {\n return;\n }\n this.resetState();\n };\n}\nexport default ActiveImage;\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 { IActiveImageAdditionalContentViewProps } from '../active-image-utilities';\nimport { IActiveImageViewProps } from './active-image';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IActiveImageAdditionalContentViewProps) => {\n return (\n \n {additionalContent.heading}\n \n {additionalContent.text}\n {additionalContent.links}\n \n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nexport const activeImageView: React.FC = props => {\n return (\n \n \n {props.imageMapper}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n \n \n {props.overlay}\n {props.productCard}\n \n \n );\n};\n\nexport default activeImageView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
    \n {orgUnitName}\n
    \n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
    {priceString}
    \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { 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 msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\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 productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
    \n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
    \n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
    \n );\n })}\n
    \n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
    \n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
    \n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
    \n \n
    \n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
    {this.props.resources.productComparisonLoadingText}
    ;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n
    \n );\n};\n\n/**\n * Renders quick order grid table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for desktop view.\n */\nexport const QuickOrderGridDesktopTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n if (product !== undefined) {\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n return (\n <>\n \n \n \n {product.ItemId}\n \n
    \n \n {product.Name}\n \n \n {product.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\n .join(props.resources.quickOrderGridProductDimensionsSeparator)}\n \n
    \n \n {renderProductPrice(props)}\n {renderUnitOfMeasure(props)}\n \n \n \n \n \n \n \n );\n }\n\n return null;\n};\n\n/**\n * Renders rows for mobile view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for mobile view.\n */\nexport const QuickOrderGridMobileTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n if (product !== undefined) {\n return (\n <>\n \n \n \n \n
    \n {product.RecordId}\n \n \n \n
    \n \n \n \n \n \n );\n }\n return null;\n};\n\n/**\n * Quick order table row component.\n * @param props - Configuration of the component.\n * @returns React node for the row.\n */\nexport const QuickOrderGridTableRowComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const rowClassName = `${props.className}__row`;\n const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n let headerCells: JSX.Element;\n if (isMobileView) {\n headerCells = ;\n } else {\n headerCells = ;\n }\n\n return (\n \n {headerCells}\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 MsDyn365, { IComponent, IComponentProps, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport React from 'react';\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { QuickOrderGridProduct } from '../quick-order-grid-product';\nimport { IQuickOrderGridRowCallbacks } from '../utilities';\nimport {\n IQuickOrderGridTableHeaderResources,\n IQuickOrderGridTableRowResources,\n QuickOrderGridTableHeaderComponent,\n QuickOrderGridTableRowComponent\n} from './components';\n\n/**\n * Quick order table data interface.\n */\ninterface IQuickOrderGridTableData {\n quickOrderGridProducts: QuickOrderGridProduct[];\n isOrderQuantityLimitsFeatureEnabled: boolean;\n}\n\n/**\n * Quick order table resources.\n */\nexport interface IQuickOrderGridTableResources extends IQuickOrderGridTableHeaderResources, IQuickOrderGridTableRowResources {}\n\n/**\n * Quick order table props.\n */\nexport interface IQuickOrderGridTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n moduleId: string;\n moduleTypeName: string;\n\n resources: IQuickOrderGridTableResources;\n isMobileView: boolean;\n imageSettings?: IImageSettings;\n callBacks: IQuickOrderGridRowCallbacks;\n}\n\n/**\n * Quick order table component.\n */\nexport interface IQuickOrderGridTableComponent extends IComponent {}\n\n/**\n * The quick order table.\n * @param props -- The quick order table props.\n * @returns The quick order table element.\n */\nexport const QuickOrderGridTableComponent: React.FC = (props: IQuickOrderGridTableProps) => {\n const [isMobile, setIsMobile] = React.useState(props.isMobileView);\n const quickOrderGridProducts = props.data.quickOrderGridProducts;\n const isOrderQuantityLimitsFeatureEnabled = props.data.isOrderQuantityLimitsFeatureEnabled;\n\n /**\n * Update the view port.\n */\n const updateViewport = () => {\n setIsMobile(props.isMobileView);\n };\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', updateViewport);\n }\n\n const headerClassName = `${props.className}__header`;\n const rowClassName = `${props.className}__row`;\n\n return (\n \n \n {quickOrderGridProducts.map((quickOrderProduct, index) => {\n let quantity = quickOrderProduct.productLine.productListLine.Quantity!;\n const product = quickOrderProduct.productLine.fullProduct;\n let min: number = 1;\n let max: number = 10;\n const behavior = product?.ProductDetails?.Behavior;\n if (isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(behavior)) {\n if (behavior.MinimumQuantity && behavior.MinimumQuantity > 0) {\n min = behavior.MinimumQuantity;\n }\n if (behavior.MaximumQuantity && behavior.MaximumQuantity > 0) {\n max = behavior.MaximumQuantity;\n }\n quantity = Math.max(quantity, min);\n }\n const price = quickOrderProduct.productLine.fullProduct?.ProductPrice;\n return (\n \n );\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 {\n getProductConfigure,\n IProductDimensionCallbacks,\n IProductDimensionConfigureResources,\n IProductDimensionConfigureViewProps\n} from '@msdyn365-commerce/components';\nimport {\n ProductDimension,\n ProductDimensionType,\n ProductDimensionValue,\n ProductListsDataActions,\n ProductListType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n addItemToProductListAction,\n AddItemToProductListInput,\n ArrayExtensions,\n createProductList,\n CreateProductListInput,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getScanResult,\n GetScanResultInput,\n getSelectedVariant,\n IDimensionForSelectedVariant,\n IPromiseQueue,\n ObjectExtensions,\n QuickOrderTemplate,\n QuickOrderTemplateLine,\n SelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ActiveProductListInput } from './actions';\nimport {\n EcommerceQuantityLimitConfigurationsFeatureName,\n IQuickOrderGridActionsProps,\n IQuickOrderGridActionsViewProps,\n IQuickOrderGridRowCallbacks,\n IQuickOrderGridState,\n QuickOrderGridActionsView,\n QuickOrderGridDrawer,\n QuickOrderGridFormComponent,\n QuickOrderGridProduct,\n QuickOrderGridTableComponent,\n RetailDefaultOrderQuantityLimitsFeatureName\n} from './components';\nimport { IQuickOrderGridData } from './quick-order-grid.data';\nimport { IQuickOrderGridProps, IQuickOrderGridResources } from './quick-order-grid.props.autogenerated';\n\n/**\n * QuickOrder Grid View props.\n */\nexport interface IQuickOrderGridViewProps extends IQuickOrderGridProps {\n header: JSX.Element;\n actions?: INodeProps;\n isB2bCustomer?: boolean;\n isQuickOrderGridFormExpanded: boolean;\n contentProps: INodeProps;\n drawer: INodeProps;\n loading?: React.ReactNode;\n quickOrderGridForm: INodeProps;\n quickOrderGridFormProductContent: INodeProps;\n quickOrderGridFormMsgContent: INodeProps;\n quickOrderGridProps: IModuleProps;\n form: React.ReactNode;\n configure?: IProductDimensionConfigureViewProps;\n isMobileView: boolean;\n container?: JSX.Element;\n orderActions?: IQuickOrderGridActionsViewProps | null;\n bulkPurchase?: React.ReactNode;\n}\n\n/**\n * QuickOrder Grid View port.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * QuickOrderGrid component.\n * @extends {React.PureComponent>}\n */\nclass QuickOrderGrid extends React.PureComponent, IQuickOrderGridState> {\n private readonly _productTextInput: React.RefObject;\n\n private readonly _quantityInput: React.RefObject;\n\n private readonly _waitTime: number = 500;\n\n private readonly _dimensionUpdateQueueMaxLength: number = 2;\n\n private readonly _errorCssClass: string = 'danger';\n\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n\n private readonly _quickOrderGridFormClass: string;\n\n private readonly _quickOrderGridFormProductContent: string;\n\n private readonly _quickOrderGridFormMsgContent: string;\n\n private readonly _telemetryContent: ITelemetryContent;\n\n private readonly _dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(this._dimensionUpdateQueueMaxLength);\n\n private _dimensions: { [id: number]: string } = {};\n\n private _initializedDimensions: Set = new Set();\n\n private readonly _cssClassNameConfigure: string = 'ms-quick-order_grid__content-form-main';\n\n private readonly _className: string = 'ms-quick-order-grid';\n\n // @ts-expect-error: Debouce needs to be used as type.\n private _cancellabelDebounce: debounce;\n\n private _isOrderQuantityLimitsFeatureEnabled: boolean = false;\n\n private _isChannelLimitsFeatureEnabled: boolean = false;\n\n private _applyDefaultOrderSettingsForCartLine: boolean = false;\n\n private readonly _quickOrderGridCallbacks: IProductDimensionCallbacks = {\n initializeDimension: (initializedDimension: string): void => {\n if (initializedDimension) {\n this._initializedDimensions.add(initializedDimension);\n }\n },\n /**\n * Get Dropdown name.\n * @param selectedDimensionId - Dimension type.\n * @param selectedDimensionValueId - Resources.\n * @returns Dropdown name.\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.state.productDimensions?.length) {\n return this._dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: string) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw new Error(error);\n }\n });\n }\n },\n\n /**\n * Get Dropdown name.\n * @param dimensionType - Dimension type.\n * @param resources - Resources.\n * @returns Dropdown name.\n */\n getDropdownName: (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n\n /**\n * Method to call on dimension change.\n * @param isUpdatingDimension - Flag to update dimension.\n */\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n }\n };\n\n private readonly _quickOrderGridRowCallbacks: IQuickOrderGridRowCallbacks = {\n /**\n * Method to call remove button.\n * @param line - Grid row product.\n */\n onRemoveItem: (line: QuickOrderGridProduct): void => {\n this._removeItemRowFromTable(line.productLine);\n },\n\n /**\n * Method to call on change quantity button.\n * @param productListLineId - Grid row product list line id.\n * @param quantity - Product quantity.\n * @returns - Falg to get confirmation for action.\n */\n onChangeQuantity: (productListLineId: string | undefined, quantity: number): boolean => {\n return this._changeRowQuantity(productListLineId, quantity);\n }\n };\n\n public constructor(props: IQuickOrderGridProps) {\n super(props);\n this._productTextInput = React.createRef();\n this._quantityInput = React.createRef();\n\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isQuickOrderGridFormExpanded: false,\n min: 0,\n max: 10,\n quantity: 1,\n productResponse: undefined,\n productDimensions: undefined,\n productDimensionErrorState: {\n configureErrors: {}\n },\n isMobile: this.isMobile,\n products: [],\n isUpdatingDimension: false,\n productListId: ''\n };\n\n this._quickOrderGridFormClass = 'ms-quick-order-grid__content-form';\n this._quickOrderGridFormProductContent = 'ms-quick-order-grid__content-form-main';\n this._quickOrderGridFormMsgContent = 'ms-quick-order-grid__content-form-msg';\n\n this._isOrderQuantityLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)\n ?.IsEnabled ?? false;\n\n this._isChannelLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName)\n ?.IsEnabled ?? false;\n\n const cartConfiguration = this.props.data.cartConfiguration;\n this._applyDefaultOrderSettingsForCartLine = cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false;\n }\n\n @computed public get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { data } = this.props;\n if (!data.customerInformation.result) {\n return null;\n }\n const quickOrderTemplate = data.quickOrderTemplate;\n\n if (quickOrderTemplate?.result !== undefined) {\n this.setState({\n products: quickOrderTemplate.result.quickOrderTemplateLines,\n productListId: quickOrderTemplate.result.productList.Id\n });\n }\n const { className = '', maxQuantity } = this.props.config;\n const customerInfo = this.props.data.customerInformation.result;\n const {\n quickOrderGridModuleHeading,\n quickOrderGridModuleDescription,\n quickOrderGridAddtogrid,\n quickOrderGridProductQuantityInputLabel,\n quickOrderGridProductInputLabel,\n quickOrderGridProductDimensionTypeColor,\n quickOrderGridProductDimensionTypeConfiguration,\n quickOrderGridSelectDimensionFormatString,\n quickOrderGridProductDimensionTypeSize,\n quickOrderGridProductDimensionTypeStyle,\n quickOrderGridProductDimensionTypeAmount,\n quickOrderGridModulePageHeading\n } = this.props.resources;\n\n const productConfigureResources: IProductDimensionConfigureResources = {\n selectDimensionFormatString: quickOrderGridSelectDimensionFormatString,\n productDimensionTypeColor: quickOrderGridProductDimensionTypeColor,\n productDimensionTypeConfiguration: quickOrderGridProductDimensionTypeConfiguration,\n productDimensionTypeSize: quickOrderGridProductDimensionTypeSize,\n productDimensionTypeStyle: quickOrderGridProductDimensionTypeStyle,\n productDimensionTypeAmount: quickOrderGridProductDimensionTypeAmount\n };\n\n const { isQuickOrderGridFormExpanded, productDimensionErrorState, productResponse, productDimensions } = this.state;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
    \n \n
    \n );\n\n const viewProps: IQuickOrderGridViewProps = {\n ...(this.props as IQuickOrderGridProps),\n\n quickOrderGridProps: { className: classnames('ms-quick-order-grid', className), moduleProps: this.props },\n contentProps: { className: 'ms-quick-order-grid__content' },\n isB2bCustomer: customerInfo?.IsB2b,\n header,\n actions: {\n className: `${this._className}-action-bar`,\n tag: 'div'\n },\n drawer: {\n tag: QuickOrderGridDrawer,\n className: `${this._className}__drawer`,\n collapseProps: { isOpen: this.state.isQuickOrderGridFormExpanded },\n moduleHeadingText: quickOrderGridModuleHeading,\n moduleDescriptionText: quickOrderGridModuleDescription,\n requestContext: this.props.context.request,\n telemetryContent: this._telemetryContent\n },\n bulkPurchase: this._renderBulkPurchase(),\n quickOrderGridForm: {\n className: `${this._quickOrderGridFormClass} ${isQuickOrderGridFormExpanded ? 'qo-show' : 'qo-hide'}`\n },\n quickOrderGridFormProductContent: {\n className: this._quickOrderGridFormProductContent\n },\n quickOrderGridFormMsgContent: {\n className: this._quickOrderGridFormMsgContent\n },\n form: QuickOrderGridFormComponent({\n productTextInput: this._productTextInput,\n quantityTextInput: this._quantityInput,\n isAddtoListDisabled: !productResponse,\n ariaLabelAddtoCart: quickOrderGridAddtogrid,\n ariaLabelProduct: quickOrderGridProductInputLabel,\n ariaLabelQuantity: quickOrderGridProductQuantityInputLabel,\n maxChars: 50,\n minQuantity: this.state.min ?? 0,\n maxQuantity: this.state.max ?? maxQuantity,\n moduleClassName: this._className,\n quickOrderGridState: this.state,\n handleInputChange: this._handleInputChange,\n handleQuantityChange: this._handleQuantityChange,\n handleAddProductListClick: this._addItemToProductListLine\n }),\n configure:\n productResponse && productDimensions\n ? getProductConfigure(\n this._cssClassNameConfigure,\n this.props.context,\n this.props.friendlyName,\n this.props.telemetry,\n quickOrderGridSelectDimensionFormatString,\n productConfigureResources,\n this._quickOrderGridCallbacks,\n productResponse,\n productDimensions,\n productDimensionErrorState\n )\n : undefined,\n isQuickOrderGridFormExpanded: this.state.isQuickOrderGridFormExpanded,\n isMobileView: this.state.isMobile,\n container: ArrayExtensions.hasElements(this.state.products) ? this._renderListContainer() : undefined,\n orderActions: this._renderQuickOrderGridActions(quickOrderTemplate?.result)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderQuickOrderGridActions(quickOrderTemplate: QuickOrderTemplate | undefined): IQuickOrderGridActionsViewProps | null {\n const { typeName, context, resources } = this.props;\n const {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n } = resources;\n if (ArrayExtensions.hasElements(quickOrderTemplate?.quickOrderTemplateLines)) {\n const quickOrderGridActions: IQuickOrderGridActionsProps = {\n data: { quickOrderTemplate },\n moduleClassName: this._className,\n id: 'quick-order-grid',\n typeName,\n context,\n handlers: {\n removeProductList: this._removeProductList,\n onErrorMessage: (message: string) =>\n this.setState({\n topStateMessage: {\n messageText: message,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n })\n },\n quickOrderGridState: this.state,\n resources: {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n }\n };\n\n return QuickOrderGridActionsView(quickOrderGridActions);\n }\n return null;\n }\n\n /**\n * Renders bulk purchase module.\n * @returns Bulk purchase module react node.\n */\n private _renderBulkPurchase(): 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 (!ArrayExtensions.hasElements(this.props.slots.bulkPurchaseSlots)) {\n return null;\n }\n\n const containerClass = `${this._className}__bulk-purchase`;\n return (\n
    \n {React.cloneElement(this.props.slots.bulkPurchaseSlots[0] as React.ReactElement, {\n productDimensions: this.state.productDimensions\n })}\n
    \n );\n }\n\n /**\n * Render list container.\n * @returns JSX element.\n */\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__table-content`;\n return
    {this._renderQuickOrderTable(this._className)}
    ;\n }\n\n /**\n * Initial the products on quick order.\n * @returns List of quick order products or undefined.\n */\n private _initQuickOrderGridProducts(): QuickOrderGridProduct[] {\n const products: QuickOrderTemplateLine[] = this.state.products;\n\n const quickOrderGridProduct: QuickOrderGridProduct[] = products.map((product: QuickOrderTemplateLine) => {\n return new QuickOrderGridProduct(product);\n });\n\n return ArrayExtensions.validValues(quickOrderGridProduct);\n }\n\n /**\n * Method to call on clear button.\n */\n private readonly _removeProductList = () => {\n const { context, data, telemetry, resources } = this.props;\n const { quickOrderTemplate } = data;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && quickOrderTemplate && quickOrderTemplate.result) {\n ProductListsDataActions.deleteAsync({ callerContext: context.actionContext }, quickOrderTemplate.result.productList)\n .then(() => {\n window.location.reload();\n })\n .catch((error: string) => {\n telemetry.warning('[quick-order-grid] Unable to delete product list.');\n telemetry.error(error);\n this._updateStatusState(\n resources.quickOrderGridDeleteProductListFailedText,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n });\n } else {\n telemetry.warning('[quick-order-grid] Failed to delete product list. Product List was not found');\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param className - Class name.\n * @returns JSX element.\n */\n private _renderQuickOrderTable(className: string): JSX.Element {\n const tableClassName = `${className}__table-list`;\n\n return (\n \n );\n }\n\n private _updateQuantitiesInState(product: SimpleProduct): void {\n const min: number = this._getMinQuantityForCartLineItem(this._isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n this._isChannelLimitsFeatureEnabled || this._isOrderQuantityLimitsFeatureEnabled,\n product\n );\n let quantity: number = this._getQuantity(\n this._isOrderQuantityLimitsFeatureEnabled,\n this._applyDefaultOrderSettingsForCartLine,\n product\n );\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 (isOrderQuantityLimitsFeatureEnabled && product?.Behavior?.MinimumQuantity && product.Behavior.MinimumQuantity > 0) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (isQuantityLimitsFeatureEnabled && product?.Behavior?.MaximumQuantity && product.Behavior.MaximumQuantity > 0) {\n return product.Behavior.MaximumQuantity;\n }\n\n return this.props.context.app.config.maxQuantityForCartLineItem;\n }\n\n private _getQuantity(\n isOrderQuantityLimitsFeatureEnabled: boolean,\n applyDefaultOrderSettingsForCartLine: boolean,\n product: SimpleProduct\n ): number {\n let defaultQuantity = 1;\n\n if (!isOrderQuantityLimitsFeatureEnabled || !applyDefaultOrderSettingsForCartLine) {\n return defaultQuantity;\n }\n\n if (product?.Behavior?.DefaultQuantity && product.Behavior.DefaultQuantity > 0) {\n defaultQuantity = product.Behavior.DefaultQuantity;\n }\n\n return defaultQuantity;\n }\n\n /**\n * Method to called on product input change.\n * @param query - Product inventory info.\n */\n private readonly _handleInputChange = (query: string): void => {\n const queryMinLength = 4;\n if (!query || query.length > queryMinLength) {\n this.setState({ quantity: 0, productDimensions: [], productResponse: undefined });\n this._updateStatusState('', '', '', false);\n }\n if (this._cancellabelDebounce) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -- existing code.\n this._cancellabelDebounce.cancel();\n }\n\n const { telemetry, context } = this.props;\n const zeroNumber = 0;\n if (!StringExtensions.isNullOrEmpty(query)) {\n this._cancellabelDebounce = debounce(() => {\n getScanResult(\n new GetScanResultInput(\n context.actionContext.requestContext.apiSettings,\n query,\n context.actionContext.requestContext.apiSettings.channelId\n ),\n this.props.context.actionContext\n )\n .then(results => {\n this.setState({\n productResponse: results?.Product,\n productDimensions: results?.ProductDimensionFull,\n isQuickOrderGridFormExpanded: true\n });\n if (results?.Product) {\n this._updateQuantitiesInState(results.Product);\n }\n })\n .catch((error: Error) => {\n telemetry.exception(error);\n telemetry.debug('Unable to get scan results');\n });\n }, this._waitTime);\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- Existing code.\n this._cancellabelDebounce();\n }, zeroNumber);\n this.setState({ isQuickOrderGridFormExpanded: true });\n } else {\n this.setState({ productResponse: undefined, isQuickOrderGridFormExpanded: true });\n }\n };\n\n /**\n * Method to called on quantity change.\n * @param value - Quantity value.\n */\n private readonly _handleQuantityChange = (value: string): void => {\n let currentValue = Number.parseInt(value, 10);\n const inputElement = this._quantityInput.current instanceof HTMLInputElement && this._quantityInput.current;\n const quantityChangeDebounceTimeout = 200;\n let minimumQuantity = 0;\n let needToUpdateUIValue: boolean = false;\n if (this._isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(this.state.productResponse?.Behavior)) {\n const behavior = this.state.productResponse!.Behavior;\n minimumQuantity = behavior?.MinimumQuantity ?? 0;\n const newCurrentValue = Math.max(currentValue, minimumQuantity);\n if (newCurrentValue !== currentValue) {\n needToUpdateUIValue = true;\n }\n currentValue = newCurrentValue;\n }\n\n this.setState({ quantity: currentValue }, () => {\n debounce(() => {\n if (needToUpdateUIValue && !Number.isNaN(this.state.quantity) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.value = currentValue.toString();\n }\n }, quantityChangeDebounceTimeout)();\n });\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionType - Dimension Type.\n * @param resources - String resources.\n * @returns Dropdwon label.\n */\n private readonly _getDropdownName = (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n const isGiftCard = this.state.productResponse?.IsGiftCard;\n\n switch (dimensionType) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n /**\n * Method to update dimension and product in UI.\n */\n private readonly _updateDimensions = async (): Promise => {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { productDimensions, productResponse } = this.state;\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\n if (!productResponse || !hasProductDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this._dimensions };\n this.setState({ isUpdatingDimension: true });\n\n // Step 1: Update state to indicate which dimensions are selected\n if (this.state.productDimensionErrorState.otherError) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const clearOtherErrorState = { ...this.state.productDimensionErrorState };\n clearOtherErrorState.otherError = undefined;\n this.setState({ productDimensionErrorState: clearOtherErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const dimensionKey of Object.keys(dimensionsToUpdate)) {\n if (this.state.productDimensionErrorState.configureErrors[dimensionKey]) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors[dimensionKey] = undefined;\n\n this.setState({ productDimensionErrorState: 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.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 // eslint-disable-next-line no-async-promise-executor -- existing code\n const selectedProduct = new Promise(async resolve => {\n const newProduct = await getSelectedVariant(\n new SelectedVariantInput(\n productResponse.MasterProductId ? productResponse.MasterProductId : productResponse.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n if (newProduct) {\n 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 const variantProduct = await selectedProduct;\n this.setState({ productResponse: variantProduct !== null ? variantProduct : undefined });\n };\n\n /**\n * Method to get updated dimension value.\n * @param productDimensionFull - Product dimension full.\n * @param newValueId - New Dimension value.\n * @returns Dimension Value.\n */\n private readonly _updateDimensionValue = (\n productDimensionFull: IDimensionForSelectedVariant,\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 /**\n * Method to get dropdwon name.\n * @param dimensionTypeValue - Dimension Type.\n * @param resources - String resources.\n * @param isGiftCard - Flag to check if its a giftcard product.\n * @returns Dropdwon error label.\n */\n private readonly _getDimensionErrorString = (\n dimensionTypeValue: number,\n resources: IQuickOrderGridResources,\n isGiftCard?: boolean\n ): string => {\n const amountErrorMessage = resources.quickOrderGridproductDimensionTypeAmountErrorMessage;\n\n switch (dimensionTypeValue) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.quickOrderGridproductDimensionTypeColorErrorMessage;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.quickOrderGridproductDimensionTypeConfigurationErrorMessage;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.quickOrderGridproductDimensionTypeSizeErrorMessage;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? amountErrorMessage : resources.quickOrderGridproductDimensionTypeStyleErrorMessage;\n default:\n return '';\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param productResponse - Simple Product.\n * @param quantity - Product Quantity.\n * @returns Flag to validate productlistline.\n */\n private readonly _validateCart = (productResponse: SimpleProduct, quantity: number): boolean => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- existing code\n const missingDimensions = productResponse.Dimensions?.filter(\n dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value)\n );\n const minimumQuantity = 0;\n if (ArrayExtensions.hasElements(missingDimensions)) {\n const userMessage = this._getConfigureErrors(missingDimensions, false);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- existing code\n if (this.state.productDimensionErrorState.configureErrors) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors = userMessage;\n\n this.setState({ productDimensionErrorState: errorState });\n return false;\n }\n }\n\n if (quantity <= minimumQuantity) {\n const resources = this.props.resources;\n this._updateStatusState(resources.quickOrderGridWrongQuantityErrorMsg, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n }\n return true;\n };\n\n /**\n * Initial the products on quick order.\n * @param result - Simple Product.\n * @param isGiftCard - Product Quantity.\n * @returns Flag to validate cart.\n */\n private _getConfigureErrors(\n result: ProductDimension[] | undefined,\n isGiftCard?: boolean\n ): { [configureId: string]: string | undefined } {\n if (!result) {\n return {};\n }\n const dimensions: { [configureId: string]: string | undefined } = {};\n const resources = this.props.resources;\n for (const dimension of result) {\n dimensions[dimension.DimensionTypeValue] = this._getDimensionErrorString(dimension.DimensionTypeValue, resources, isGiftCard);\n }\n return dimensions;\n }\n\n /**\n * Method to call on quantity change in row.\n * @param itemKey - Product Key.\n * @param quantity - Product quantity.\n * @returns Flag to update status.\n */\n private readonly _changeRowQuantity = (itemKey: string | undefined, quantity: number): boolean => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n if (quickOrderTemplate?.result) {\n const quickOrderTemplateLinesData = quickOrderTemplate.result.quickOrderTemplateLines;\n if (ArrayExtensions.hasElements(quickOrderTemplateLinesData)) {\n const orderLineIndex = quickOrderTemplateLinesData.findIndex(\n (lines: QuickOrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...quickOrderTemplateLinesData[orderLineIndex] };\n if (quickOrderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return true;\n }\n const previousQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n ProductListsDataActions.updateProductListLinesAsync(\n { callerContext: context.actionContext },\n quickOrderTemplate.result.productList.Id,\n [line.productListLine]\n )\n .then(list => {\n if (ArrayExtensions.hasElements(list)) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n quickOrderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...quickOrderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedProductList = { ...quickOrderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveProductListInput(context.actionContext.requestContext),\n updatedProductList\n );\n return true;\n }\n\n return false;\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable to update product quantity.');\n telemetry.error(error.message);\n const userMessage = 'Failed to update quantity value.';\n newProductListLine.productListLine.Quantity = previousQuantity;\n this._updateStatusState(userMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n });\n }\n return false;\n }\n\n return false;\n };\n\n /**\n * Method to call on remove item from table.\n * @param line - Order Template Line.\n */\n private readonly _removeItemRowFromTable = (line: QuickOrderTemplateLine): void => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n\n if (quickOrderTemplate?.result) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken) {\n ProductListsDataActions.removeProductListLinesAsync(\n { callerContext: context.actionContext },\n line.productListLine.ProductListId!,\n [line.productListLine]\n )\n .then(() => {\n window.location.reload(false);\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable remove item from product list grid');\n telemetry.error(error.message);\n });\n } else {\n telemetry.warning('[quick-order-grid] Unable remove items from product list grid user token was not found');\n }\n }\n };\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 /**\n * Method to call on add item from form.\n */\n private readonly _addItemToProductListLine = async (): Promise => {\n const {\n context: { actionContext },\n resources,\n telemetry\n } = this.props;\n const {\n quickOrderGridAddedToGridSuccessMessage,\n quickOrderGridAddedToGridFailureMessage,\n quickOrderGridAddedToGridDuplicateError\n } = resources;\n const { productResponse, quantity, productListId } = this.state;\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n\n this._updateStatusState('', '', '', false);\n\n if (productResponse !== undefined && this._validateCart(productResponse, quantity)) {\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n await this._createProductList();\n }\n\n if (StringExtensions.isNullOrWhitespace(this.state.productListId)) {\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return;\n }\n const input = new AddItemToProductListInput(\n this.state.productListId,\n productResponse.RecordId,\n quantity,\n productResponse.DefaultUnitOfMeasure ?? 'ea',\n this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogId\n );\n\n await addItemToProductListAction(input, actionContext)\n .then(result => {\n if (result.ProductListId) {\n this._updateStatusState(quickOrderGridAddedToGridSuccessMessage, 'success', 'fas fa-check', true);\n window.location.reload();\n this.setState({});\n }\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error trying to Update Grid Line from the quick order grid');\n if (error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n this._updateStatusState(\n quickOrderGridAddedToGridDuplicateError,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n } else {\n this._updateStatusState(\n quickOrderGridAddedToGridFailureMessage,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n }\n });\n }\n };\n\n /**\n * Method to create product list.\n * @returns - ProductListId.\n */\n private _createProductList = async (): Promise => {\n const {\n context: { actionContext },\n telemetry,\n resources\n } = this.props;\n const { productListId } = this.state;\n const { quickOrderGridAddedToGridFailureMessage } = resources;\n\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n const input = new CreateProductListInput('', ProductListType.QuickOrder);\n\n await createProductList(input, actionContext)\n .then(result => {\n if (!StringExtensions.isNullOrWhitespace(result.Id)) {\n this.setState({ productListId: result.Id });\n return result.Id;\n }\n return '';\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error on creating productlist from quick order grid');\n telemetry.error(error.message);\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return '';\n });\n return '';\n }\n\n return productListId;\n };\n\n /**\n * Method to create product list.\n * @param messageText - Message Text.\n * @param statusCssString - Css class names.\n * @param messageGlyph - Glyph string.\n * @param isOpen - Flag to show.\n */\n private readonly _updateStatusState = (messageText: string, statusCssString: string, messageGlyph: string, isOpen: boolean): void => {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Showing user message in Form component.\n stateMessage: {\n messageText,\n statusCssString,\n messageGlyph,\n isOpen\n }\n });\n };\n}\nexport default QuickOrderGrid;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IErrorState } from '@msdyn365-commerce/components';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IDimensionForSelectedVariant, OrderTemplateLine } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { QuickOrderGridProduct } from './quick-order-grid-product';\n\n/**\n * QuickOrderGrid state message Interface.\n */\nexport interface IQuickOrderGridStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * QuickOrderGrid state Interface.\n */\nexport interface IQuickOrderGridState {\n isQuickOrderGridFormExpanded: boolean;\n isUpdatingDimension?: boolean;\n productResponse: SimpleProduct | undefined;\n productDimensions: IDimensionForSelectedVariant[] | undefined;\n min: number | undefined;\n max: number | undefined;\n quantity: number;\n stateMessage?: IQuickOrderGridStateMessage;\n topStateMessage?: IQuickOrderGridStateMessage;\n productDimensionErrorState: IErrorState;\n isMobile: boolean;\n products: OrderTemplateLine[];\n productListId: string;\n}\n\n/**\n * QuickOrder Grid Row view.\n */\nexport interface IQuickOrderGridRowViewModel extends OrderTemplateLine {\n isChecked: boolean;\n}\n\n/**\n * Interface for quick order callbacks.\n */\nexport interface IQuickOrderGridRowCallbacks {\n onRemoveItem(line: QuickOrderGridProduct): void;\n onChangeQuantity(orderTemplateLineId: string | undefined, quantity: number): boolean;\n}\n\n/**\n * Interface for quick order grid action view props.\n */\nexport interface IQuickOrderGridActionsViewProps {\n addProductListToBag: React.ReactNode;\n removeProductList?: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\n\nexport const EcommerceQuantityLimitConfigurationsFeatureName: string =\n 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionConfigureDropdownViewProps, IProductDimensionConfigureViewProps } from '@msdyn365-commerce/components';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderGridViewProps, IQuickOrderGridFormViewProps } from './index';\n\n/**\n * Render product dimension/configure dropdown.\n * @param dropdown -- Product dimension drop down.\n * @returns Dropdown.\n */\nconst renderConfigureDropdown = (dropdown: IProductDimensionConfigureDropdownViewProps): JSX.Element => {\n const { containerProps, labelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {errors}\n {select}\n \n );\n};\n\n/**\n * Render product dimension/configure container.\n * @param configure -- Product dimension configuration.\n * @returns Container to have dimension dropdown.\n */\nconst renderConfigure = (configure?: IProductDimensionConfigureViewProps): JSX.Element | null => {\n if (configure !== undefined) {\n const { containerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n }\n return null;\n};\n\n/**\n * Render product dimension/configure container.\n * @param form -- Form props.\n * @param isMobileView -- Flag to check mobile view.\n * @param quickOrderForm - Form component container.\n * @param quickOrderProductContent - Form product component.\n * @param quickOrderMessageContent - Form user message component.\n * @param configure - Product Dimension component.\n * @returns Jsx element of quick order form component.\n */\nconst renderForm = (\n form: IQuickOrderGridFormViewProps,\n isMobileView: boolean,\n quickOrderForm: INodeProps,\n quickOrderProductContent: INodeProps,\n quickOrderMessageContent: INodeProps,\n configure?: IProductDimensionConfigureViewProps\n) => {\n return isMobileView ? (\n \n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.userMessage}\n {form.addToListBtn}\n \n \n ) : (\n \n {form.userMessage}\n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.addToListBtn}\n \n \n );\n};\n\n/**\n * Retrieves current sort criteria.\n * @param props - QuickOrder Grid view props.\n * @returns - Render View.\n */\nconst quickOrderGridView: React.FC = props => {\n const {\n quickOrderGridProps,\n contentProps,\n form,\n quickOrderGridForm,\n drawer,\n configure,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n isMobileView,\n header,\n container,\n actions,\n orderActions\n } = props;\n\n return (\n \n {header}\n {actions && (\n \n {orderActions?.userMessage}\n {orderActions?.addProductListToBag}\n {orderActions?.removeProductList}\n \n )}\n \n \n {renderForm(\n form as IQuickOrderGridFormViewProps,\n isMobileView,\n quickOrderGridForm,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n configure\n )}\n {props.bulkPurchase}\n \n \n {container}\n \n );\n};\n\nexport default quickOrderGridView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, Collapse, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IQuickOrderDrawerProps } from './quick-order-drawer-props';\n\nexport interface IQuickOrderDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Quick Order Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class QuickOrderDrawer extends React.Component {\n public state: IQuickOrderDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IQuickOrderDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n this.props.openGlyph ? this.props.openGlyph : this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass, this.props.openGlyph ? this.props.openGlyph : '');\n this.drawerCloseGlyph = classnames(this.drawerGlyphClass, this.props.closeGlyph ? this.props.closeGlyph : '');\n }\n }\n\n public shouldComponentUpdate(nextProps: IQuickOrderDrawerProps, nextState: IQuickOrderDrawerState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n // eslint-disable-next-line react/no-direct-mutation-state\n this.state.isOpen = collapseProps.isOpen;\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className ? this.props.className : '');\n this.isManuallyToggled = false;\n return (\n
    \n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
    \n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames(\n 'drawer__buttontext',\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : ''\n );\n return (\n <>\n

    {this.props.moduleHeadingText}

    \n \n {this.props.moduleDescriptionText}\n \n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return ;\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.setState({ isOpen: !this.state.isOpen });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\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 { Alert, Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderState } from '../quick-order';\n\nexport interface IQuickOrderFormProps {\n disableAddtoCart: boolean | undefined;\n productTextInput: React.RefObject;\n quantityTextInput: React.RefObject;\n maxChars: number;\n maxQuantity?: number;\n ariaLabelQuantity: string;\n ariaLabelProduct: string;\n ariaLabelAddtoCart: string;\n addQuantityPlaceholderText: string;\n quickOrderState: IQuickOrderState;\n handleInputChange(query: string): void;\n handleQuantityChange(query: string): void;\n handleAddToCartClick(): Promise;\n}\n\nexport interface IQuickOrderFormViewProps {\n product: React.ReactNode;\n quantity: React.ReactNode;\n addToCartBtn: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\n/**\n * On Input Change functionality.\n * @param handleInputChange -Input change function.\n * @returns Input change value.\n */\nconst onInputChangeFunction = (handleInputChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleInputChange(event.target.value || '');\n};\n\n/**\n * On Quantity Change functionality.\n * @param handleQuantityChange -Quantity change function.\n * @returns Quantity change value.\n */\nconst onQuantityChangeFunction = (handleQuantityChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleQuantityChange(event.target.value || '');\n};\n\nexport const QuickOrderFormComponent = (props: IQuickOrderFormProps): IQuickOrderFormViewProps => {\n const {\n productTextInput,\n quantityTextInput,\n quickOrderState,\n maxChars,\n maxQuantity,\n disableAddtoCart,\n ariaLabelQuantity,\n ariaLabelProduct,\n ariaLabelAddtoCart,\n addQuantityPlaceholderText,\n handleQuantityChange,\n handleInputChange,\n handleAddToCartClick\n } = props;\n\n const onInputChange = onInputChangeFunction(handleInputChange);\n\n const onQuantityInputChange = onQuantityChangeFunction(handleQuantityChange);\n\n const productNode = (\n
    \n

    \n {ariaLabelProduct}\n

    \n \n
    \n );\n\n const quantityNode = (\n
    \n

    \n {ariaLabelQuantity}\n

    \n \n
    \n );\n\n const addtoCartNode = (\n
    \n \n {ariaLabelAddtoCart}\n \n
    \n );\n\n const userMessageNode =\n quickOrderState && quickOrderState.stateMessage ? (\n \n \n {quickOrderState.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return {\n product: productNode,\n addToCartBtn: addtoCartNode,\n quantity: quantityNode,\n userMessage: userMessageNode\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { observable } from 'mobx';\n\n/**\n * Represents a product for quick order.\n */\nexport class QuickOrderProduct {\n @observable\n public isSelected: boolean;\n\n public readonly cartLine: CartLine;\n\n public readonly simpleProduct: SimpleProduct;\n\n public constructor(cartLine: CartLine, simpleProduct: SimpleProduct) {\n this.cartLine = cartLine;\n this.simpleProduct = simpleProduct;\n this.isSelected = false;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Interface for quick order table header resources.\n */\nexport interface IQuickOrderTableHeaderResources {\n quickOrderProductNumberText: string;\n quickOrderProductText: string;\n quickOrderUnitPriceText: string;\n quickOrderUnitOfMeasureText: string;\n quickOrderQuantityText: string;\n quickOrderTotalText: string;\n quickOrderActionsText: string;\n}\n\n/**\n * Interface for quick order table props.\n */\nexport interface IQuickOrderTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isMobile: boolean;\n resources: IQuickOrderTableHeaderResources;\n}\n\n/**\n * Interface for quick order table header component.\n */\nexport interface IQuickOrderTableHeaderComponent extends IComponent {}\n\n/**\n * Get the quick order header cells for desktop.\n * @param props -- The quick order table header props.\n * @returns The list of cells for quick order header component in desktop version.\n */\nconst QuickOrderDesktopHeaderCellsComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const { resources } = props;\n const columnWithNumberClassName = `${props.className}__row__column-with-number`;\n return (\n <>\n \n \n \n {resources.quickOrderProductNumberText}\n {resources.quickOrderProductText}\n {resources.quickOrderUnitPriceText}\n {resources.quickOrderUnitOfMeasureText}\n {resources.quickOrderQuantityText}\n {resources.quickOrderTotalText}\n {resources.quickOrderActionsText}\n \n );\n};\n\n/**\n * Get the quick order header cells for mobile.\n * @param props -- The quick order table header props.\n * @returns The quick order header component in desktop version.\n */\nconst QuickOrderMobileHeaderCellsComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const { resources } = props;\n return (\n <>\n \n {resources.quickOrderProductNumberText}\n \n \n );\n};\n\n/**\n * Quick order table header component.\n * @param props - Configuration of the component.\n * @returns React node with the header.\n */\nexport const QuickOrderTableHeaderComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const rowClassName = `${props.className}__row`;\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = ;\n } else {\n headerCells = ;\n }\n\n return (\n \n {headerCells}\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 { IComponentProps, ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { CartLine, format, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IncrementalQuantity } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Data required to render each quick order row.\n */\nexport interface IQuickOrderTableRowData {\n cartLine: CartLine;\n product: SimpleProduct;\n}\n\n/**\n * Resources for quick order table rows.\n */\nexport interface IQuickOrderTableRowResources {\n quickOrderQuantityMobileText: string;\n quickOrderProductDimensionsSeparator: string;\n quickOrderViewDetailsButtonText: string;\n quickOrderViewDetailsButtonAriaLabel: string;\n quickOrderRemoveItemButtonAriaLabel: string;\n quickOrderInputQuantityAriaLabel: string;\n quickOrderDecrementButtonAriaLabel: string;\n quickOrderIncrementButtonAriaLabel: string;\n}\n\n/**\n * Interface for quick order table props.\n */\nexport interface IQuickOrderTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n imageSettings?: IImageSettings;\n isMobile: boolean;\n resources: IQuickOrderTableRowResources;\n}\n\n/**\n * The default image settings for quick order table row.\n */\nconst defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=80&m=6', w: 0, h: 0 },\n lg: { q: 'w=147&h=147&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Renders product image for quick order row.\n * @param props - Quick order table row props.\n * @returns React element.\n */\nconst QuickOrderTableRowProductImageComponent: React.FC = (props: IQuickOrderTableRowProps) => {\n const fallbackImageUrl = getFallbackImageUrl(\n props.data.product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n\n const containerClassName = `${props.className}__product-image-container`;\n\n return (\n
    \n \n
    \n );\n};\n\n/**\n * Renders actions popup for the mobile view.\n * @param props - Configuration for popup.\n * @returns A react node with actions..\n */\nconst QuickOrderExtraActionsPopupComponent: React.FC = (props: IQuickOrderTableRowProps): JSX.Element | null => {\n const product: SimpleProduct = props.data.product;\n\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n if (StringExtensions.isNullOrWhitespace(productUrl)) {\n return null;\n }\n\n const className = `${props.className}__extra-actions-cell`;\n\n return (\n
    \n
    \n );\n};\n\n/**\n * Renders quick order table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order rows for desktop view.\n */\nexport const QuickOrderDesktopTableRowCellComponent: React.FC = (props: IQuickOrderTableRowProps) => {\n const product: SimpleProduct = props.data.product;\n const cartLine: CartLine = props.data.cartLine;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n return (\n <>\n \n \n \n {product.ItemId}\n \n
    \n \n {product.Name}\n \n \n {product.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\n .join(props.resources.quickOrderProductDimensionsSeparator)}\n \n
    \n \n {cartLine.Price}\n {cartLine.UnitOfMeasureSymbol}\n \n \n \n {cartLine.TotalAmount}\n \n \n ),\n submitButton: (\n \n {props.resources.submitReviewButtonText}\n \n ),\n rating: ratingsInput(props),\n ratingLabel: ratingsLabel(props),\n titleInput: titleInput(props),\n titleLabel: titleLabel(props),\n textInput: textInput(props),\n textLabel: textLabel(props),\n privacyPolicyUrl: privacyPolicyLink(props),\n form: { tag: 'form', className: 'ms-review-modal-form', autoComplete: 'off' },\n inputRow: { tag: 'div', className: 'ms-review-modal-row', autoComplete: 'off' },\n error: (\n \n {props.resources.errorMessageText}\n \n )\n };\n};\n\nconst modalHeaderNode = (props: IReviewModalProps) => {\n return (\n \n {props.userReview && props.userReview.reviewId ? props.resources.editReviewModalTitle : props.resources.writeReviewModalTitle}\n \n );\n};\n\nconst submitDisabled = (props: IReviewModalProps) => {\n return !props.rating || !stripWhiteSpacesFromString(props.reviewText) || !stripWhiteSpacesFromString(props.reviewTitle);\n};\n\nconst ratingsInput = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst ratingsLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst titleInput = (props: IReviewModalProps) => {\n const maxLength = props.context.app.config.reviewTitleMaxLength;\n\n return (\n \n );\n};\n\nconst titleLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst reviewTextWidth: number = 50;\n\nconst textInput = (props: IReviewModalProps) => {\n const maxLength = props.context.app.config.reviewTextMaxLength;\n return (\n \n );\n};\n\nconst textLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst privacyPolicyLink = (props: IReviewModalProps) => {\n const policyTextBlocks = props.resources.privacyPolicyTextFormat.split('{0}');\n const isSeparatorAtStart = props.resources.privacyPolicyTextFormat.startsWith('{0}');\n const isSeparatorAtEnd = props.resources.privacyPolicyTextFormat.endsWith('{0}');\n const privacyPolicyUrl = getUrlSync('rnrPrivacyPolicy', props.context.actionContext);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.PrivacyPolicy);\n const privacyPolicyAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n return (\n

    \n {isSeparatorAtStart ? '' : policyTextBlocks[0]}\n \n {props.resources.privacyPolicyTitle}\n \n {isSeparatorAtEnd ? '' : isSeparatorAtStart ? policyTextBlocks[0] : policyTextBlocks[1]}\n

    \n );\n};\n\nconst onSubmit = (props: IReviewModalProps): void => {\n if (props.product) {\n submitReview(\n props.product,\n props.reviewTitle,\n props.reviewText,\n props.rating,\n props.context,\n props.userReview,\n props.onReviewComplete\n );\n }\n};\n\n/**\n * This method strips content of extra white spaces.\n * @param text The text to be stripped of extra white spaces.\n */\nconst stripWhiteSpacesFromString = (text: string): string => {\n return text\n .replace(new RegExp('\\\\r?\\\\n|\\\\r+', 'g'), ' ')\n .replace(new RegExp('\\\\s+', 'g'), ' ')\n .trim();\n};\n\nexport const submitReview = (\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n) => {\n const { request } = context;\n const { user } = request;\n if (user && request) {\n const input = new SubmitUserReviewInput(\n product.RecordId.toString(),\n getRnrPartnerId(context.actionContext),\n request.apiSettings.channelId.toString(),\n request.locale,\n {\n productName: product && product.Name,\n rating,\n reviewText: stripWhiteSpacesFromString(text),\n title: stripWhiteSpacesFromString(title),\n userEmail: user.emailAddress,\n userName: user.name\n },\n request.user.token,\n getRnrAuthEndpointId(context.actionContext)\n );\n\n submitUserReview(input, context.actionContext)\n .then(reviewId => {\n const review = reviewId\n ? {\n rating,\n title: stripWhiteSpacesFromString(title),\n reviewText: stripWhiteSpacesFromString(text),\n submittedDateTime: new Date(),\n helpfulPositive: userReview ? userReview.helpfulPositive : 0,\n helpfulNegative: userReview ? userReview.helpfulNegative : 0,\n reviewId,\n userName: request.user.firstName || request.user.name\n }\n : userReview;\n\n const getReviewInput = new GetUserReviewInput(input.productId!, input.tenantId, input.authorization, input.serviceEndpoint);\n context.actionContext.update(getReviewInput, review);\n\n if (onReviewSubmission) {\n onReviewSubmission(!!reviewId);\n }\n })\n .catch(() => {\n const productId = product.RecordId;\n context.telemetry.error(`Failed to submit review for product with recordId: ${productId}`);\n context.telemetry.debug(`Failed to submit review for product with recordId: ${productId}`);\n if (onReviewSubmission) {\n onReviewSubmission(false);\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 { OrderBy } from '../actions/inputs/get-product-reviews-input';\n\nexport interface IRnrKeyValuePair {\n key: string;\n value: string;\n}\n\nexport interface IRnrOrderByKeyValuePair {\n key: OrderBy;\n value: string;\n}\n\nexport function setFocusOnElement(id: string): void {\n const element = document.getElementById(id);\n if (element) {\n element.focus();\n }\n}\n\nexport const TOGGLE_REVIEW_MODAL_BUTTON_ID: string = 'reviewproductid';\nexport const TOGGLE_EDIT_MODAL_BUTTON_ID: string = 'ms-write-review__edit';\nexport const TOGGLE_EDIT_MODAL_BUTTON_CARD_ID: string = 'ms-reviews-list__edit';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport { format, INodeProps, Progress } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IHistogramItemsProps {\n ratingsSummary: RatingsSummary;\n resources: IHistogramItemsResources;\n locale: string;\n onClick(stars: number): void;\n}\n\nexport interface IHistogramItemsResources {\n barItemAriaLabel: string;\n}\n\nexport interface IHistogramItemViewProps {\n starLabel: React.ReactElement;\n bar: React.ReactElement;\n percentage: React.ReactElement;\n buttonProps: INodeProps;\n}\n\n/**\n * CartLineItems component.\n */\n\nexport const HistogramItems = (props: IHistogramItemsProps): IHistogramItemViewProps[] => {\n const { ratingsSummary } = props;\n const totalRatingsCount: number = ratingsSummary.totalRatingsCount || 0;\n if (totalRatingsCount === 0) {\n return [];\n }\n return [\n renderItem(props, 5, ratingsSummary.star5Count, totalRatingsCount),\n renderItem(props, 4, ratingsSummary.star4Count, totalRatingsCount),\n renderItem(props, 3, ratingsSummary.star3Count, totalRatingsCount),\n renderItem(props, 2, ratingsSummary.star2Count, totalRatingsCount),\n renderItem(props, 1, ratingsSummary.star1Count, totalRatingsCount)\n ];\n};\n\nconst renderItem = (props: IHistogramItemsProps, stars: number, count?: number, totalCount?: number): IHistogramItemViewProps => {\n count = count || 0;\n totalCount = totalCount || 0;\n const percentage = totalCount === 0 ? 0 : count / totalCount;\n const formattedPercent = new Intl.NumberFormat(props.locale, { style: 'percent' }).format(percentage);\n const ariaLabel = format(props.resources.barItemAriaLabel, stars, formattedPercent);\n\n return {\n starLabel: (\n \n ),\n percentage: (\n \n ),\n bar: ,\n buttonProps: {\n tag: 'button',\n className: 'ms-ratings-histogram__item',\n onClick: () => {\n props.onClick(stars);\n }\n }\n };\n};\n\nexport const AverageRatingNumber: React.FC<{ summary: RatingsSummary }> = (props: { summary: RatingsSummary }) => {\n return (\n

    \n {props.summary.averageRating}\n {` `}/ 5\n

    \n );\n};\n\nexport const TotalReviews: React.FC<{ summary: RatingsSummary }> = (props: { summary: RatingsSummary }) => {\n return

    {props.summary.totalRatingsCount}

    ;\n};\n","/*!\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 { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { ReportReviewConcernInput } from './inputs/report-review-concern-input';\n\nasync function reportReviewConcern(input: ReportReviewConcernInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[SubmitHelpfulnessVote] Invalid input. ReviewId=${input.reviewId},tenantId=${input.tenantId},locale= ${input.locale},`\n );\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/concerns/review/${input.reviewId}` + `?tenantId=${input.tenantId}` + `&locale=${input.locale}`;\n\n const requestBody = {\n concernCategory: input.concernCategory\n };\n\n const requestHeader = {\n headers: {\n Authorization: `id_token ${input.authToken}`\n }\n };\n\n return sendRequest(requestUrl, 'post', requestBody, requestHeader)\n .then(response => {\n return response.status === 200 || response.status === 201;\n })\n .catch(error => {\n ctx.trace('[ReportReviewConcernInput] Failed to report a concern');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[ReportReviewConcernInput] Failed to report a concern');\n return false;\n });\n}\n\nfunction inputIsValid(input: ReportReviewConcernInput): boolean {\n return input && input.reviewId.length > 0 && input.tenantId.length > 0 && input.locale.length > 0 && input.authToken.length > 0;\n}\n\nexport const reportReviewConcernDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/report-review-concern',\n action: >reportReviewConcern\n});\n\nexport default reportReviewConcernDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { SubmitHelpfulnessVoteInput } from './inputs/submit-helpfulness-vote-input';\n\nasync function submitHelpfulnessVote(input: SubmitHelpfulnessVoteInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[SubmitHelpfulnessVote] Invalid input. ReviewId=${input.reviewId},tenantId=${input.tenantId}, locale= ${input.locale},`\n );\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/votes/review/${input.reviewId}` + `?tenantId=${input.tenantId}` + `&locale=${input.locale}`;\n\n const requestBody = {\n isHelpful: !!input.isHelpful\n };\n\n const requestHeader = {\n headers: {\n Authorization: `id_token ${input.authToken}`\n }\n };\n\n return sendRequest(requestUrl, 'post', requestBody, requestHeader)\n .then(response => {\n return response.status === 200 || response.status === 201;\n })\n .catch(error => {\n ctx.trace('[SubmitHelpfulnessVote] Failed to vote on a review');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[SubmitHelpfulnessVote] Failed to vote on a review');\n return false;\n });\n}\n\nfunction inputIsValid(input: SubmitHelpfulnessVoteInput): boolean {\n return input && input.reviewId.length > 0 && input.tenantId.length > 0 && input.locale.length > 0 && input.authToken.length > 0;\n}\n\nexport const submitHelpfulnessVoteDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/submit-helpfulness-vote',\n action: >submitHelpfulnessVote\n});\n\nexport default submitHelpfulnessVoteDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nexport enum ReviewConcernCategory {\n OffensiveContent = '1',\n ReviewResponse = '7',\n SpamAdvertising = '8',\n Profanity = '9'\n}\n\n/**\n * ReportReviewConcern Input Action.\n */\nexport class ReportReviewConcernInput implements IActionInput {\n public reviewId: string;\n\n public tenantId: string;\n\n public locale: string;\n\n public serviceEndpoint: string;\n\n public concernCategory: string;\n\n public authToken: string;\n\n constructor(reviewId: string, tenantId: string, locale: string, concernCategory: string, authToken: string, serviceEndpoint: string) {\n this.reviewId = reviewId;\n this.tenantId = tenantId;\n this.locale = locale;\n this.concernCategory = concernCategory;\n this.authToken = authToken;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'ReportReviewConcern';\n\n public getCacheObjectType = () => 'ReportReviewConcern';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n format,\n getPayloadObject,\n getTelemetryAttributes,\n ILabeledDropdownOption,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IReviewCountResources {\n pageReviewCountText: string;\n}\n\nexport interface IReviewCountProps {\n resources: IReviewCountResources;\n currentPage: number;\n reviewsCount: number;\n reviewsShownOnEachPage: number;\n}\n\nexport const ReviewCount: React.FC = (props: IReviewCountProps) => {\n const { currentPage, resources, reviewsCount, reviewsShownOnEachPage } = props;\n\n return (\n \n {format(\n resources.pageReviewCountText,\n _getReviewStartNumber(currentPage, reviewsShownOnEachPage),\n _getReviewEndNumber(currentPage, reviewsCount, reviewsShownOnEachPage),\n reviewsCount\n )}\n \n );\n};\n\nexport interface IPageControlResources {\n previousButtonText: string;\n nextButtonText: string;\n pageReviewAriaLabel: string;\n}\n\nexport interface IPageControlsProps {\n resources: IPageControlResources;\n currentPage: number;\n reviewsCount: number;\n reviewsShownOnEachPage: number;\n selectedSortByOption: ILabeledDropdownOption;\n selectedFilterByOption: ILabeledDropdownOption;\n telemetryContent?: ITelemetryContent;\n updateReviews(\n skipItems: number,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ): Promise;\n}\n\nexport const PageControls: React.FC = (props: IPageControlsProps) => {\n const { currentPage, resources, reviewsCount, reviewsShownOnEachPage } = props;\n const previousPageClick = React.useCallback(() => {\n return _getPreviousPageData(props);\n }, [props]);\n const nextPageClick = React.useCallback(() => {\n return _getNextPageData(props);\n }, [props]);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Next);\n const nextAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Previous;\n const previousAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n return (\n
    \n {_hasPreviousPage(currentPage) && (\n \n {resources.previousButtonText}\n \n )}\n {_hasNextPage(currentPage, reviewsCount, reviewsShownOnEachPage) && (\n \n {resources.nextButtonText}\n \n )}\n
    \n );\n};\n\nconst _hasPreviousPage = (currentPage: number): boolean => {\n return currentPage > 1;\n};\n\nconst _hasNextPage = (currentPage: number, reviewsCount: number, reviewsShownOnEachPage: number): boolean => {\n return _getPagesCount(reviewsCount, reviewsShownOnEachPage) > currentPage;\n};\n\nconst _getReviewsShown = (reviewsShownOnEachPage: number) => {\n return Math.min(25, reviewsShownOnEachPage);\n};\n\nconst _getPagesCount = (reviewsCount: number, reviewsShownOnEachPage: number): number => {\n return Math.ceil(reviewsCount / _getReviewsShown(reviewsShownOnEachPage));\n};\n\nconst _paginationAriaLabel = (\n pageReviewAriaLabel: string,\n currentPage: number,\n reviewsCount: number,\n reviewsShownOnEachPage: number,\n isNextPage: boolean,\n page?: number\n): string => {\n const pageModifier = isNextPage ? 1 : -1;\n return format(\n pageReviewAriaLabel,\n _getReviewStartNumber(currentPage, reviewsShownOnEachPage, currentPage + pageModifier),\n _getReviewEndNumber(currentPage, reviewsCount, reviewsShownOnEachPage, currentPage + pageModifier),\n reviewsCount\n );\n};\n\nconst _getReviewStartNumber = (currentPage: number, reviewsShownOnEachPage: number, page?: number): number => {\n return ((page || currentPage) - 1) * _getReviewsShown(reviewsShownOnEachPage) + 1;\n};\n\nconst _getReviewEndNumber = (currentPage: number, reviewsCount: number, reviewsShownOnEachPage: number, page?: number): number => {\n const pageUsed = page || currentPage;\n const pageReviewCount = pageUsed * _getReviewsShown(reviewsShownOnEachPage);\n return pageReviewCount < reviewsCount ? pageReviewCount : reviewsCount;\n};\n\nconst _getPreviousPageData = async (props: IPageControlsProps) => {\n await props.updateReviews(\n _getReviewStartNumber(props.currentPage, props.reviewsShownOnEachPage) - 1 - _getReviewsShown(props.reviewsShownOnEachPage),\n props.selectedSortByOption,\n props.selectedFilterByOption,\n props.currentPage - 1,\n false\n );\n};\n\nconst _getNextPageData = async (props: IPageControlsProps) => {\n await props.updateReviews(\n _getReviewEndNumber(props.currentPage, props.reviewsCount, props.reviewsShownOnEachPage),\n props.selectedSortByOption,\n props.selectedFilterByOption,\n props.currentPage + 1,\n false\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport {\n Alert,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ReviewConcernCategory } from '../../../actions/inputs/report-review-concern-input';\nimport { IRnrKeyValuePair } from '../../../common/rnrInterface';\n\nexport interface IReportReviewModalProps {\n resources: IReportReviewModalResources;\n context: ICoreContext>;\n isOpen: boolean;\n returnRef: React.RefObject | undefined;\n reportedKey: string;\n hasError: boolean;\n telemetryContent?: ITelemetryContent;\n onModalToggle(): void;\n onRadioChange(event: React.ChangeEvent): void;\n reportReview(): void;\n}\n\nexport interface IReportReviewModalResources {\n reportConcernText: string;\n feedbackThankYouText: string;\n reportModalMessage: string;\n reportSubmittedMessage: string;\n reportSpamText: string;\n offensiveContentText: string;\n profanityContentText: string;\n okReportReviewText: string;\n cancelReportReviewText: string;\n reportReviewButtonText: string;\n errorMessageText: string;\n}\n\nexport interface IReportReviewModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n header: React.ReactElement;\n headerSubmitted: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n succesfulButton: React.ReactElement;\n reportMessage: React.ReactElement;\n reportSubmittedMessage: React.ReactElement;\n radioButtons: React.ReactElement;\n error: React.ReactElement;\n}\n\nlet reportConcernDropdownOptions: IRnrKeyValuePair[];\n\n/**\n * CartLineItems component.\n */\n\nexport const ReportReviewModal = (props: IReportReviewModalProps): IReportReviewModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SubmitReview);\n const submitReviewAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SuccessButton;\n const successAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n reportConcernDropdownOptions = [\n { key: ReviewConcernCategory.SpamAdvertising, value: props.resources.reportSpamText },\n { key: ReviewConcernCategory.OffensiveContent, value: props.resources.offensiveContentText },\n { key: ReviewConcernCategory.Profanity, value: props.resources.profanityContentText }\n ];\n\n return {\n modal: {\n tag: Modal,\n className: 'ms-report-review-modal msc-modal-input-required',\n toggle: props.onModalToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, toggle: props.onModalToggle, className: 'ms-report-review-modal-header' },\n modalFooter: { tag: ModalFooter, className: 'ms-report-review-modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-report-review-modal-body' },\n header:

    {props.resources.reportConcernText}

    ,\n headerSubmitted:

    {props.resources.feedbackThankYouText}

    ,\n cancelButton: (\n \n ),\n submitButton: (\n \n ),\n succesfulButton: (\n \n ),\n reportMessage:

    {props.resources.reportModalMessage}

    ,\n reportSubmittedMessage:

    {props.resources.reportSubmittedMessage}

    ,\n radioButtons: radioPairs(props),\n error: (\n \n {props.resources.errorMessageText}\n \n )\n };\n};\n\nconst radioPairs = (props: IReportReviewModalProps) => {\n const pairs = [];\n for (const option of reportConcernDropdownOptions) {\n const inputId = `report-review-${option.key}`;\n const checked = option.key === props.reportedKey;\n pairs.push(\n
    \n \n \n
    \n );\n }\n\n return
    {pairs}
    ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, isOboRequest } from '@msdyn365-commerce/core';\nimport { Button, format, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { TOGGLE_EDIT_MODAL_BUTTON_CARD_ID } from '../../../common/rnrInterface';\n\nexport interface IReviewCardResources {\n wasReviewHelpfulText: string;\n yesButtonText: string;\n noButtonText: string;\n editReviewCardText: string;\n reportedText: string;\n reportConcernText: string;\n reviewRatingNarratorText: string;\n}\n\nexport interface IReviewCardProps {\n review: Review;\n resources: IReviewCardResources;\n context: ICoreContext>;\n isUserReview?: boolean;\n parentId: string;\n parentType: string;\n reportedReviews: string[];\n returnRef: React.RefObject | undefined;\n reportedReviewId: string;\n votedReviews: { reviewId: string; approved: boolean }[];\n toggleWriteReviewModal?(): void;\n toggleReportReviewModal(reviewId: string): void;\n updateReviewHelpfulness(reviewId: string, isHelpful: boolean): void;\n}\n\nexport interface IReviewCardViewProps {\n cardProps: INodeProps;\n name: React.ReactElement;\n rating: React.ReactElement;\n date: React.ReactElement;\n reviewTitle: React.ReactElement;\n reviewText: React.ReactElement;\n ratingHelpfulLabel?: React.ReactElement;\n like?: React.ReactElement;\n dislike?: React.ReactElement;\n edit: React.ReactNode;\n report: React.ReactNode;\n responseName: React.ReactNode;\n responseDate: React.ReactNode;\n responseText: React.ReactNode;\n cardBodyProps: INodeProps;\n responseProps: INodeProps;\n reviewProps: INodeProps;\n controlsProps: INodeProps;\n headerProps: INodeProps;\n}\n\n/**\n * Review card component.\n */\n\nexport const ReviewCard = (props: IReviewCardProps): IReviewCardViewProps => {\n const className = props.isUserReview ? 'ms-reviews-list__card ms-reviews-list__user-review' : 'ms-reviews-list__card';\n return {\n cardProps: { className, key: props.review.reviewId },\n name:

    {props.review.userName}

    ,\n rating: rating(props),\n date:

    {renderDate(props, props.review.submittedDateTime)}

    ,\n reviewTitle:

    {props.review.title}

    ,\n reviewText:

    {props.review.reviewText}

    ,\n ratingHelpfulLabel: props.isUserReview ? (\n undefined\n ) : (\n

    {props.resources.wasReviewHelpfulText}

    \n ),\n like: props.isUserReview ? undefined : voteHelpfulButton(props, true),\n dislike: props.isUserReview ? undefined : voteHelpfulButton(props, false),\n edit: editButton(props),\n report: reportToggle(props),\n responseName: props.review.userResponse ? (\n

    {props.review.userResponse.responderName}

    \n ) : (\n undefined\n ),\n responseText: props.review.userResponse ? (\n

    {props.review.userResponse.responseText}

    \n ) : (\n undefined\n ),\n responseDate: props.review.userResponse ? (\n

    {renderDate(props, props.review.userResponse.submittedDateTime)}

    \n ) : (\n undefined\n ),\n cardBodyProps: { className: 'ms-reviews-list__card-body' },\n responseProps: { className: 'ms-reviews-list__response' },\n reviewProps: { className: 'ms-reviews-list__review' },\n controlsProps: { className: 'ms-reviews-list__card-controls' },\n headerProps: { className: 'ms-reviews-list__card-header' }\n };\n};\n\nconst rating = (props: IReviewCardProps) => {\n return (\n \n );\n};\n\nconst isVotedFor = (props: IReviewCardProps, isHelpful: boolean): boolean => {\n for (let i = 0; i < props.votedReviews.length; i++) {\n if (props.votedReviews[i].reviewId === props.review.reviewId) {\n return props.votedReviews[i].approved === isHelpful;\n }\n }\n\n return false;\n};\n\nconst voteHelpfulButton = (props: IReviewCardProps, isHelpful: boolean) => {\n const isVoted = isVotedFor(props, isHelpful);\n const isDisabled = props.isUserReview || isVoted || isOboRequest(props.context.request) ? 'disabled' : '';\n let className = isHelpful ? 'ms-reviews-list__like' : 'ms-reviews-list__dislike';\n className = `${className} ${isDisabled}`;\n const label = isHelpful ? props.resources.yesButtonText : props.resources.noButtonText;\n let voteCount = (isHelpful ? props.review.helpfulPositive : props.review.helpfulNegative) || 0;\n voteCount = isVoted ? voteCount + 1 : voteCount;\n const title = `(${voteCount})`;\n const user = props.context.request.user;\n const onClickMethod = () => {\n props.updateReviewHelpfulness(props.review.reviewId!, isHelpful);\n };\n const onClick = isDisabled ? undefined : onClickMethod;\n\n if (user.isAuthenticated) {\n return (\n \n );\n }\n return (\n \n );\n};\n\nconst editButton = (props: IReviewCardProps) => {\n if (props.isUserReview && !isOboRequest(props.context.request)) {\n return (\n \n );\n }\n\n return undefined;\n};\n\nconst renderDate = (props: IReviewCardProps, date?: Date): string | Date => {\n if (!date) {\n return '';\n }\n\n try {\n return new Intl.DateTimeFormat(props.context.request.locale, { month: 'long', day: 'numeric', year: 'numeric' }).format(\n new Date(date)\n );\n } catch {\n return date;\n }\n};\n\n/**\n * On Click Handler.\n * @param props -Review card props.\n * @returns Report review modal.\n */\nconst onClick = (props: IReviewCardProps) => () => {\n props.toggleReportReviewModal(props.review.reviewId!);\n};\n\nconst reportToggle = (props: IReviewCardProps) => {\n const user = props.context.request.user;\n if (props.isUserReview || isOboRequest(props.context.request)) {\n return undefined;\n } else if (!user.isAuthenticated) {\n return (\n \n );\n }\n\n if (props.reportedReviews.includes(props.review.reviewId!)) {\n return

    {props.resources.reportedText}

    ;\n }\n\n const ref = props.review.reviewId === props.reportedReviewId ? props.returnRef : undefined;\n\n return (\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 { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * SubmitHelpfulnessVote Input Action.\n */\nexport class SubmitHelpfulnessVoteInput implements IActionInput {\n public reviewId: string;\n\n public tenantId: string;\n\n public locale: string;\n\n public serviceEndpoint: string;\n\n public isHelpful: boolean;\n\n public authToken: string;\n\n constructor(reviewId: string, tenantId: string, locale: string, isHelpful: boolean, authToken: string, serviceEndpoint: string) {\n this.reviewId = reviewId;\n this.tenantId = tenantId;\n this.locale = locale;\n this.isHelpful = isHelpful;\n this.authToken = authToken;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'SubmitHelpfulnessVote';\n\n public getCacheObjectType = () => 'SubmitHelpfulnessVote';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n getRnrAuthEndpointId,\n getRnrEndpointId,\n getRnrPartnerId,\n getSelectedProductIdFromActionInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n format,\n getTelemetryObject,\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n LabeledDropdown\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { reportReviewConcern, submitHelpfulnessVote } from '../..';\nimport { getReviewsForGivenProduct } from '../../actions/get-product-reviews';\nimport { GetProductReviewsInput } from '../../actions/inputs/get-product-reviews-input';\nimport { ReportReviewConcernInput, ReviewConcernCategory } from '../../actions/inputs/report-review-concern-input';\nimport { SubmitHelpfulnessVoteInput } from '../../actions/inputs/submit-helpfulness-vote-input';\nimport { IReviewModalViewProps, ReviewModal, submitReview } from '../../common/review-modal';\nimport { IRnrKeyValuePair, IRnrOrderByKeyValuePair } from '../../common/rnrInterface';\nimport { PageControls, ReviewCount } from './components/components';\nimport { IReportReviewModalViewProps, ReportReviewModal } from './components/report-review-modal';\nimport { IReviewCardViewProps, ReviewCard } from './components/review-card';\nimport { IReviewsListData } from './reviews-list.data';\nimport { IReviewsListProps } from './reviews-list.props.autogenerated';\n\nexport interface IReviewsListState {\n skipItems: number;\n listOfReviews: Review[];\n currentPage: number;\n reviewsCount: number;\n showSpinner: boolean;\n isFilterApplied: boolean;\n selectedSortByOption: ILabeledDropdownOption;\n selectedFilterByOption: ILabeledDropdownOption;\n userReviewRating: number;\n userReviewTitle: string;\n userReviewText: string;\n isReviewModalOpen: boolean;\n hasReviewError: boolean;\n isReportModalOpen: boolean;\n hasReportError: boolean;\n reportingReviewId: string;\n reportedKey: string;\n reported: boolean;\n reportedReviews: string[];\n votedReviews: { reviewId: string; approved: boolean }[];\n}\n\nexport interface IReviewsListCallbacks {\n toggleModal(): void;\n updateReviewTitle(title: string): void;\n updateReviewText(text: string): void;\n updateRating(rating: number): void;\n onReviewSubmitted(isSuccessful: boolean): void;\n submitReview(\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: Msdyn365.ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n ): void;\n updateReviewHelpfulnessVote(reviewId: string, isHelpful: boolean): void;\n toggleReportModal(reviewId: string): void;\n reportReview(reviewId: string, reportedKey: string): void;\n updateSortByDropdown(notification: ILabeledDropdownOnChangeNotification): void;\n updateFilterByDropdown(notification: ILabeledDropdownOnChangeNotification): void;\n updateReviews(\n skipItems: number,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ): void;\n}\n\nexport interface IReviewsListViewProps extends IReviewsListProps {\n state: IReviewsListState;\n className: string;\n callbacks: IReviewsListCallbacks;\n moduleProps: IModuleProps;\n reviewModal: IReviewModalViewProps;\n reportReviewModal: IReportReviewModalViewProps;\n sortByDropdown: React.ReactNode;\n filterByDropdown: React.ReactNode;\n averageRating: React.ReactNode;\n reviewCount: React.ReactElement;\n refineReviewsProps: INodeProps;\n reviewsListProps: INodeProps;\n reviewCards: IReviewCardViewProps[];\n userReview?: IReviewCardViewProps;\n pageControls: React.ReactNode;\n noReviewsMessage: React.ReactElement;\n noReviewsWithFilterMessage: React.ReactElement;\n heading: React.ReactNode;\n sortByOptions: IRnrOrderByKeyValuePair[];\n filterByOptions: IRnrOrderByKeyValuePair[];\n}\n\n/**\n *\n * ReviewsList component.\n * @extends {React.Component, IReviewsListState>}\n */\n@observer\nclass ReviewsList extends React.Component, IReviewsListState> {\n public sortByDropdownOptions: IRnrOrderByKeyValuePair[] = [\n { key: 'MostHelpful', value: this.props.resources.mostHelpfulSortOptionText },\n { key: 'MostRecent', value: this.props.resources.mostRecentSortOptionText },\n { key: 'HighestRating', value: this.props.resources.highestRatedSortOptionText },\n { key: 'LowestRating', value: this.props.resources.lowestRatedSortOptionText }\n ];\n\n public filterByDropdownOptions: IRnrKeyValuePair[] = [\n { key: '1;2;3;4;5', value: this.props.resources.allRatinsFilterByOptionText },\n { key: '5', value: this.props.resources.fiveStarFilterByOptionText },\n { key: '4', value: this.props.resources.fourStarFilterByOptionText },\n { key: '3', value: this.props.resources.threeStarFilterByOptionText },\n { key: '2', value: this.props.resources.twoStarFilterByOptionText },\n { key: '1', value: this.props.resources.oneStarFilterByOptionText }\n ];\n\n private readonly _userReviewModalToggle: React.RefObject;\n\n private readonly _userReportModalToggle: React.RefObject;\n\n private readonly telemetryContent?: ITelemetryContent;\n private readonly reviewsListCallbacks: IReviewsListCallbacks = {\n updateReviewTitle: (title: string): void => {\n this.setState({ userReviewTitle: title });\n },\n updateReviewText: (text: string): void => {\n this.setState({ userReviewText: text });\n },\n updateRating: (rating: number): void => {\n this.setState({ userReviewRating: rating });\n },\n onReviewSubmitted: (isSuccessful: boolean): void => {\n if (isSuccessful) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n },\n submitReview,\n // @ts-expect-error\n toggleModal: this._toggleReviewModal,\n // @ts-expect-error\n updateReviewHelpfulnessVote: this.updateReviewHelpfulnessVote,\n toggleReportModal: (reviewId: string): void => {\n this.state.isReportModalOpen ? this._onReportModalOpen(reviewId) : this._onReportModalClose();\n },\n // @ts-expect-error\n reportReview: this._reportReviewCallback,\n // @ts-expect-error\n updateFilterByDropdown: this.updateFilterByDropdown,\n // @ts-expect-error\n updateSortByDropdown: this.updateSortByDropdown,\n // @ts-expect-error\n updateReviews: this.updateReviews\n };\n constructor(props: IReviewsListProps) {\n super(props);\n const {\n userReview: { result: userReview }\n } = this.props.data;\n\n this.state = {\n skipItems: 0,\n reviewsCount: 0,\n listOfReviews: [],\n currentPage: 1,\n showSpinner: false,\n isFilterApplied: false,\n selectedSortByOption: this.sortByDropdownOptions[0],\n selectedFilterByOption: this.filterByDropdownOptions[0],\n userReviewRating: userReview ? userReview.rating : 0,\n userReviewText: userReview ? userReview.reviewText : '',\n userReviewTitle: userReview ? userReview.title : '',\n isReviewModalOpen: false,\n hasReviewError: false,\n isReportModalOpen: false,\n hasReportError: false,\n reported: false,\n reportedKey: ReviewConcernCategory.SpamAdvertising,\n reportingReviewId: '',\n reportedReviews: [],\n votedReviews: []\n };\n\n this._userReviewModalToggle = React.createRef();\n this._userReportModalToggle = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IReviewsListProps, nextState: IReviewsListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n public componentDidMount = async () => {\n this.props.data.reviewsList.then(reviewsList => {\n if (\n reviewsList &&\n reviewsList.pagingInfo &&\n reviewsList.pagingInfo.totalItems &&\n reviewsList.items &&\n reviewsList.items.length > 0\n ) {\n this.setState({\n listOfReviews: reviewsList.items,\n reviewsCount: reviewsList.pagingInfo.totalItems\n });\n }\n });\n await this.updateReviews(0, this.state.selectedSortByOption, this.state.selectedFilterByOption, 1, this.state.isFilterApplied);\n\n reaction(\n () => this.props.data.ratingsReviewsState.result && this.props.data.ratingsReviewsState.result.filterKey,\n async (filterKey: string | undefined) => {\n const filterKeyValue = Number(filterKey);\n const dropdownItemsCount = this.filterByDropdownOptions.length;\n if (filterKey && !isNaN(filterKeyValue) && filterKeyValue < dropdownItemsCount) {\n const filterByOption = this.filterByDropdownOptions.find((option: IRnrKeyValuePair) => option.key === filterKey);\n if (!filterByOption) {\n this.props.telemetry.warning(`[reviews-list] cannot find filter with key ${filterKey}`);\n } else {\n await this.updateReviews(0, this.state.selectedSortByOption, filterByOption, 1, true);\n const selectedIndex = dropdownItemsCount - filterKeyValue;\n this.setState({\n selectedFilterByOption: this.filterByDropdownOptions[selectedIndex]\n });\n }\n }\n }\n );\n };\n public render(): JSX.Element | null {\n const { className, heading, reviewsShownOnEachPage } = this.props.config;\n const { currentPage, reviewsCount, selectedFilterByOption, selectedSortByOption } = this.state;\n const {\n ratingsSummary: { result: ratingsSummary }\n } = this.props.data;\n const resources = this.props.resources;\n const completeClass = classname('ms-reviews-list', className);\n const viewProps: IReviewsListViewProps = {\n ...this.props,\n state: this.state,\n className: completeClass,\n moduleProps: {\n moduleProps: this.props,\n className: completeClass\n },\n callbacks: this.reviewsListCallbacks,\n reviewModal: this._userReviewModal(),\n reportReviewModal: this._reportReviewModal(),\n filterByDropdown: (\n \n ),\n sortByDropdown: (\n \n ),\n averageRating: ratingsSummary && (\n \n ),\n reviewCount: (\n \n ),\n refineReviewsProps: { className: 'ms-reviews-list__refiners' },\n reviewsListProps: { className: 'ms-reviews-list__reviews' },\n reviewCards: this._reviewCards(this.state.listOfReviews),\n userReview: this._userReview(),\n pageControls: (\n \n ),\n noReviewsMessage: (\n \n {resources.noReviewsMessage}\n \n ),\n noReviewsWithFilterMessage: (\n \n {resources.noReviewsWithSelectedFilterMessage}\n \n ),\n heading: heading && heading.text && (\n \n ),\n sortByOptions: this.sortByDropdownOptions,\n filterByOptions: this.filterByDropdownOptions\n } as IReviewsListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n private readonly _userReview = () => {\n const userReview = this.props.data.userReview.result;\n\n return userReview && this._reviewCard(userReview, true);\n };\n\n private readonly _reviewCards = (reviewList: Review[]) => {\n const userReview = this.props.data.userReview.result;\n const reviewElements: IReviewCardViewProps[] = [];\n\n for (const review of reviewList) {\n if (!review.isTakenDown && review.isPublished && userReview ? review.reviewId !== userReview.reviewId : true) {\n reviewElements.push(this._reviewCard(review, false));\n }\n }\n return reviewElements;\n };\n\n private readonly _reviewCard = (review: Review, userReview: boolean): IReviewCardViewProps => {\n return ReviewCard({\n review,\n resources: { ...this.props.resources },\n context: this.props.context,\n isUserReview: userReview,\n parentId: this.props.id,\n parentType: this.props.typeName,\n reportedReviews: this.state.reportedReviews,\n returnRef: this._userReportModalToggle,\n reportedReviewId: this.state.reportingReviewId,\n toggleWriteReviewModal: this._toggleReviewModal,\n toggleReportReviewModal: this._onReportModalOpen,\n updateReviewHelpfulness: this.updateReviewHelpfulnessVote,\n votedReviews: this.state.votedReviews\n });\n };\n\n private readonly _userReviewModal = (): IReviewModalViewProps => {\n return ReviewModal({\n userReview: this.props.data.userReview.result,\n product: this.props.data.product.result,\n resources: { ...this.props.resources },\n context: this.props.context,\n parentId: this.props.id,\n parentType: this.props.typeName,\n isOpen: this.state.isReviewModalOpen,\n rating: this.state.userReviewRating,\n reviewTitle: this.state.userReviewTitle,\n reviewText: this.state.userReviewText,\n onModalToggle: this._toggleReviewModal,\n onTitleChange: this._onTitleChange,\n onTextChange: this._onTextChange,\n onRatingChange: this._onRatingChange,\n onReviewComplete: this._onReviewComplete,\n renderContextId: 'writeReview-list',\n returnRef: this._userReviewModalToggle,\n hasError: this.state.hasReviewError,\n modalCSS: 'ms-reviews-list'\n });\n };\n\n private readonly _onTitleChange = (event: React.ChangeEvent): void => {\n this.reviewsListCallbacks.updateReviewTitle(event.target.value);\n };\n\n private readonly _onTextChange = (event: React.ChangeEvent): void => {\n this.reviewsListCallbacks.updateReviewText(event.target.value);\n };\n\n private readonly _onRatingChange = (value: number): void => {\n this.reviewsListCallbacks.updateRating(value);\n };\n\n private readonly _toggleReviewModal = (): void => {\n const userReview = this.props.data.userReview.result;\n if (this.state.isReviewModalOpen) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({\n isReviewModalOpen: true,\n userReviewText: userReview!.reviewText,\n userReviewTitle: userReview!.title,\n userReviewRating: userReview!.rating\n });\n }\n };\n\n private readonly _onReviewComplete = (isSuccess: boolean): void => {\n if (isSuccess) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n };\n\n private readonly _reportReviewModal = () => {\n return ReportReviewModal({\n resources: { ...this.props.resources },\n context: this.props.context,\n isOpen: this.state.isReportModalOpen,\n returnRef: this._userReportModalToggle,\n reportedKey: this.state.reportedKey,\n onModalToggle: this._onReportModalClose,\n onRadioChange: this._onRadioChange,\n reportReview: this._reportReview,\n hasError: this.state.hasReportError,\n telemetryContent: this.telemetryContent\n });\n };\n\n private readonly _onReportModalOpen = (reviewId: string) => {\n this.setState({\n isReportModalOpen: true,\n reportingReviewId: reviewId,\n reported: false,\n reportedKey: ReviewConcernCategory.SpamAdvertising\n });\n };\n\n private readonly _onReportModalClose = () => {\n this.setState({ isReportModalOpen: false, hasReportError: false });\n };\n\n private readonly _onRadioChange = (event: React.ChangeEvent) => {\n this.setState({ reportedKey: event.currentTarget.getAttribute('data-key') || '' });\n };\n\n private readonly _reportReviewCallback = (reviewId: string, reportedKey: string) => {\n reportReviewConcern(\n new ReportReviewConcernInput(\n reviewId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n reportedKey,\n this.getUserToken(this.props.context.request),\n getRnrAuthEndpointId(this.props.context.actionContext)\n ),\n this.props.context.actionContext\n )\n .then((_value: boolean) => {\n const reportedReview = this.state.reportedReviews;\n reportedReview.push(reviewId);\n this.setState({ reported: true, reportedReviews: reportedReview, hasReportError: false });\n })\n .catch((error: boolean) => {\n this.setState({ hasReportError: true });\n });\n };\n\n private readonly _reportReview = () => {\n this._reportReviewCallback(this.state.reportingReviewId, this.state.reportedKey);\n };\n\n private readonly updateSortByDropdown = async (notification: ILabeledDropdownOnChangeNotification) => {\n await this.updateReviews(0, notification.selectedOption, this.state.selectedFilterByOption, 1, this.state.isFilterApplied);\n };\n\n private readonly updateFilterByDropdown = async (notification: ILabeledDropdownOnChangeNotification) => {\n await this.updateReviews(0, this.state.selectedSortByOption, notification.selectedOption, 1, true);\n };\n\n private readonly updateReviews = async (\n skipItems: number | 0,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ) => {\n const productId = getSelectedProductIdFromActionInput(this.props.context.actionContext);\n if (productId === undefined) {\n return;\n }\n const result = await getReviewsForGivenProduct(\n // Task #211227597 Remove this hardcoded values.\n new GetProductReviewsInput(\n productId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n getRnrEndpointId(this.props.context.actionContext),\n selectedSortByOption.key,\n selectedFilterByOption.key,\n skipItems < 0 ? 0 : skipItems,\n this.props.config.reviewsShownOnEachPage\n ),\n this.props.context.actionContext\n );\n if (result && result.items && result.pagingInfo && result.pagingInfo.totalItems !== undefined) {\n this.setState({\n currentPage,\n listOfReviews: result.items,\n selectedSortByOption,\n selectedFilterByOption,\n reviewsCount: result.pagingInfo.totalItems,\n isFilterApplied\n });\n }\n };\n\n private readonly _updateVoteUi = (reviewId: string, isHelpful: boolean): void => {\n let alreadyExists = false;\n let list = this.state.votedReviews.map(review => {\n if (review.reviewId === reviewId) {\n review.approved = isHelpful;\n alreadyExists = true;\n }\n return review;\n });\n\n if (!alreadyExists) {\n list = list.concat({ reviewId, approved: isHelpful });\n }\n\n this.setState({ votedReviews: list });\n };\n\n private readonly updateReviewHelpfulnessVote = (reviewId: string, isHelpful: boolean): void => {\n submitHelpfulnessVote(\n new SubmitHelpfulnessVoteInput(\n reviewId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n isHelpful,\n this.getUserToken(this.props.context.request),\n getRnrAuthEndpointId(this.props.context.actionContext)\n ),\n this.props.context.actionContext\n )\n .then(() => {\n this._updateVoteUi(reviewId, isHelpful);\n })\n .catch((error: Error) => {\n throw new Error('[submitHelpfulnessVote]Error executing action');\n });\n };\n\n private readonly getUserToken = (context: Msdyn365.IRequestContext): string => {\n return context && context.user && context.user.token;\n };\n}\n\nexport default ReviewsList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewModalViewProps } from '../../common/review-modal';\nimport { IReportReviewModalViewProps } from './components/report-review-modal';\nimport { IReviewCardViewProps } from './components/review-card';\nimport { IReviewsListState, IReviewsListViewProps } from './reviews-list';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n \n \n \n {props.reviewTitle}\n {props.date}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport const SignInMessage: React.FC<{ text: string }> = (props: { text: string }) => {\n return

    {props.text}

    ;\n};\n\nexport const SignInButton: React.FC<{ text: string; href: string; ariaLabel: string; telemetryContent?: ITelemetryContent }> = (props: {\n text: string;\n href: string;\n ariaLabel: string;\n telemetryContent?: ITelemetryContent;\n}) => {\n const { text, href, ariaLabel, telemetryContent } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\ninterface IModalToggleProps {\n innerRef: React.RefObject | undefined;\n id: string;\n text: string;\n ariaLabel: string;\n telemetryContent?: ITelemetryContent;\n onClick(): void;\n}\n\nexport const ModalToggle: React.FC = (props: IModalToggleProps) => {\n const { text, onClick, ariaLabel, innerRef, telemetryContent, id } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.WriteReview);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\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 { Review } from '@msdyn365-commerce/commerce-entities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IReviewModalViewProps, ReviewModal, submitReview } from '../../common/review-modal';\nimport { TOGGLE_REVIEW_MODAL_BUTTON_ID } from '../../common/rnrInterface';\nimport { ModalToggle, SignInButton, SignInMessage } from './components/components';\nimport { IWriteReviewData } from './write-review.data';\nimport { IWriteReviewProps } from './write-review.props.autogenerated';\n\nexport interface IWriteReviewCallbacks {\n toggleModal(): void;\n updateReviewTitle(title: string): void;\n updateReviewText(text: string): void;\n updateRating(rating: number): void;\n onReviewSubmitted(isSuccessful: boolean): void;\n submitReview(\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: Msdyn365.ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n ): void;\n}\n\nexport interface IWriteReviewState {\n rating: number;\n reviewTitle: string;\n reviewText: string;\n isReviewModalOpen: boolean;\n hasReviewError: boolean;\n}\n\nexport interface IWriteReviewViewProps extends IWriteReviewProps {\n state: IWriteReviewState;\n className: string;\n callbacks: IWriteReviewCallbacks;\n signInMessage: React.ReactNode;\n signInButton: React.ReactNode;\n modalToggle: React.ReactNode;\n reviewModal: IReviewModalViewProps;\n moduleProps: IModuleProps;\n heading: React.ReactNode;\n}\n\n/**\n * This module is enables user's to leave ratings and reviews on a specific product\n * WriteReview module.\n * @extends {React.PureComponent>}\n */\nclass WriteReview extends React.PureComponent, IWriteReviewState> {\n private readonly _modalToggleRef: React.RefObject | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n private readonly writeReviewCallbacks: IWriteReviewCallbacks = {\n // @ts-expect-error\n toggleModal: this._toggleReviewModal,\n updateReviewTitle: (title: string): void => {\n this.setState({ reviewTitle: title });\n },\n updateReviewText: (text: string): void => {\n this.setState({ reviewText: text });\n },\n updateRating: (rating: number): void => {\n this.setState({ rating });\n },\n onReviewSubmitted: (isSuccessful: boolean): void => {\n if (isSuccessful) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n },\n submitReview\n };\n public constructor(props: IWriteReviewProps) {\n super(props);\n const {\n userReview: { result: userReview }\n } = this.props.data;\n this._toggleReviewModal = this._toggleReviewModal.bind(this);\n this._modalToggleRef = React.createRef();\n const rating = userReview ? userReview.rating : 0;\n const reviewTitle = userReview ? userReview.title : '';\n const reviewText = userReview ? userReview.reviewText : '';\n\n this.state = {\n isReviewModalOpen: false,\n rating,\n reviewTitle,\n reviewText,\n hasReviewError: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { resources } = this.props;\n const { className, heading } = this.props.config;\n const {\n product: { result: product },\n userReview: { result: userReview }\n } = this.props.data;\n\n const userInfo = this.props.context && this.props.context.request && this.props.context.request.user;\n const completeClass = classnames('ms-write-review', 'msc-modal-input-required', className);\n const viewProps = {\n ...this.props,\n state: this.state,\n className: completeClass,\n moduleProps: {\n moduleProps: this.props,\n className: completeClass,\n id: null\n },\n callbacks: this.writeReviewCallbacks,\n signInMessage: ,\n signInButton: (\n \n ),\n modalToggle: !Msdyn365.isOboRequest(this.props.context.request) && product && (\n \n ),\n reviewModal: this._buildUserReviewModal(),\n heading: heading && heading.text && (\n \n )\n } as IWriteReviewViewProps;\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 private readonly _onTitleChange = (event: React.ChangeEvent): void => {\n this.writeReviewCallbacks.updateReviewTitle(event.target.value);\n };\n\n private readonly _onTextChange = (event: React.ChangeEvent): void => {\n this.writeReviewCallbacks.updateReviewText(event.target.value);\n };\n\n private readonly _onRatingChange = (value: number): void => {\n this.writeReviewCallbacks.updateRating(value);\n };\n\n private readonly _toggleReviewModal = (): void => {\n const userReview = this.props.data.userReview.result;\n if (this.state.isReviewModalOpen) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else if (userReview) {\n this.setState({\n isReviewModalOpen: true,\n reviewText: userReview.reviewText,\n reviewTitle: userReview.title,\n rating: userReview.rating\n });\n } else {\n this.setState({\n isReviewModalOpen: true,\n reviewText: '',\n reviewTitle: '',\n rating: 0\n });\n }\n };\n\n /**\n * This method builds the user review modal.\n * @param config The module config.\n */\n private _buildUserReviewModal(): IReviewModalViewProps {\n return ReviewModal({\n userReview: this.props.data.userReview.result,\n product: this.props.data.product.result,\n resources: { ...this.props.resources },\n context: this.props.context,\n parentId: this.props.id,\n parentType: this.props.typeName,\n isOpen: this.state.isReviewModalOpen,\n rating: this.state.rating,\n reviewTitle: this.state.reviewTitle,\n reviewText: this.state.reviewText,\n onModalToggle: this._toggleReviewModal,\n onTitleChange: this._onTitleChange,\n onTextChange: this._onTextChange,\n onRatingChange: this._onRatingChange,\n onReviewComplete: this.writeReviewCallbacks.onReviewSubmitted,\n renderContextId: 'writeReview',\n returnRef: this._modalToggleRef,\n hasError: this.state.hasReviewError,\n telemetryContent: this.telemetryContent\n });\n }\n}\n\nexport default WriteReview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewModalViewProps } from '../../common/review-modal';\nimport { IWriteReviewViewProps } from './write-review';\n\nconst WriteReviewView: React.FC = props => {\n const { heading, signInMessage, signInButton, modalToggle, reviewModal, moduleProps } = props;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {modalToggle}\n {createReviewModal(reviewModal, moduleProps)}\n \n )}\n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nexport default WriteReviewView;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../video-player.props.autogenerated';\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Component props.\n */\nexport interface IVideoPlayerAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content view props.\n */\nexport interface IVideoPlayerAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Item view props.\n */\nexport interface IVideoPlayerAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Video Player Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Video Player Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalParagraphChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Video Player Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-video-player__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Video Player additonal content item props.\n * @param props - Video Player Additional content component props.\n * @returns IVideoPlayerAdditionalContentItemViewProps.\n */\nconst getAdditionalContentItems = (\n item: IAdditionalContentData,\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\n };\n};\n\n/**\n * VideoPlayerAdditionalContent component.\n * @param props - Video Player Additional content component props.\n * @returns Video Player Additional content view props.\n */\nexport const videoPlayerAdditionalContent = (\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\n return {\n additionalContentNode: { className: 'ms-video-player__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPlayerData, IPlayerOptions, IPlayerResources, IVideoMetadata, Player } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\nimport { ILinksData, IVideoPlayerConfig, IVideoPlayerProps } from './video-player.props.autogenerated';\n\nexport interface IVideoPlayerViewProps extends IVideoPlayerProps<{}> {\n player: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IVideoPlayerAdditionalContentViewProps;\n handleText?(): void;\n handleParagraph?(): void;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleLink?(): void;\n handleAdditionalLink?(): void;\n}\n\n/**\n *\n * VideoPlayer component.\n * @extends {React.PureComponent>}\n */\nclass VideoPlayer extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly isMobileDevice: boolean;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const options = {\n ...this.props.config,\n isMobileDevice: this.isMobileDevice\n };\n const video: MsDyn365.IVideoData = this.props.config.video;\n const playerResources: IPlayerResources = {\n playAriaLabel: this.props.resources.playLabel,\n pauseAriaLabel: this.props.resources.pauseLabel,\n playingAriaLabel: this.props.resources.playingLabel,\n pausedAriaLabel: this.props.resources.pausedLabel,\n muteAriaLabel: this.props.resources.muteLabel,\n unMuteAriaLabel: this.props.resources.unMuteLabel,\n fullScreenAriaLabel: this.props.resources.fullScreenLabel,\n exitFullScreenAriaLabel: this.props.resources.exitFullScreenLabel,\n seekBarLabel: this.props.resources.seekBarLabel,\n videoTimeDurationLabel: this.props.resources.videoTimeDurationLabel,\n closedCaptionLabel: this.props.resources.closedCaptionLabel\n };\n const videoMetaData: IVideoMetadata = {};\n\n if (video) {\n videoMetaData.videoId = video.id;\n videoMetaData.title = video.title;\n videoMetaData.duration = video.playTime;\n\n if (video.thumbnail) {\n videoMetaData.posterframeUrl = video.thumbnail.src;\n }\n\n if (video._links?.binaryReferences) {\n videoMetaData.videoBinaryReferences = video._links.binaryReferences;\n }\n }\n const videoPlayerData: IPlayerData = { options: options as IPlayerOptions, metaData: videoMetaData };\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n\n player: (\n \n \n \n ),\n title: this._getVideoDetailsHeading(),\n text: this._getVideoDetailsParagraph(),\n links: this._getVideoDetailsLinks(),\n detailsContainer: { className: 'ms-video-player__details' },\n detailsContainerCTA: { className: 'ms-video-player__details__cta' },\n additionalContent: videoPlayerAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleText: this.handleTextChange,\n handleParagraph: this.handleParagraphChange,\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleLink: this.handleLinkTextChange,\n handleAdditionalLink: this.handleAdditionalTextChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handle additional text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * Handle additional link text change.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * Handle additional paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * Get video details links.\n * @returns - React node.\n */\n private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n\n return links?.map((linkData: ILinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'ms-video-player__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n }\n\n private _getVideoDetailsHeading(): React.ReactNode | undefined {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n }\n\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n }\n}\n\nexport default VideoPlayer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, IVideoPlayerViewProps } from './index';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\n if (additionalContent.additionalContentItems) {\n return (\n \n <>\n {additionalContent.additionalContentItems.heading}\n \n {additionalContent.additionalContentItems.text}\n \n {additionalContent.additionalContentItems.links}\n \n \n \n \n );\n }\n\n return null;\n};\n\nconst VideoPlayerView: React.FC = props => {\n return (\n
    \n {props.player}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n
    \n );\n};\n\nexport default VideoPlayerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IWishlistItemDimension {\n key: string;\n className?: string;\n dimensionType: string;\n dimensionValue: string;\n}\n\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\n
    \n {dimensionType}:\n {dimensionValue}\n
    \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n CommerceListLine,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWishlistItemActionMessageState } from '../wishlist-items';\nimport { WishlistItemDimension } from './wishlist-items-dimensions';\n\nexport interface IWishlistItemProps extends CommerceListLine {\n product: SimpleProduct;\n wishlistState: IWishlistItemActionMessageState;\n price?: ProductPrice;\n context: ICoreContext>;\n productUrl: string;\n imageSettings?: IImageSettings;\n removeFromWishlistText: string;\n isInStock: boolean;\n addToCartText: string;\n outOfStockText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n enableImageProductLink?: boolean;\n inventoryInformationLabel?: string;\n inventoryLabelClassName?: string;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onAddToCart(product: SimpleProduct, itemKey: string): void;\n onRemoveItem(productId: number): void | undefined;\n onDismiss(): void;\n };\n resources: {\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n };\n}\n\nexport interface IWishlistItemViewProps {\n key: string;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n productDimensions?: React.ReactNode[];\n productPrice?: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productStatusMessage?: React.ReactNode;\n productName?: React.ReactNode;\n productAriaLabel?: string;\n entireProductLink?: string;\n inventoryInformation?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n}\n\nconst _addItemToCart = (props: IWishlistItemProps): void => {\n const { product, itemKey, handlers } = props;\n const { onAddToCart } = handlers;\n\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\n};\n\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\n const { onRemoveItem } = props.handlers;\n const { RecordId } = props.product;\n\n onRemoveItem && RecordId && onRemoveItem(RecordId);\n};\n\nconst WishListItemActions = {\n addToCart: _addItemToCart,\n removeItem: _removeItemFromWishlist\n};\n\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\n if (!msdyn365Commerce.isBrowser) {\n return '';\n }\n\n const fullUrl = new URL(props.productUrl, window.location.href);\n for (const dimension of props.product.Dimensions ?? []) {\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 // return updateProductUrl(productUrl, context, swatch);\n};\n\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\n const { product, price, context, resources } = props;\n\n const { Name, Dimensions } = product;\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\n\n let formattedPrice = 'Free';\n let dimensions = null;\n\n if (price) {\n formattedPrice =\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\n }\n\n if (Dimensions) {\n dimensions = Dimensions.map(productDimension => {\n switch (productDimension.DimensionTypeValue) {\n case 1:\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 3:\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 4:\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n default:\n return '';\n }\n });\n }\n\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\n};\n\n/**\n * Renders a link to a product based on the given props.\n * @param input - Wishlist item props with the info about the product.\n * @param productUrl - The url to the product.\n * @returns React component with a link to a product.\n */\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\n const { telemetryContent } = input;\n const { RecordId: recordId, Name: productName } = input.product;\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPageUrlWithSwatch = productUrl;\n return (\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\n \n {productName}\n \n )\n );\n};\n\n/**\n * Renders a product name box.\n * @param productName - The text to display.\n * @returns React component with a name of a product.\n */\nconst renderProductName = (productName: string) => {\n return
    {productName}
    ;\n};\n\n/**\n * Renders inventory information.\n * @param inventoryInformationLabel - The text to display.\n * @param inventoryLabelClassName - The component class name.\n * @returns React component.\n */\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\n const inventoryCssName = inventoryLabelClassName\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\n : 'ms-wishlist-items__inventory-label';\n return (\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\n {inventoryInformationLabel}\n )\n );\n};\n\n/**\n * Renders add to cart button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\n const { isInStock, addToCartText, outOfStockText } = input;\n\n // Check if the product is service or not by product type.\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\n\n const addItemAction = React.useCallback(() => {\n WishListItemActions.addToCart(input);\n }, [input]);\n\n return (\n \n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\n \n );\n};\n\n/**\n * Renders remove from wishlist button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\n const { removeFromWishlistText } = input;\n\n const removeItemAction = React.useCallback(() => {\n WishListItemActions.removeItem(input);\n }, [input]);\n\n return \n
    {choiceSummary}
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n \n \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultV2ModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown?: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, refineMenuContainer, refinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultV2ModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown?: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, refineMenuContainer, refinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerV2Resources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { sortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, titleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPriceComponentResources } from '@msdyn365-commerce/components';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n ICategoryHierarchyViewProps,\n IRefineMenuViewProps,\n ISearchResultContainerViewProps,\n ISearchResultModalViewProps,\n ISortByViewProps,\n ITitleViewProps\n} from '@msdyn365-commerce-modules/search-result-container';\nimport { Button, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { MouseEventHandler, useEffect, useState } from 'react';\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport {\n ISearchResultContainerProps,\n ISearchResultContainerResources\n} from '../definition-extensions/search-result-container.ext.props.autogenerated';\nimport { ProductComponent } from './components/product.component';\n\n/**\n * DescriptionInterval.\n */\nenum DescriptionInterval {\n productDescriptionInterval = 14,\n productDescriptionIntervalRemainder0 = 0,\n productDescriptionIntervalRemainder9 = 9\n}\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst renderProductCards = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\n return {props.products};\n};\n\n/**\n * Returns the product inventory label.\n * @param channelInventoryConfigurationId - The channel configuration Id.\n * @param product - The product.\n * @returns The inventory label.\n */\nfunction getInventoryLabel(channelInventoryConfigurationId: number | undefined, product: ProductSearchResult): string | undefined {\n if (!channelInventoryConfigurationId || !ArrayExtensions.hasElements(product.AttributeValues)) {\n return undefined;\n }\n const inventoryAttribute = product.AttributeValues.find(attribute => attribute.RecordId === channelInventoryConfigurationId);\n if (inventoryAttribute) {\n return inventoryAttribute.TextValue;\n }\n return undefined;\n}\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @param product - The product item data.\n * @param index - The index of each product item.\n * @param isEnabledProductDescription - The flag for showing Product desription tile.\n * @returns The JSX Element.\n */\nconst renderProductCardsDescription = (\n props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>,\n product: ProductSearchResult,\n index: number,\n isEnabledProductDescription?: boolean\n): JSX.Element | null => {\n const { config, context, resources, productsDimensionAvailabilities } = props;\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\n const breadCrumbType = props.context.app.config.breadcrumbType;\n const isAllowBack = props.config.allowBackNavigation && (breadCrumbType === 'back' || breadCrumbType === 'categoryAndBack');\n const classname = isEnabledProductDescription\n ? 'ms-product-search-result__item product__description'\n : 'ms-product-search-result__item';\n const quickviewslot = ArrayExtensions.hasElements(props.slots.quickview) ? props.slots.quickview[0] : undefined;\n const channelInventoryConfigurationId = props.data.products.result?.channelInventoryConfigurationId;\n const isPriceMinMaxFeatureState = props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n\n const productComparisonButton = ArrayExtensions.hasElements(props.slots.productComparisonButton)\n ? props.slots.productComparisonButton[0]\n : null;\n\n return (\n
  • \n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === product.MasterProductId\n )}\n />\n
  • \n );\n};\n\n/**\n * Render Clear button for mobile viewport.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst renderProducts = (props: ISearchResultContainerViewProps & ISearchResultContainerProps<{}>): JSX.Element | null => {\n const products = props.data.listPageState.result?.activeProducts;\n if (!products || !ArrayExtensions.hasElements(products)) {\n return null;\n }\n const productDescriptionInterval: number = DescriptionInterval.productDescriptionInterval;\n const productDescriptionIntervalRemainder0: number = DescriptionInterval.productDescriptionIntervalRemainder0;\n const productDescriptionIntervalRemainder9: number = DescriptionInterval.productDescriptionIntervalRemainder9;\n return (\n \n {props.errorMessage}\n
      \n {products.map((product: ProductSearchResult, index: number) =>\n index % productDescriptionInterval === productDescriptionIntervalRemainder0 ||\n index % productDescriptionInterval === productDescriptionIntervalRemainder9\n ? renderProductCardsDescription(props, product, index, true)\n : renderProductCardsDescription(props, product, index, false)\n )}\n
    \n
    \n );\n};\n\n/**\n * Render Title Count.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitleCount = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return {title.titleCount};\n }\n return null;\n};\n\n/**\n * Render Category Hierarchy.\n * @param props - The category hierarchy view props.\n * @returns The JSX Element.\n */\nconst renderCategoryHierarchy = (props: ICategoryHierarchyViewProps): JSX.Element | null => {\n const { CategoryHierarchyContainer, categoryHierarchyList, categoryHierarchySeparator } = props;\n if (categoryHierarchyList) {\n return (\n \n {categoryHierarchyList.map((category, index) => (\n \n {category}\n {categoryHierarchyList[index + 1] && categoryHierarchySeparator}\n \n ))}\n \n );\n }\n\n return null;\n};\n\n/**\n * Function to make filter sticky.\n * @param isMobile - The boolean prop.\n * @param isStickyHeader - The boolean prop.\n */\nexport const configureStickyFilter = (isMobile: boolean, isStickyHeader: boolean): void => {\n // Get heights of cookie and promotion banners\n const defaultValue = 0;\n const defaultOffset = 28;\n const headerContainer: HTMLElement | null = document.querySelector('.ms-header');\n\n const headerHeight: number | undefined = headerContainer?.offsetHeight;\n const containerHeight: number = headerHeight ?? defaultOffset;\n const bannerHeights = isStickyHeader ? defaultValue : containerHeight;\n const headerElement = document.querySelector('header .lock-opaque');\n const defaultContainer = document.querySelector('header .default-container');\n const refinerElement = isMobile ? document.querySelector('.msc-sort-filter-wrapper') : document.querySelector('.ms-refiner-heading');\n if (refinerElement && headerElement && defaultContainer) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\n refinerElement.classList.add('lock-Filter');\n refinerElement.setAttribute('style', `top: ${defaultContainer.clientHeight}px`);\n } else {\n refinerElement.classList.remove('lock-Filter');\n }\n } else if (refinerElement) {\n if (MsDyn365.isBrowser && document.documentElement.scrollTop > bannerHeights) {\n refinerElement.classList.add('lock-top');\n } else {\n refinerElement.classList.remove('lock-top');\n refinerElement.classList.remove('lock-Filter');\n refinerElement.removeAttribute('style');\n }\n }\n};\n\n/**\n * Function to setup filter sticky.\n * @param isMobile - The boolean prop.\n * @param isStickyHeader - The boolean prop.\n */\nfunction stickyFilterSetup(isMobile: boolean, isStickyHeader: boolean): void {\n window.addEventListener('scroll', () => {\n configureStickyFilter(isMobile, isStickyHeader);\n });\n configureStickyFilter(isMobile, isStickyHeader);\n}\n\n/**\n * Function to make filter sticky.\n * @param refinerRefernce - Ref prop for filter.\n * @param toggle - Toggle function for filter menu.\n */\nfunction useOutsideClick(refinerRefernce: React.RefObject, toggle: (event: Event) => void) {\n React.useEffect(() => {\n /**\n * Function to make filter sticky.\n * @param event - Event prop for filter.\n */\n function handleClickOutside(event: Event) {\n const element = document.querySelector('.ms-refine-filter__toggle_collapsed');\n if (refinerRefernce.current && !refinerRefernce.current.contains(event.target as Node) && !element) {\n toggle(event);\n }\n }\n if (MsDyn365.isBrowser) {\n document.addEventListener('click', handleClickOutside);\n }\n return () => {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('click', handleClickOutside);\n }\n };\n }, [refinerRefernce, toggle]);\n}\n\n/**\n * Render the category page items.\n * @param props - The view props.\n * @returns The search Result container module view.\n */\nconst SearchResultContainerView: React.FC> = props => {\n const {\n SearchResultContainer,\n pagination,\n ProductSectionContainer,\n choiceSummary,\n isMobile,\n modalToggle,\n searchResultModal,\n TitleViewProps,\n refineMenu,\n categoryHierarchy,\n sortByOptions,\n CategoryNavContainer,\n RefineAndProductSectionContainer,\n FeatureSearchContainer,\n similarLookProduct,\n errorMessage,\n resources\n } = props;\n useEffect(() => {\n if (props.config.useStickyFilter && MsDyn365.isBrowser) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app context is generic\n stickyFilterSetup(props.isMobile, props.context.app.config.enableStickyHeader as boolean);\n }\n }, [props]);\n const [isExpanded, setIsExpanded] = useState(false);\n const toggle = () => {\n setIsExpanded(!isExpanded);\n };\n const wrapperRefiner = React.useRef(null);\n useOutsideClick(wrapperRefiner, toggle);\n const isRecoSearchPage = props.context.actionContext.requestContext.query?.recommendation;\n if (isMobile) {\n return (\n \n {similarLookProduct ? null : (\n \n {renderCategoryHierarchy(categoryHierarchy)}\n {renderTitle(TitleViewProps)}\n {renderTitleCount(TitleViewProps)}\n \n )}\n {choiceSummary}\n {modalToggle}\n {createSearchResultModal(searchResultModal, refineMenu, sortByOptions, isRecoSearchPage)}\n {similarLookProduct}\n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n );\n }\n return (\n \n {similarLookProduct ? null : (\n \n {categoryHierarchy && renderCategoryHierarchy(categoryHierarchy)}\n {TitleViewProps && renderTitle(TitleViewProps)}\n {TitleViewProps && renderTitleCount(TitleViewProps)}\n \n )}\n {similarLookProduct}\n \n \n \n \n {resources.filterText}\n \n
    {choiceSummary}
    \n
    \n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
    \n
    \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n
    \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n
    \n
    \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerResources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n"],"names":["HeaderPreferredStore","React","constructor","modalCloseButtonRef","handleClick","this","_findPreferredStoreOnClick","props","render","data","storeSelectorStateManager","result","slots","resources","ArrayExtensions","hasElements","storeSelector","storeName","preferredStore","StoreName","headerPreferredStoreText","className","color","headerPreferredStoreAriaLabel","onClick","ref","modules","storeSelectorId","Object","keys","length","id","openDialog","showMapViewLink","parentElementRef","onLocationSelected","orgUnitLocation","Promise","resolve","catch","error","telemetry","message","debug","__decorate","observer","Logo","super","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","attributes","getTelemetryAttributes","_renderLogo","config","link","linkUrl","destinationUrl","assign","href","ariaLabel","target","openInNewTab","undefined","rel","_renderImage","Msdyn365","image","requestContext","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","editProps","key","moduleType","typeName","imagePropertyName","shouldSkipToMainImage","NavIcon","Button","toggleNavBar","title","mobileHamburgerAriaLabel","isExpanded","targetId","Header","handleLinkTextChange","linkIndex","event","_this$props$config$my","myAccountLinks","linkText","value","popOverRef","_toggleNavbar","bind","_togglePopover","_keydown","state","mobileMenuCollapsed","signinPopoverOpen","hasSigninerror","getTelemetryObject","context","request","telemetryPageName","friendlyName","user","isOBORequest","workerName","customerName","firstName","name","_this$props$data$acco","customer","accountInformation","FirstName","Name","componentDidMount","MsDyn365","isBrowser","window","addEventListener","reaction","cart","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","instance","addNotification","ErrorNotification","componentWillUnmount","removeEventListener","wishlists","cartLabel","cartQtyLabel","logoLink","logoImage","shouldShowWishlistCount","shouldHideShowSignInSignOutLink","disableTooltip","app","headerToggleClass","headerClassName","classnames","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","CommerceListLines","viewProps","_objectSpread","logo","wishListIconDesktop","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","wishListIconMobile","cartIcon","CartIconComponent","search","siteOptions","HeaderTag","moduleProps","headerAriaLabel","tag","HeaderContainer","HeaderTopBarContainer","Divider","MobileMenuContainer","Modal","isOpen","wrapClassName","toggle","MobileMenuHeader","ModalHeader","MobileMenuBodyContainer","ModalBody","MobileMenuLinksContainer","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","displayName","Popover","placement","signInLink","_getSigninButton","signOutLink","_getSignOutButton","switchCustomerLink","_getSwitchCustomerButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","menuBar","accountLinks","_getAccountLinks","renderView","slotName","SignIn","signInLinkText","signInUrl","signInLinkAriaText","onTelemetryClick","_user$signOutUrl","SignOut","signOutLinkText","signOutUrl","signOutLinkAriaText","SwitchCustomer","isOBOAccountSelected","cookies","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","actionContext","role","removeAccountSelectionCookie","additionalProperties","signUpCustomerNotFound","signUpMultipleCustomerFound","retailServerErrorCode","MyProfile","innerRef","format","shoppingAsText","map","cta","index","contentAction","etext","editableLink","onTextChange","setState","keyCode","KeyCodes","Escape","computed","_renderReactFragment","items","slot","Module","Node","_renderDesktopAccountBlock","AddToCartBehavior","propagateResult","onAdd","propagateError","onError","getAddToCartInputFromProps","async","_props$orderDetailsPr","_props$data","products","orderDetailsProducts","filter","product","ObjectExtensions","isNullOrUndefined","simpleProduct","input","count","salesLine","Quantity","catalogId","CatalogId","_props$catalogId","apiSettings","searchCriteriaInput","Context","ChannelId","channelId","getCatalogId","IncludeAttributes","Ids","productId","productSearchResultsWithImages","ProductsDataActions","callerContext","productSearchResult","newProductSearchResult","newImageUrl","generateProductImageUrl","PrimaryImageUrl","item","productData","find","RecordId","_productData$BasePric","ProductTypeValue","ProductType","Variant","AdjustedPrice","Price","BasePrice","quantity","_props$quantity","addItemsToCart","setDisabled","setItemsAddedToCartDialogOpen","setErrorMessage","addToCartInput","cartState","getCartState","addToCartResult","addProductsToCart","status","_validationResult$Val","_props$dialogStrings2","_props$dialogStrings3","_props$dialogStrings$2","_props$dialogStrings4","errorCount","CartsDataActions","bypassCache","Id","Version","ValidationFailuresByCartLines","errorText","dialogStrings","oneErrorText","multiErrorsText","errorMessage","validationErrorMessage","toString","addToCartBehavior","showModal","showNotification","_props$dialogStrings$3","itemsAddedResource","viewCartButtonText","goToCartText","closeButtonLabel","itemsAddedToCartHeaderText","headerMessageText","itemsAddedToCartFormatText","headerItemFormatText","linesAddedToCartFormatText","headerLinesFormatText","itemsAddedValidationErrorMessage","notification","MultiItemsSuccessfullyAddedToCartNotification","navigationUrl","isNavigationToCartPageDisabled","goToCart","location","handleAddItemsToCartSuccess","_props$dialogStrings5","_props$dialogStrings$4","_addToCartResult$erro3","_addToCartResult$erro4","_props$dialogStrings$5","_props$dialogStrings6","buyAgainNotificationTitle","buyAgainNotificationCloseAriaLabel","errorDetails","LocalizedMessage","failureReason","cartActionResult","AddToCartComponentActions","_event","openModal","cartError","addToCartError","hasOrderDetailsProducts","hasProducts","hasMultipleProducts","shouldSkipSiteSettings","_props$productAvailab","addProductToCart","availableQuantity","productAvailability","AvailableQuantity","orderQuantityLimitsFeatureIsEnabled","isOrderQuantityLimitsFeatureEnabled","enableStockCheck","isPriceKeyedIn","customPrice","customPriceAmount","isAddEmailDeliveryItemToCart","ItemSuccessfullyAddedToCartNotification","price","_addToCartResult$erro","_addToCartResult$erro2","_props$dialogStrings$","_props$dialogStrings","addOneItemToCart","AddToCartFunctionalComponent","_props$data2","_props$dialogStrings7","_props$dialogStrings8","_props$dialogStrings9","_props$data3","_props$data4","_props$dialogStrings$6","_props$dialogStrings10","_props$dialogStrings$7","_props$dialogStrings11","_props$dialogStrings$8","_props$dialogStrings12","_props$dialogStrings$9","_props$dialogStrings13","_props$dialogStrings$10","_props$dialogStrings14","_props$addToCartArial","_props$addToCartArial2","disabled","useState","modalOpen","setModalOpen","isItemsAddedToCartDialogOpen","setAddToCartInput","closeItemsAddedToCartDialog","priceComponent","PriceComponent","freePriceText","originalPriceText","currentPriceText","popupProps","productQuantity","renderModalPopup","Popup","label","getLinkText","payload","TelemetryEvent","AddToCart","buttonClassName","retrievedInput","retrieveAddToCartInput","isAuthenticated","addToCartArialLabel","isIntermediateState","shouldShowOutOfStock","ItemsAddedToCartDialogComponent","isModalOpen","onClose","defaultProps","outOfStockText","addToCartText","isCustomPriceSelected","maximumKeyInPrice","minimumKeyInPrice","defaultMaximumKeyInPrice","defaultMinimumKeyInPrice","Dimensions","missingDimensions","dimension","DimensionValue","Value","_productAvailability$","defaultAvailableQuantity","stockLeft","Math","max","includeCurrentQuantity","_props$hasAvailablePr","isLoading","isProductQuantityLoading","isUpdatingDimension","isLoadingDeliveryOptions","isUpdatingDeliveryOptions","isAddServiceItemToCart","hasAvailableProducts","includedQuantityNumber","_props$data5","AddToCartComponent","msdyn365Commerce","createComponentOverride","component","getDefaultColorSwatchSelected","_colorAttribute$Swatc","_colorAttribute$Swatc2","_colorAttribute$Swatc3","AttributeValues","colorAttribute","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","DimensionTypes","defaultSwatch","Swatches","IsDefault","updateProductUrl","productDetailsPageUrl","coreContext","queryString","sourceUrl","URL","baseUrl","pathname","renderProductUnitOfMeasure","unitOfMeasure","renderLabel","rating","ratingAriaLabelText","reviewCount","ratingCountAriaLabelText","reviewCountArialableText","getReviewAriaLabel","getRatingAriaLabel","ratingAriaLabel","roundedRating","toFixed","renderProductPlacementImage","imageUrl","fallbackImageUrl","altText","_context$app$config","contextConfig","placeholderImageName","fallbackImageSource","img","src","fallBackSrc","imageProps","cropFocalRegion","Image","bypassHideOnFailure","ProductComponent","_ref","_product$Name","_product$RecordId","_getProductImageUrlFr","_getProductPageUrlFro","savingsText","ratingCountAriaLabel","allowBack","quickViewButton","productComparisonButton","isEnabledProductDescription","isPriceMinMaxEnabled","priceResources","inventoryLabel","dimensionAvailabilities","swatchItemAriaLabel","productUrl","getProductPageUrlSync","Number","MIN_VALUE","productImageUrlFromSwatch","dimensionToPreSelectInProductCard","none","ProductImageUrls","generateImageUrl","getProductImageUrlFromDefaultColorSwatch","productPageUrlFromSwatch","SwatchValue","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","updatePageAndImageUrl","swatchItem","dimensionType","setValue","StringExtensions","isNullOrWhitespace","productPageUrlWithSwatch","includes","newUrl","searchParams","delete","swatchProductImageUrl","productImageUrls","attribute","isUnitOfMeasureEnabled","unitOfMeasureDisplayType","cultureFormatter","formatCurrency","AverageRating","TotalRatings","DefaultUnitOfMeasure","description","Description","attributeValues","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","dimensionTypeValue","dimensionsToDisplayOnProductCard","dimensionsInProductCard","shouldDisplayDimension","swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","itemId","colorHexCode","SwatchColorHexCode","SwatchImageUrl","isDefault","isDisabled","dimensionAvailability","_swatchItem$SwatchVal3","some","swatch","ProductComponentSwatchComponent","onSelectDimension","hideRating","moduleTypeName","moduleId","avgRating","totalRatings","numberRatings","RatingComponent","ratingCount","readOnly","renderRating","inventoryAvailabilityLabel","quickview","selectedDimensions","getValues","DimensionTypeValue","convertDimensionTypeToProductDimensionType","selectedProductId","renderQuickView","renderProductComparisonButton","DescriptionInterval","renderProductCards","ProductsContainer","getInventoryLabel","channelInventoryConfigurationId","inventoryAttribute","TextValue","renderProductCardsDescription","_props$data$products$","_props$data$featureSt","breadCrumbType","breadcrumbType","isAllowBack","allowBackNavigation","classname","quickviewslot","isPriceMinMaxFeatureState","featureState","priceRangeSeparator","priceFree","IsEnabled","renderProducts","_props$data$listPageS","listPageState","activeProducts","productDescriptionInterval","productDescriptionIntervalRemainder0","productDescriptionIntervalRemainder9","renderTitleCount","TitleContainer","titleCount","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","configureStickyFilter","isMobile","isStickyHeader","headerContainer","document","querySelector","headerHeight","offsetHeight","bannerHeights","headerElement","defaultContainer","refinerElement","documentElement","scrollTop","classList","add","setAttribute","clientHeight","remove","removeAttribute","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","renderRefinerMobile","renderRefiner","renderRefinerFooter","handler","doneAriaLabel","tabIndex","doneText","SortingContainer","renderTitle","titlePrefix","titleText","_props$context$action","SearchResultContainer","pagination","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","useEffect","useStickyFilter","stickyFilterSetup","enableStickyHeader","setIsExpanded","wrapperRefiner","refinerRefernce","handleClickOutside","element","current","contains","useOutsideClick","query","recommendation","enableProdutDescription","filterText","ratingId","_totalRatings$toStrin","ActiveProductComponent","imgData","basePrice","adjustedPrice","CustomerContextualPrice","renderPrice","assembleNode","_item$links","additionalContentNode","heading","renderHeading","additionalContentHeading","text","onEdit","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","links","ctaLink","renderLinks","isOpenInNewTab","handleAdditionalLinkTextChange","additionalContentContainer","additionalContentItemLinks","activeImageAdditionalContent","additionalContent","CanvasCalculations","CanvasStyles","ImageMapper","_isDesktopViewPort","_context","getActiveImageWidth","activeImageReferenceValue","activeImageRefs","clientWidth","getActiveImageHeight","convertHexToRgb","hexColor","RegExp","exec","rValue","parseInt","gValue","bValue","applyFadingTransition","coords","rgbColor","alpha","_this$_canvas$current","_this$_canvas$current2","halfDivisor","_canvas","getContext","buttonPadding","paddingAdjustment","buttonWidth","measureText","width","fillStyle","body","parentElement","getAttribute","fillText","drawButton","_this$_canvas$current3","_this$_canvas$current4","buttonTextClor","buttonHeight","buttonPositionX","buttonPositionY","arcsize","beginPath","moveTo","lineTo","arcTo","stroke","closePath","fill","expandAnimation","_this$props$imageMapp","buttonText","imageMapperResources","animationStartWidth","expandAnimationStartWidth","pointPositionX","pointPositionY","animationEndWidth","expandAnimationEndWidth","radius","expandRadius","rotation","startAngle","endAngle","textFadeInValue","textFadeInStartValue","buttonTextClorInRgb","animate","_this$_canvas$current5","_this$_canvas$current6","ellipse","requestAnimationFrame","textFadeInterval","collapseAnimation","_this$props$imageMapp2","collapseAnimationStartWidth","collapseAnimationEndWidth","clearMargin","clearHeight","clearWidth","collapseRadius","textFadeOutValue","textFadeOutStartValue","_this$_canvas$current7","_this$_canvas$current8","clearRect","drawCircle","_this$_canvas$current9","_this$_canvas$current10","viewPort","doubleMultiplier","strokeStyle","arc","PI","scaleCoords","imgWidth","defaultWidth","defaultScale","scale","coord","renderPrefilledAreas","areaMap","areas","area","computeCenter","scaledCoords","handleHoverOn","center","handleHoverOff","_this$_canvas$current11","canvasPositionX","defaultPositionX","canvasPositionY","defaultPositionY","height","click","preventDefault","hoverOn","onMouseEnter","hoverOff","onMouseLeave","renderAreas","_this$props$imageMapp3","_this$props$imageMapp4","_area$productSearchRe","xsRadius","extendedArea","areaKey","altTextWithProductName","replace","shape","join","onFocus","onBlur","alt","initCanvas","_this$getActiveImageW","_this$getActiveImageH","_this$_canvas$current12","_backgroundImage","_container","onLoad","defaultHeight","canvasWidth","canvasHeight","style","componentDidUpdate","shouldComponentUpdate","nextProps","shouldRender","_requestContext$gridS","imageData","useMap","ActiveImageConstants","ActiveImage","_defaultProductCardWidth","_defaultProdutCardHight","_activePoints","addActivePoints","_product$PrimaryImage","push","areaId","primaryImageUrl","updateClientWidth","viewport","variant","VariantType","Browser","renderImageMapper","_this$props$config$ac","productResults","activePoints","configProduct","ItemId","_configProduct$xPosit","_configProduct$yPosit","_configProduct$radius","xPosition","yPosition","activePoint","JSON","stringify","mappedArea","_activeImageClass","enterArea","leaveArea","activeImage","_activeImageRefs","altTextForSeeMoreButtonWithProductName","seeMoreButtonText","overlayClass","type","open","resetState","renderProductComponent","_this$state$area","_this$state$area$prim","_product$ItemId","baseImageUrl","productImageSettings","renderProductCard","_productCardDivRef","renderOverlay","getProductCardPositionX","_this$props$config$pr","_this$props$config$pr2","_defaultImageSettings","_area$center$","_area$center","defaultImageSettings","getDefaultImageSettings","productImageSettingsWidth","productCardWidth","leftAllignPosition","position","getProductCardPositionY","_this$props$config$pr3","_this$props$config$pr4","_defaultImageSettings2","productImageSettingsHeight","produtCardHight","_area$center$2","_area$center2","xl","keyDown","enterKey","nodeName","escKey","handleTextChange","handleParagraphChange","paragraph","renderActiveImageDetailsLinks","_telemetryContent","linkData","linkId","willOpenInNewTab","renderActiveImageDetailsHeading","_heading$tag","renderActiveImageDetailsParagraph","getActiveImageId","activeImageId","_activeImageIdPart$","activeImageSource","split","decrementOne","_handleOutsideClick","_this$_productCardDiv","setTimeout","timeoutInterval","images","getElementsByClassName","Array","from","activePointContainer","activePointDetailsContainer","imageMapper","overlay","productCard","productCardleftPosition","productCardtopPosition","detailsContainer","detailsContainerCta","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","handleAdditionalLinkText","_this$props$config$ad","activeImageView","top","left","validateCartAsync","propsContext","cartResult","cartVersion","shouldRetry","arguments","warning","AsyncResult","validationResult","ValidationResultsByLineId","refreshCart","refreshError","validateError","cartLineQuantityUpdatedAsync","isQuantityLimitsFeatureEnabled","cartLineToUpdate","isUsingDefaultOrderSettingsMax","_modifiedProduct$Beha2","modifiedProduct","ProductId","Behavior","MaximumQuantity","cartLineId","LineId","newQuantity","updateLineResult","updateCartLineQuantity","getProductByProductId","getProductByProductIdAndWarehouse","warehouseId","targetWarehouseValue","WarehouseId","_product$Behavior","InventoryLocationId","_renderDeliveryLocation","cartLine","deliverylocation","FulfillmentStoreId","_foundProductDelivery","orgUnitName","_getOrgUnitName","orgUnitLocations","foundProductDeliveryOption","productDeliveryOptions","deliveryOption","delivery","DeliveryOptions","option","Code","DeliveryMode","shippingText","_renderStoreLocation","fulfillmentStoreId","foundLocation","OrgUnitNumber","OrgUnitName","_assembleCartlines","cartlines","reactNodes","cartline","foundProductAvailability","_foundProductAvailabi","productAvailabilites","ProductAvailableQuantity","_assembleNode","foundProductDeliveryOptions","removeButtonText","removeItemClickHandler","availableQuantityInStock","isStockCheckEnabled","outOfStockThreshold","_getCartItemAvailableQuantity","maxQuantity","_getCartItemMaxQuantity","maxQuantityByConfig","maxByQuantityLimitsFeature","maxByQuantityLimitsFeatureResult","maxCartlineQuantity","isServiceItem","ItemTypeValue","ReleasedProductType","Service","onRemoveClickHandler","onRemoveClickFunction","RemoveCartItem","removeCartItemAttribute","getProductUrlSync","isChannelTypeB2B","_cartline$CatalogId","fullUrl","set","hasError","CartLineItemComponent","catalogs","currentQuantity","isOutOfStock","isQuantityEditable","displayMode","channelDeliveryOptionConfig","deliveryLocation","storeLocation","getMiniCartData","ctx","miniCartData","CartLines","hasInvoiceLine","getActiveCartProductsAction","ActiveCartProductsInput","then","exception","Error","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","getDeliveryOptionsForCartLineItems","ProductDeliveryOptionsForCartLineItems","deliveryOptions","CartIcon","retailMultiplePickUpOptionEnabled","getSortedCartLines","sortOrder","lines","sort","item1","item2","_item2$LineNumber","_item1$LineNumber","LineNumber","_item1$LineNumber2","_item2$LineNumber2","_getImageSettings","sm","_removeItemFromCartHandler","cartlineToRemove","cartLineIds","removeCartLines","isCartValid","CheckOut","Checkout","checkoutBySignInAttributes","GuestCheckout","checkoutByGuestAttributes","ViewShoppingBag","viewShoppingBagAttributes","_this$props$data$orgU","_this$props$data$cart","_setQuantityLimitsFeatureFlag","_validateCart","prevProps","nextState","_this$props$context$r","_cart$cart$CartLines","_this$state$miniCartD","_this$state$miniCartD2","_this$props$data$chan","_this$props$data$feat","enableHoverCart","isAnonymousCheckout","guestCheckoutUrl","getUrlSync","cartUrl","checkoutURL","_getCheckoutURL","isCartEmpty","shouldShowMiniCart","isProductAddedToCart","showMiniCart","emailDeliveryModeCode","channel","EmailDeliveryModeCode","cartLines","_getCartLines","validInventoryAcrossCartLines","validateCartLinesInventory","isValid","includeFlyout","totalItemsInCart","goToCartButtonText","goToCartButtonTitle","flyoutTitle","flyoutTooltip","UncontrolledTooltip","hideArrow","trigger","shouldShowCloseButton","cartPageUrl","hideAriaHidden","TotalAmount","priceString","totalPriceFormatString","feature","FlyoutContainer","CartlinesWrapper","miniCartWrapper","miniCartItemWrapper","checkoutAsSignInUserButton","checkoutButtonTitle","checkoutAsGuestButton","guestCheckoutButtonTitle","goToCartButton","checkoutBlockedDueToUnavailableFunds","totalPrice","_cart$result$cart$Ver","_cart$result","lastValidatedCartVersion","ValidationResultsPairs","isAbsoluteUrl","urlCheck","returnURL","origin","_this$props$data$cata","PickupDeliveryModeCode","FlyoutCartLineItems","cartLinesSortOrder","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","sizeString","productDimensionTypeSize","colorString","productDimensionTypeColor","configString","productDimensionTypeConfiguration","styleString","productDimensionTypeStyle","quantityDisplayString","quantityDisplayText","salesAgreementPricePrompt","inputQuantityAriaLabel","discountStringText","shippingChargesText","removeCartButtonText","outOfRangeOneText","outOfRangeFormatText","pickupDeliveryModeCode","_featureStatuses$find","_featureStatuses$find2","featureStatuses","_this$props$context","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","_featureStatuses$find3","customerInformation","customerInfo","IsB2b","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","renderModuleAttributes","_renderCartlines","isB2BSite","_this$props$data$empl","worker","employee","signInCustomerNotAuthorizedTitle","navbarKey","currentDistributorSlot","navIcon","currentDistributor","getBusinessPartnerSelectionUrl","route","url","forEach","param","signInCustomerNotAuthorized","retailServerErrorMessage","ProductComparisonPreview","_renderGreyPlaceHolders","counts","greyPlaceHoldersCount","displayGreyPlaceHolders","elements","_removeProductFromList","ProductComparisonState","removeItemById","previousState","_previousState$produc","productsData","_handleCollapseClick","_previousState$isExpa","_hasUserInteractedWithComparison","_clearAllProductsFromTheComparison","_this$props$data$acco2","clearAll","_instanceId","Random","Guid","generateGuid","_displayedInstanceId","_this$props$data$acco3","_loadProducts","listModifiedEvent","subscribe","instanceId","_this$props$data$acco4","unsubscribe","_this$state$productsD","_this$props$data$prod","collapseButton","_renderCollapseButton","isMainContentReady","hasUserInteractedWithComparison","_getProdutComparisonDataByCatalogId","productsLimit","_getProductsLimit","subheaderText","productComparisonPreviewHeaderTextWithLimit","handleCollapseClick","productsMainInfo","_getProductsMainInfo","previewGreyPlaceHolders","productComparisonLink","clearAllProductsFromTheComparison","removeProductFromList","goToComparisonButton","_renderGoToComparisonButton","clearAllButton","_renderClearAllButton","_productData$filter","validateCatalogId","_this$props$data$acco5","GetProductsInPreviewProductComparisonInput","getProductsInPreviewProductComparisonAction","productDataByCatalogId","_getGreyPlaceHoldersCount","limit","placeHolder","productImageContainerClassName","tableRowClassName","productImageClassName","productNameClassName","productNameLink","_product$Dimensions","_dimension$DimensionV","dimensionValue","dimensionName","convertProductDimensionTypeToDimensionTypes","removeFromComparisonButton","RemoveFromComparisonButtonComponent","onClickHandler","productImage","_renderProductImage","productLink","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","_getFallbackImageUrl","defaultImageSettingQ","getFallbackImageUrl","OmniChannelMedia","_this$state$isExpande","shouldBeExpanded","headerContainerClassName","mainContainerClassName","collapseClassName","collapseButtonClassName","footerClassName","productComparisonCompareProductsButtonText","productComparisonClearAllProductsButtonText","containerClassName","headerLabelClassName","tableClassName","ProductComparisonPreviewViewFunctionalComponent","_props$isExpanded","_props$productsMainIn","_props$productsMainIn2","productComparisonPreviewHeaderText","info","SpecificationDataTypeValues","ProductSpecification","CurrencyValue","CurrencyCode","_product$DateTimeOffs","isFunction","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","dangerouslySetInnerHTML","getRichTextHtml","_specification$DataTy","specification","DataTypeValue","currency","_renderCurrencyCell","dateTime","_renderDateTimeCell","decimal","_renderDecimalCell","integer","_renderIntegerCell","_renderTextCell","boolean","_renderTrueFalseCell","video","BooleanValue","productComparisonProductItemSpecificationTrue","productComparisonProductItemSpecificationFalse","RemoveFromComparisonButtonFunctionalComponent","useCallback","productComparisonRemoveProductFromListAriaLabel","SelectionType","ProductClickerDirections","ProductComparison","_clearAllProductsFromComparison","_configureBoxShadowOnScroll","_this$_tableReference","_tableReference","comparisonProductCardHeader","tableHeaderClassName","tableHeaderLockedClassName","_handleScroll","_this$_tableHeaderRef","_tableHeaderReference","scrollTo","currentTarget","scrollLeft","_checkClickersState","_handleScrollClick","direction","_this$_tableBodyRefer","_this$_tableCellRefer","_document$body$parent","tableBody","_tableBodyReference","newLeftPosition","cellWidth","_tableCellReference","_getCellWidth","scrollPosition","ceil","minLeftPosition","maxScroll","scrollWidth","min","currentClickerPosition","change","hoverStateLastUpdate","Date","now","hoveringCellItemId","_handlePreviousClick","_document$body$parent2","right","_handleNextClick","_document$body$parent3","_this$_tableBodyRefer2","floor","_this$_tableBodyRefer3","_document$body$parent4","_shouldShowNextClicker","forceUpdate","_shouldShowPreviousClicker","newClickerPosition","_handleHoverIn","_hoveringCellItemId","_handleHoverOut","_debounce","_goBack","backToShoppingUrl","referrer","history","back","specifications","_product$specificatio","specificationsList","allSpecifications","flatten","specificationNames","validValues","AttributeValueId","uniqueSpecificationNames","unique","dimensions","productInfo","allDimensions","dimensionIds","actionBarClassName","clearAllProductsFromComparison","isEmptyContent","_renderHeading","loading","_renderLoading","actionBarContainerProps","_getActionBarContainerProps","previousClicker","_renderPreviousClicker","nextClicker","_renderNextClicker","backToShopping","_renderBackToShoppingButton","emptyComparison","emptyComparisonContentSlots","_getProductComparisonDataByCatalogId","isConsentGiven","productCountText","productComparisonCountText","productsMainInfoData","allUniqueDimensionIds","getProductsDimensionsIds","updatedDimensionProps","getUpdatedDimensionsProps","tableReference","tableHeaderReference","tableBodyReference","tableCellReference","shouldShowPreviousClicker","shouldShowNextClicker","handlePreviousClick","handleNextClick","handleScroll","handleHoverIn","handleHoverOut","uniqueDimensionIds","_getProductsDimensions","dimensionsProps","uniqueSpecifications","_getProductsSpecifications","specificationsProps","_getSpecificationProps","GetProductsInProductComparisonInput","getProductsInProductComparisonAction","_renderQuickView","_product$productInfo$","quickViewSlot","quickViews","defaultImageSettingsQ","_getTableHeaderProps","isHoverModeEnabled","tableHeaderCellClassName","_getTableCellProps","cellClassName","tableCellClassName","_renderProductRating","_ratingValue$reviewsC","averageRating","ratingValue","productComparisonProductItemRatingAriaLabel","reviewsCount","shouldShowFullRatingDescription","backToShoppingLabel","_getDimensionName","dimensionId","ProductDimensionType","Color","productComparisonProductItemColorDimension","Size","productComparisonProductItemSizeDimension","Style","productComparisonProductItemStyleDimension","dimensionClassName","dimensionsRowClassName","dimensionDescription","dimensionSelectionType","dimensionsAsSwatchConfiguration","dimensionsAsSwatchType","productDimensionValues","productMainInfo","_this$props$data$prod2","renderSwatch","textValue","productsDimension","_productsDimension$di","_productsDimension$di2","dimensionItems","dimensionItem","_dimensionItem$map","currentDimensionId","_productMainInfo$prod","_swatchItem$Dimension2","_swatchItem$Dimension3","_swatchItem$Dimension4","_swatchItem$Dimension5","_swatchItem$Dimension6","_swatchItem$Dimension7","_swatchItem$Dimension8","_swatchItem$Dimension9","isDefaultDimension","selectedDimension","_swatchItem$Dimension","DimensionId","ColorHexCode","ImageUrl","SwatchComponent","list","isSelectionEnabled","_dimensionItem$Dimens","_dimensionItem$Dimens2","productDimensionSeperatorValue","productDimensionSeparator","dimensionProps","node","specificationClassName","specificationsRowClassName","specificationValues","_productMainInfo$prod2","productSpecification","productSpecifications","Heading","productComparisonTitle","productComparisonLoadingText","productComparisonClearAllButtonAriaLabel","productComparisonClearAllButtonText","tableClickerClassName","onKeyUp","productComparisonPreviousProduct","productComparisonNextProduct","_renderRemoveFromComparisonButton","productRowClassName","currentCatalogId","productUrlLink","_product$productInfo$2","_dimension$DimensionV2","isFromCurrentCatalog","productPriceClassName","cellNewWidth","minWidth","maxWidth","cellContainerProps","productPrice","productComparisonProductItemFreePrice","productComparisonProductItemOriginalPrice","productComparisonProductItemCurrentPrice","quickView","goToProductDetailsButton","productComparisonGoToProductDetailsButtonText","tableCellProps","tableHeaderProps","productRating","productDescription","_renderProductDescription","tableBodyClassName","tableRowContentClassName","tableRowContentInformationClassName","renderDynamicHeaderCells","values","headerName","tabindex","renderDynamicCells","ProductComparisonViewFunctionalComponent","_props$productsMainIn5","_props$dimensionsProp","_props$specifications","_props$productsMainIn8","_props$productsMainIn9","actionsClassName","onScroll","_props$productsMainIn3","_props$productsMainIn4","productComparisonProductItemRating","_props$productsMainIn6","_props$productsMainIn7","productComparisonProductItemDescription","specificationProps","isNullOrEmpty","productComparisonProductItemSku","PromoBannerCloseButton","closeButtonAriaLabel","PromoBannerClose","PromoBannerLinks","editableLinks","_mapEditableLinks","linkdata","PromoBannerText","PromoBanner","animating","isVisible","activeIndex","bannerMessages","_next","nextIndex","_isLastItem","_goToIndex","_previous","_isFirstItem","_onDismiss","dismissEnabled","interval","hideFlipper","autoplay","bannerText","bannerAriaLabel","onDismiss","handleLinks","handleText","promoBannerProps","promoBannerTextProps","promoBannerLinksProps","contentProps","promoBannerText","carouselProps","Carousel","next","previous","onIndicatorsClickHandler","hideIndicator","closeButton","slides","AddToCartProductListComponent","_quickOrderTemplate$q","_quickOrderTemplate$q2","quickOrderTemplate","quickOrderTemplateLines","fullProduct","ProductDetails","productListLine","buttonLabel","quickOrderGridBuySelectedButtonText","buttonAriaLabel","quickOrderGridBuySelectedButtonAriaLabel","_props$resources$quic","_props$resources$quic2","_props$resources$quic3","_props$resources$quic4","_props$resources$quic5","_props$resources$quic6","_props$resources$quic7","_props$resources$free","_props$resources$orig","_props$resources$curr","_props$resources$adde","_props$resources$quic8","_props$resources$quic9","quickOrderGridGoToCartText","continueShoppingText","quickOrderGridDialogCloseText","quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel","headerItemOneText","quickOrderGridSingleItemText","quickOrderGridMultiLineItemFormatText","quickOrderGridMultiLinesFormatText","quickOrderGridHeaderMessageText","addedQuantityText","quickOrderGridBuySelectedAddingToCartErrorNotificationTitle","getDialogStrings","orderDetailProducts","quickOrder","orderDetails","quickLine","_quickLine$fullProduc","OrderDetailsProduct","getOrderDetails","getQuickOrderGridAddToCartDialog","moduleClassName","_result$cartActionRes","handlers","onErrorMessage","removeActionHandler","removeProductList","productList","removeQuickOrderList","QuickOrderGridDrawer","_props$collapseProps$","_props$collapseProps","_isManuallyToggled","onToggle","collapseProps","_drawerGlyphClass","toggleGlyphClassName","closeGlyph","isAnimateGlyph","_drawerOpenGlyph","openGlyph","_drawerCloseGlyph","children","drawerClass","drawerButtonClassName","toggleButtonProps","block","_generateDrawerButtonInnerMarkup","Collapse","isCollapseState","drawerButtonTextClass","toggleButtonClassName","headingDrawerClass","descriptionDrawerClass","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","QuickOrderGridFormComponent","productTextInput","quantityTextInput","quickOrderGridState","maxChars","minQuantity","isAddtoListDisabled","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","handleQuantityChange","handleInputChange","handleAddProductListClick","onInputChange","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","onChange","quantityNode","pattern","maxLength","addToListBtn","userMessage","stateMessage","Alert","statusCssString","messageGlyph","messageText","QuickOrderGridProduct","productLine","isSelected","observable","QuickOrderGridDesktopHeaderCellsComponent","columnWithNumberClassName","quickOrderGridProductNumberText","quickOrderGridProductText","quickOrderGridUnitPriceText","quickOrderGridUnitOfMeasureText","quickOrderGridQuantityText","quickOrderGridActionsText","QuickOrderGridMobileHeaderCellsComponent","QuickOrderGridTableHeaderComponent","rowClassName","headerCells","QuickOrderGridTableRowProductImageComponent","_props$data$product$p","_props$context$reques","_props$imageSettings","setShowPreviousActions","onChangeHandler","onChangeQuantity","itemKey","newValue","onRemoveHandler","onRemoveItem","quickOrderGridProductKey","QuickOrderGridExtraActionsPopupComponent","_props$data$product$p2","quickOrderGridViewDetailsButtonAriaLabel","quickOrderGridViewDetailsButtonText","shouldShowActions","setShowActions","onClickViewDetails","shouldShowActionsNewValue","actionsContainerClassName","quickOrderGridRemoveItemButtonAriaLabel","QuickOrderGridDesktopTableRowCellComponent","_props$data$product$p3","_productListLine$Line","quickOrderGridProductDimensionsSeparator","renderProductPrice","UnitOfMeasure","renderUnitOfMeasure","IncrementalQuantity","currentCount","quickOrderGridInputQuantityAriaLabel","decrementButtonAriaLabel","quickOrderGridDecrementButtonAriaLabel","incrementButtonAriaLabel","quickOrderGridIncrementButtonAriaLabel","isGiftCard","IsGiftCard","callbacks","QuickOrderGridMobileTableRowCellComponent","_props$data$product$p4","_productListLine$Line2","QuickOrderGridTableRowComponent","Viewport","QuickOrderGridTableComponent","setIsMobile","isMobileView","quickOrderGridProducts","updateViewport","quickOrderProduct","_product$ProductDetai","_quickOrderProduct$pr","_quickOrderProduct$pr2","behavior","MinimumQuantity","ProductPrice","callBacks","QuickOrderGrid","_this$props$data$feat2","_this$props$data$feat3","_this$props$data$feat4","_this$props$data$feat5","_cartConfiguration$re","_cartConfiguration$re2","_waitTime","_dimensionUpdateQueueMaxLength","_errorCssClass","_errorCssGlyphClass","_dimensionUpdateQueue","FinitePromiseQueue","_dimensions","_initializedDimensions","Set","_cssClassNameConfigure","_className","_isOrderQuantityLimitsFeatureEnabled","_isChannelLimitsFeatureEnabled","_applyDefaultOrderSettingsForCartLine","_quickOrderGridCallbacks","initializeDimension","initializedDimension","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","_this$state$productDi","size","productDimensions","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","_getDropdownName","changeUpdatingDimension","_quickOrderGridRowCallbacks","line","_removeItemRowFromTable","productListLineId","_changeRowQuantity","_removeProductList","token","ProductListsDataActions","reload","_updateStatusState","quickOrderGridDeleteProductListFailedText","_handleInputChange","productResponse","_cancellabelDebounce","cancel","isQuickOrderGridFormExpanded","getScanResult","GetScanResultInput","results","Product","ProductDimensionFull","_updateQuantitiesInState","_handleQuantityChange","_this$state$productRe","currentValue","inputElement","_quantityInput","HTMLInputElement","minimumQuantity","needToUpdateUIValue","_behavior$MinimumQuan","newCurrentValue","isNaN","_this$state$productRe2","Configuration","productDimensionTypeAmount","hasProductDimensions","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","dimensionKey","configureErrors","errorState","mappedDimensions","_this$_updateDimensio","_updateDimensionValue","ExtensionProperties","selectedProduct","newProduct","getSelectedVariant","SelectedVariantInput","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","variantProduct","productDimensionFull","newValueId","DimensionValues","_getDimensionErrorString","amountErrorMessage","quickOrderGridproductDimensionTypeAmountErrorMessage","quickOrderGridproductDimensionTypeColorErrorMessage","quickOrderGridproductDimensionTypeConfigurationErrorMessage","quickOrderGridproductDimensionTypeSizeErrorMessage","quickOrderGridproductDimensionTypeStyleErrorMessage","_productResponse$Dime","_getConfigureErrors","quickOrderGridWrongQuantityErrorMsg","quickOrderTemplateLinesData","orderLineIndex","findIndex","newProductListLine","previousQuantity","_objectWithoutProperties","_excluded","newLine","updatedLines","updatedProductList","ProductListLines","update","ActiveProductListInput","ProductListId","_isChannelMultipleCatalogsFeatureEnabled","isMultipleCatalogFeatureEnabledInHq","_addItemToProductListLine","quickOrderGridAddedToGridSuccessMessage","quickOrderGridAddedToGridFailureMessage","quickOrderGridAddedToGridDuplicateError","productListId","_productResponse$Defa","_createProductList","AddItemToProductListInput","addItemToProductListAction","CreateProductListInput","ProductListType","QuickOrder","createProductList","_productTextInput","_quickOrderGridFormClass","_quickOrderGridFormProductContent","_quickOrderGridFormMsgContent","ValidateDefaultOrderSettingsPerLine","_this$state$min","_this$state$max","quickOrderGridModuleHeading","quickOrderGridModuleDescription","quickOrderGridAddtogrid","quickOrderGridProductQuantityInputLabel","quickOrderGridProductInputLabel","quickOrderGridProductDimensionTypeColor","quickOrderGridProductDimensionTypeConfiguration","quickOrderGridSelectDimensionFormatString","quickOrderGridProductDimensionTypeSize","quickOrderGridProductDimensionTypeStyle","quickOrderGridProductDimensionTypeAmount","quickOrderGridModulePageHeading","productConfigureResources","selectDimensionFormatString","header","quickOrderGridProps","isB2bCustomer","actions","drawer","bulkPurchase","_renderBulkPurchase","quickOrderGridForm","quickOrderGridFormProductContent","quickOrderGridFormMsgContent","form","configure","getProductConfigure","container","_renderListContainer","orderActions","_renderQuickOrderGridActions","quickOrderGridDeleteButtonText","userMessageNode","topStateMessage","addProductListToBag","QuickOrderGridActionsView","isBulkPurchaseEnabled","bulkPurchaseSlots","containerClass","_renderQuickOrderTable","_initQuickOrderGridProducts","quickOrderGridProduct","_getMinQuantityForCartLineItem","_getMaxQuantityForCartLineItem","_getQuantity","_product$Behavior2","applyDefaultOrderSettingsForCartLine","_product$Behavior3","defaultQuantity","DefaultQuantity","renderConfigureDropdown","dropdown","containerProps","labelContainerProps","errors","select","renderConfigure","dropdowns","renderForm","quickOrderForm","quickOrderProductContent","quickOrderMessageContent","QuickOrderDrawer","_toggle","isManuallyToggled","drawerGlyphClass","animateGlyph","drawerOpenGlyph","drawerCloseGlyph","collapseState","e","QuickOrderFormComponent","quickOrderState","disableAddtoCart","addQuantityPlaceholderText","handleAddToCartClick","placeholder","addToCartBtn","QuickOrderProduct","QuickOrderDesktopHeaderCellsComponent","quickOrderProductNumberText","quickOrderProductText","quickOrderUnitPriceText","quickOrderUnitOfMeasureText","quickOrderQuantityText","quickOrderTotalText","quickOrderActionsText","QuickOrderMobileHeaderCellsComponent","QuickOrderTableHeaderComponent","QuickOrderTableRowProductImageComponent","_props$data$product$P","QuickOrderExtraActionsPopupComponent","QuickOrderDesktopTableRowCellComponent","_cartLine$LineId","quickOrderProductDimensionsSeparator","UnitOfMeasureSymbol","quickOrderInputQuantityAriaLabel","quickOrderDecrementButtonAriaLabel","quickOrderIncrementButtonAriaLabel","quickOrderRemoveItemButtonAriaLabel","QuickOrderMobileTableRowCellComponent","quickOrderQuantityMobileText","QuickOrderTableRowComponent","QuickOrderTableComponent","quickOrderProducts","waitTime","dimensionUpdateQueue","initializedDimensions","cssClassNameConfigure","quickOrderCallbacks","productText","inputQuantityText","quantityInput","cancellableDebounce","isQuickOrderFormExpanded","_addItemToCart","quickOrderAddedToCartSuccessMessage","quickOrderAddedToCartFailureMessage","_this$props$context$a","getDeliveryOptionsAsync","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","defaultDeliveryOption","productAvailableQuantity","_updateAvailability","shouldValidateQuantityLimits","_shouldValidateQuantityLimits","addProductToCartInput","deliveryMode","inputProductText","substatus","maxQtyLimitReachedMessage","_getMaxQtyMessage","_result$errorDetails","isOrderQuantityLimitsFeatureEnabledInSiteSettings","_getConcatenatedMaxQtyMessage","quickOrderMaxQuantityLimitText","quickOrderAlreadyItemQuantityText","reject","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","ProductAvailabilitiesForSelectedVariantInput","productAvailable","quickOrderproductDimensionTypeColorErrorMessage","quickOrderproductDimensionTypeConfigurationErrorMessage","quickOrderproductDimensionTypeSizeErrorMessage","quickOrderproductDimensionTypeAmountErrorMessage","quickOrderproductDimensionTypeStyleErrorMessage","_updateProductAvailability","quickOrderWrongQuantityErrorMsg","quickOrderOutofStockErrorMsg","device","Type","quickOrderFormClass","quickOrderFormProductContent","quickOrderFormMsgContent","quickOrderModuleHeading","quickOrderModuleDescription","quickOrderAddtobag","quickOrderProductQuantityInputLabel","quickOrderProductInputLabel","quickOrderProductDimensionTypeColor","quickOrderProductDimensionTypeConfiguration","quickOrderSelectDimensionFormatString","quickOrderProductDimensionTypeSize","quickOrderProductDimensionTypeStyle","quickOrderProductDimensionTypeAmount","quickAddQuantityPlaceholderText","quickOrderProps","isB2B","quickOrderList","_initQuickOrderProducts","productInventoryInfo","maxQuantityForLineItem","addedQuantity","_item$ItemId","minInventory","quickOrderMsgContent","createObservableDataAction","action","tenantId","inputIsValid","trace","requestUrl","serviceEndpoint","locale","sendRequest","userReviewData","headers","Authorization","authorization","response","SubmitUserReviewInput","getCacheKey","getCacheObjectType","dataCacheType","onClickSubmit","onSubmit","ReviewModal","SubmitReview","submitButtonAttribute","Cancel","cancelButtonAttribute","modalCSS","classNames","onModalToggle","applicationNode","returnFocusRef","returnRef","modalHeaderNode","ModalFooter","cancelButton","discardReviewButtonText","submitButton","submitDisabled","submitReviewButtonText","ratingsInput","ratingLabel","ratingsLabel","titleInput","titleLabel","textInput","textLabel","privacyPolicyUrl","privacyPolicyLink","autoComplete","inputRow","errorMessageText","userReview","reviewId","editReviewModalTitle","writeReviewModalTitle","stripWhiteSpacesFromString","reviewText","reviewTitle","selectRatingAriaLabel","initialRating","parentId","parentType","onRatingChange","selectRatingLabel","reviewTitleMaxLength","renderContextId","onTitleChange","reviewTitleAriaLabel","htmlFor","reviewTitleLabel","reviewTextMaxLength","rows","reviewAriaLabel","reviewTextLabel","policyTextBlocks","privacyPolicyTextFormat","isSeparatorAtStart","startsWith","isSeparatorAtEnd","endsWith","PrivacyPolicy","privacyPolicyAttribute","privacyPolicyTitle","submitReview","onReviewComplete","trim","onReviewSubmission","getRnrPartnerId","productName","userEmail","emailAddress","userName","getRnrAuthEndpointId","submitUserReview","review","submittedDateTime","helpfulPositive","helpfulNegative","getReviewInput","GetUserReviewInput","TOGGLE_REVIEW_MODAL_BUTTON_ID","TOGGLE_EDIT_MODAL_BUTTON_CARD_ID","HistogramItems","ratingsSummary","totalRatingsCount","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","stars","totalCount","percentage","formattedPercent","Intl","NumberFormat","barItemAriaLabel","starLabel","bar","Progress","buttonProps","AverageRatingNumber","summary","TotalReviews","RatingsHistogram","handleHeadingChange","selectFilterBy","completeClass","histogramItems","averageRatingAriaLabel","hideCount","averageNumber","totalReviews","ratingsSummaryProps","histogramProps","filterKey","createRatingsReviewsStateInput","histogramItem","authToken","requestBody","concernCategory","requestHeader","isHelpful","ReviewConcernCategory","ReportReviewConcernInput","ReviewCount","currentPage","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","reportConcernDropdownOptions","radioPairs","pairs","inputId","checked","reportedKey","onRadioChange","reviewRatingNarratorText","voteHelpfulButton","isVoted","isVotedFor","i","votedReviews","approved","isUserReview","isOboRequest","yesButtonText","noButtonText","voteCount","onClickMethod","updateReviewHelpfulness","editButton","toggleWriteReviewModal","editReviewCardText","renderDate","date","DateTimeFormat","month","day","year","_unused","toggleReportReviewModal","reportToggle","reportConcernText","reportedReviews","reportedText","reportedReviewId","SubmitHelpfulnessVoteInput","ReviewsList","sortByDropdownOptions","mostHelpfulSortOptionText","mostRecentSortOptionText","highestRatedSortOptionText","lowestRatedSortOptionText","filterByDropdownOptions","allRatinsFilterByOptionText","fiveStarFilterByOptionText","fourStarFilterByOptionText","threeStarFilterByOptionText","twoStarFilterByOptionText","oneStarFilterByOptionText","reviewsListCallbacks","updateReviewTitle","userReviewTitle","updateReviewText","userReviewText","updateRating","userReviewRating","onReviewSubmitted","isSuccessful","isReviewModalOpen","hasReviewError","toggleModal","_toggleReviewModal","updateReviewHelpfulnessVote","toggleReportModal","isReportModalOpen","_onReportModalOpen","_onReportModalClose","reportReview","_reportReviewCallback","updateFilterByDropdown","updateSortByDropdown","reviewsList","pagingInfo","totalItems","listOfReviews","isFilterApplied","ratingsReviewsState","filterKeyValue","dropdownItemsCount","filterByOption","selectedIndex","_userReview","_reviewCard","_reviewCards","reviewList","reviewElements","isTakenDown","isPublished","cardProps","ratingHelpfulLabel","wasReviewHelpfulText","like","dislike","edit","report","responseName","userResponse","responderName","responseText","responseDate","cardBodyProps","responseProps","reviewProps","controlsProps","headerProps","ReviewCard","_userReportModalToggle","reportingReviewId","_userReviewModal","_onTitleChange","_onTextChange","_onRatingChange","_onReviewComplete","_userReviewModalToggle","isSuccess","_reportReviewModal","submitReviewAttribute","SuccessButton","successAttribute","cancelAttribute","SpamAdvertising","reportSpamText","OffensiveContent","offensiveContentText","Profanity","profanityContentText","headerSubmitted","feedbackThankYouText","cancelReportReviewText","reportReviewButtonText","succesfulButton","okReportReviewText","reportMessage","reportModalMessage","reportSubmittedMessage","radioButtons","ReportReviewModal","_onRadioChange","_reportReview","hasReportError","reported","reportReviewConcern","getUserToken","_value","reportedReview","selectedOption","skipItems","getSelectedProductIdFromActionInput","getReviewsForGivenProduct","GetProductReviewsInput","getRnrEndpointId","_updateVoteUi","alreadyExists","concat","submitHelpfulnessVote","showSpinner","reviewModal","reportReviewModal","filterByDropdown","LabeledDropdown","labelText","filterByDropdownText","dropdownId","dropdownOptions","onSelectOption","controlledByParent","sortByDropdown","sortByDropdownText","refineReviewsProps","reviewsListProps","reviewCards","pageControls","noReviewsMessage","noReviewsWithFilterMessage","noReviewsWithSelectedFilterMessage","filterByOptions","buildReviewCard","createReviewModal","createReportModal","SignInMessage","SignInButton","ModalToggle","WriteReview","writeReviewCallbacks","_modalToggleRef","userInfo","signInMessage","signInButton","signInLabel","signInAriaLabel","editReviewButtonText","reviewButtonLabel","_buildUserReviewModal","getAdditionalContentItems","additionalContentItemContainer","videoPlayerAdditionalContent","additionalContentItems","VideoPlayer","isMobileDevice","options","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","seekBarLabel","videoTimeDurationLabel","closedCaptionLabel","videoMetaData","_video$_links","videoId","duration","playTime","thumbnail","posterframeUrl","_links","binaryReferences","videoBinaryReferences","videoPlayerData","metaData","player","Player","playerData","isEditor","params","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainerCTA","handleParagraph","handleLink","handleAdditionalLink","WishlistItemDimension","WishListItemActions","onAddToCart","_renderAriaLabel","formattedPrice","productDimension","renderProductLink","recordId","productAttributes","renderInventoryInformationLabel","inventoryInformationLabel","inventoryLabelClassName","inventoryCssName","WishlistItemAddToCartButtonComponent","isInStock","addItemAction","WishlistItemRemoveFromWishlistButtonComponent","removeFromWishlistText","removeItemAction","WishlistItem","wishlistState","enableImageProductLink","_context$request$app","fallbackImage","_props$product$Dimens","_getFullProductLink","_renderProductDimensions","_renderPrice","productUnitOfMeasure","entireProductLink","productAriaLabel","addToCartButton","inventoryInformation","removeButton","productStatusMessage","WishlistItemsStatusMessage","errorType","WishlistItems","addedToCartSuccessMessage","addedToCartFailureMessage","invoiceInCartErrorMessage","productInventoryInformation","_getProductInventory","_product$Behavior$Min","validateQuantity","isQuantityValidationRequired","respectQuantityLimits","_await$cart$cart","curQuantity","_getInventoryValueMessage","_result$errorDetails2","isChannelQuantityLimitsFeatureEnabledInHq","_this$props$data$cart2","validateLimitsPerLine","_this$props$data$cart3","_removeItemFromWishlist","noLongerLineExist","userToken","wishlistLineId","_getWishlistLineIdFromProductId","removeLinesAsync","commerceList","castCommerceList","_getProductsNoLongerExists","_removeNoLongerExistsLines","createGetByCustomerInput","getItemsInWishlists","ActiveWishlistInput","castSimpleProducts","isError","_inventoryLabel","StockLevelLabel","_inventoryClassName","StockLevelCode","toLowerCase","_isProductInStock","productResult","IsProductAvailable","foundWishlistItem","commerceListLine","_castCommerceList$Com","noLongerExist","emptyWishlistText","wishlistErrorGettingWishlist","noLongerExitsWishlistItemText","errorProps","statusMessage","productsList","emptyViewProps","Products","ProductDimensions","_renderProductList","statusNotExistsMessage","_getProductNotExists","emptytext","noLongerExisttext","addToCartButtonText","currentProductProps","maxQuantityLimitText","productInventoryCollection","_renderItem","_colorAttribute$swatc","_colorAttribute$swatc2","_colorAttribute$swatc3","_attributeValue$keyNa","keyName","ProductComponentV2","_product$name","_product$recordId","swatchValue","defaultUnitOfMeasure","_item$keyName$toLocal","_item$keyName","_item$swatches$map","_item$swatches","_item$recordId","_swatchItem$swatchVal","_swatchItem$swatchVal2","swatchColorHexCode","swatchImageUrl","_swatchItem$swatchVal3","ProductComponentV2SwatchComponent","getDefaultSwatchSelected","_productData$Attribut","_attributeSwatches$fi","attributeSwatches","IsMasterProduct","Master","Standalone","MaxVariantPrice","MinVariantPrice","swatchProductImageUrls","getProductImageUrlFromDefaultSwatch","encodeURIComponent","mockRequest","buildMockRequest","mockRequestURL","staticCdnUrl","md","signUpUrl","mockAnonRequest","mockSigninErrorRequest","mockActionContext","buildHydratedMockActionContext","HeaderView","_configureStickyHeader","headerAlertsContainer","stickyHeader","headerLogo","navStickyPos","_renderAccountBlock","accountClassName","_renderAccountDropdownLinks","menuNode","useStickyHeader","_renderMobileLogo","_config$mobileLogoIma","mobileLogoImage","productsContainer","productsDimensionAvailabilities","masterProductId","_data$products$result","_data$products$result2","titleContainer","refineMenuContainer","refinerSectionContainer","sortingContainer","searchResultContainer","productSectionContainer","titleViewProps","categoryNavContainer","refineAndProductSectionContainer","featureSearchContainer"],"sourceRoot":""}